持续集成:软件质量改进和风险降低之道

问题

  在软件行业发展的初期,软件项目中最棘手、最紧张的时刻就是集成。单独能工作的一些模块被组装在一起,系统整体却常常失败,而且很难找到失败的原因。

  解决办法

  解决办法的关键在于更为频繁地进行集成。

  它给项目带来了完全不同的感觉。项目的可见性变得好了很多,因为问题能够更快地检测出来。引入缺陷和发现缺陷之间的时间间隔变短,就更容易发现缺陷,您可以很容易地看见改变了什么,以方便找到问题的根源。当它与良好的测试程序配合时,可以大大减少缺陷的数量。结果是,开发者在调试上花的时间减少了,在增加功能上花的时间更多了,他们相信自己是在一个坚实的基础上开发软件。

  持续集成意味着:

  ● 所有开发者都先在他们自己的工作站上执行私有构建,然后再将他们的代码提交到版本控制库中,从而确保他们的变更不会导致集成构建失败。

  ● 开发者每天至少向版本控制库提交一次代码。

  ● 集成构建每天在一台独立的计算机上进行多次。

  ● 每次构建都必须 100%通过测试。

  ● 生成可以进行功能测试的产品(如 WA R、配件、可执行程序等)。

  ● 修复失败的构建是优先级最高的事情。

  ● 某些开发者复查构建生成的报告,如编码标准报告和依赖分析报告,寻找可以改进的地方。

  最佳实践

  为缺陷编写测试

  当缺陷被发现时,找出并隔离有问题的代码,为了修复缺陷,我们基本上需要破坏测试,先编写一个会失败的测试用例,然后不断执行这个测试(在修复缺陷的过程中),直到测试不再失败为止。

  让组件测试可重复

  数据库对于测试来说是相当沉重的依赖关系,所以您有两种选择:要么尽量地进行模拟,在尽可能长的时间内完全避免使用数据库,要么使用数据库并承受其开销。实现这种测试最容易的方法是使用某种xDbUnit 这样的数据库填充框架(如

  针对.NET 的NDbUnit、针对 Java 的DbUnit 、针对 Python 的PDbSeed )。这些框架将数据库的数据集抽象到 XML 文件中,然后为开发者提供细粒度的控制,即在测试过程中如何将这些数据填充到数据库中。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-17 04:47:51

持续集成:软件质量改进和风险降低之道的相关文章

让你的CI跑起来-《持续集成》读书总结

持续集成已经被公认为极具价值的一项工程实践.在初始化一个项目时一个重要的任务就是搭建持续集成服务器,编写构建脚本.在我工作的所有项目中都引入了持续集成机制.它已经像氧气一样成为软件开发过程中的一项工程活动. <持续集成>站在理论的角度阐述了持续集成能够解决什么样的问题,如何解决,需要遵循那些原则等.这本书的副标题是-软件质量改进和风险降低之道(Improving Software Quality and Reducing Risk).副标题直指持续集成的两个好处:提高软件质量及降低项目风险.

使用 Subversion、Hudson 和 Eclipse 构建持续集成系统

持续集成系统简介 持续集成系统是指持续地编译.测试.检查和部署源代码的系统. Martin Fowler 对 持续集成是这样定义的 : 持续集成是一种软件开发实践,团队开发成员经常集成它们的工作,通常每个成员每天可 能会发生多次集成.每次集成都通过自动化的构建(包括编译.发布.自动化测试)来验证,从而尽快地发现集成错误.这 个过程可以大大减少集成的问题,从而让团队能够更快的开发内聚的软件. 持续集成有以下几个特点和要求: 有统一的源代码库. 开发人员基于同一个源代码库进行开发是进行持续集成的一个

通过Docker容器运行持续集成/持续部署

本文讲的是通过Docker容器运行持续集成/持续部署,[编者的话] 对于Docker主流的应用场景:持续集成和持续部署(CI/CD)大家也许并不陌生.这篇文章从独特的视角阐述了如何利用各种云平台构建属于自己的CI/CD容器,笔者还自己扩展了Gitlab CI引擎,对CI感兴趣的同学对这个文章应该很感兴趣. 我曾经使用Docker了一段时间,在过去的一年里伴随着众多的Docker容器涌入,帮助用户们更容易的部署Docker容器到生产环境中.一些工具是第三方公司提供,当然也包括Docker公司自己的

新手搭建Jenkins进行持续集成

Jenkins简要说明 Jenkins是一个持续集成的工具.不管是在开发中,还是在与测试的沟通中,总是不断要自己进行打包编译,发布到服务器上,也要不断交付给测试相关的更新包,这不仅麻烦,有时还会有缺失.持续集成软件的出现,为我们解决了上述问题.开发只管把开发编译没问题的代码上传svn即可. 我的部署环境 开发语言:java 开发IDE: idea 集成环境:Maven 运行环境:tomcat8 Jenkins:Jenkins ver. 2.60.1 当然,其它语言也支持,因为Jenkins提供很

使用Subversion、Hudson和Eclipse构建持续集成系统的过程

持续集成系统是指持续地编译.测试.检查和部署源代码的系统. Martin Fowler 对持续集成是这样定义的 : 持续集成是一种软件开发实践,团队开发成员经常集成它们的工作,通常每个成员每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译.发布.自动化测试)来验证,从而尽快地发现集成错误.这个过程可以大大减少集成的问题,从而让团队能够更快的开发内聚的软件. 持续集成有以下几个特点和要求: 有统一的源代码库. 开发人员基于同一个源代码库进行开发是进行持续集成的一个前提.为了让持续集成系统

敏捷软件开发基础: 持续集成环境的构建

敏捷意味着什么 Agile可以说是近几年来软件工程界最"热"的一个单词,关于它的文章.书籍.讨论不 计其数.尽管如此,却仍有大量的从业者对Agile存有误解和困惑.Agile到底意味着什么 呢?仅仅是一些漂亮.时髦的宣传吗?到底怎样才算是Agile呢?做到了Agile能为软件开发团队带来什么好处呢?类似的问题还有很多. Agile其实根本不是一个什么新鲜.时髦的东西,它已经存在了数十年之久了.在这数 十年中,那些取得成功的软件开发团队无一不是敏捷开发团队.他们在自己的软件开发过 程中大

Atlassian Bamboo 3.2发布 持续集成构建服务器软件

Atlassian Bamboo 3.2这个版本引入了Bamboo和JIRA之间的集成度提高,到发布管理过程的自动化.手册阶段允许你中断/停止/暂停自动建立执行一个特定阶段的建设计划.计划继续执行,用户必须手动触发阶段.此外,您现在可以重新运行失败的工作,而无需重新运行整个计划直到你解决了问题. 关于http://www.aliyun.com/zixun/aggregation/16373.html">Atlassian Bamboo 3.2详细的更新说明请参阅:http://conflu

Atlassian Bamboo 4.1发布 持续集成构建服务器软件

Atlassian Bamboo 是一个持续集成构建服务器软件(Build Server),能够更好地自动化构建.测试.部署,以及释放您的软件.使http://www.aliyun.com/zixun/aggregation/7434.html">开发团队能够在几分钟内通过持续集成(CI),提供有关更改代码的快速反馈,使错误不堆积.Bamboo可扩展远程代理或Amazon EC2云平台应用. Atlassian Bamboo 4.1该版本增加了新的集成点,包括:JIRA.Stash.Hip

Atlassian Bamboo 4.0发布 持续集成构建服务器软件

Atlassian Bamboo 是一个持续集成构建服务器软件(Build Server),更好地自动化构建.测试.部署,以及释放您的软件.使http://www.aliyun.com/zixun/aggregation/7434.html">开发团队能够在几分钟内通过持续集成(CI),提供有关更改代码的快速反馈,使错误不堆积.Bamboo可扩展远程代理或Amazon EC2云平台应用. Atlassian Bamboo 4.0该版本增加了DVCS和集中式版本控制环境的工作计划分支.支持高