[---  资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力,
如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除。同时本人深表歉意,并致以崇高的谢意!
erwin_609@msn.com  ---]

如果你想创建一个只包含一个源程序文件的简单程序,那么你只需要编译、连接那一个文件就可以了。如果是一个团队项目组,有着许多甚至上千个源程序文件,那么要创建一个可执行程序的过程就变得更复杂、更耗时。你必须用各种各样的组件将程序逐步建立起来。

在微软或其它一些软件公司中惯例是:每日构造并做“冒烟测试”。每天都对已完成的源程序进行编译,然后连接组合成可执行的程序,并做“冒烟测试”,以简单的检查该执行程序在运行时是否会“冒烟”。

带来的好处

虽然这是一个非常简单的过程,但却有非常重要的意义:

1、能最小化集成风险

项目组可能遇到的一个很大的风险是,项目组成员根据不同的系统功能各自开发不同的代码,但是当这些代码集成为一个系统的时候,也许系统完成不了预期的功能。这种风险的发生取决于项目中的这种不兼容性多久才被发现,由于程序界面已经发生了变化,或者系统的主要部分已经被重新设计和重新实现了,相应的排错工作将非常困难和耗时。极端情况下,集成的错误可能回导致项目被取消掉。每日构造和冒烟测试可以使这种集成错误变得非常小,而且便于解决,防止了很多集成问题的产生。

2、能减小产品低质量的风险

这种风险是和集成不成功、集成出错相关联的。每天对集成的代码做一些少量的冒烟测试,即可杜绝项目中那些基本的质量问题。通过这种方式,使系统达到一种周知的良好状态,维护这样的系统可以防止系统逐步恶化到耗费大量时间排查质量问题的地步。

3、能简单化错误诊断

当系统每天都进行build和测试时,系统任何一天发生的错误都能够变得十分精细,便于排查。比如在17日系统还运行正常,18日就出错了,那么只需要检查这两次build之间的代码变化就可以了。

4、能极大鼓舞项目组的士气

看到产品的不断成长,能够极大的鼓舞项目组的士气,有时甚至不管这个产品到底用来做什么。开发人员可能会为系统显示了一个矩形而感到激动。通过每日构造,产品每天进步一点点,保证项目士气的持续高涨。

进行每日构造和冒烟测试

虽然说这是一个简单枯燥的活,每天进行build,每天进行测试,但也有着一些值得注意的细节:

1、每天坚持

每日构造,最重要的就是“每日”。如Jim McCarthy所说,把每日构造看作是项目的“心跳”,没有“心跳”的话,项目也就死了(Dynamics of Software Development, Microsoft Press, 1995)。Michael Cusumano and Richard W. Selby描述了另外一种隐含的比喻,把每日构造比作项目的“同步脉冲”(Microsoft Secrets, The Free Press, 1995)。 不同开发人员写的代码在他们的“脉冲”之间肯定都会存在“同步”的差异,但是必须有这样一个“同步脉冲”,使得这些代码能够组合为一个整体。当项目组坚持每天把这些不同的“脉冲”组合到一起的时候,开发人员脱离整体的情况就会得到极大程度的杜绝。

有些项目组把这一过程简化为“每周build一次”。这样带来的问题是,某一次build失败后,可能要回溯好几周才能找到原因。如果这种情况发生的话,已经得不到经常build带来的好处了。

2、严格检查每一次build

要保证每一次build的成功,就必须保证build后的结果(也可称为build)是可以正常运行的,如果build不可运行,那么本次build被认为是不成功的,同时应该将修复此次build的工作提高到项目组最高级别来处理。

对于如何衡量一个build,每一个项目组都会定义一些自己的标准,这些标准需要设定一个严格的质量级别来处理那些特别严重的缺陷,同时也需要具有一定的伸缩性来忽略掉那些微不足道的缺陷,一些不适当的关心也许会使整个过程举步为艰。

一个好的build起码应该具备以下条件:

●能够成功编译所有的文件、库,以及其它相关组件;

●能够成功链接所有的文件、库,以及其它相关组件;

●不能存在任何使得系统无法运行或者运行出错的高级别故障;

●当然,必须通过冒烟测试

3、每天进行冒烟测试

冒烟测试应该是对整个系统流程从输入到输出的完整测试。测试不必是面面俱到的,但是应该能够发现系统中较大的问题。冒烟测试应该是足够充分的,通过了冒烟测试的build就可以认为是经过充分测试、足够稳定的。

不进行冒烟测试的build是没有太大价值的。冒烟测试就像一个哨兵,在阻止着产品质量恶化和集成问题的产生,不进行冒烟测试,每日构造可能会变成浪费时间的练习。

冒烟测试必须随着系统的扩充而扩充。最初,冒烟测试可能是非常简单的,比如验证系统是否会打印“Hello World”,随着系统功能的扩充,冒烟测试需要越来越充分。最初的冒烟测试也许只需要几秒钟来执行,逐渐地,测试可能会花费30分钟,1小时,甚至更长。

4、建立一个专门的build小组

在很多项目组,维护每日构造,并更新冒烟测试用例,会耗费一个人工作的大部分时间。因此在一些大的项目中,这项工作独立成不止一个人来完成的全职工作。比如在 Windows NT 3.0的研发中,就有一个由四个全职人员组成的专门的build小组(Pascal Zachary, Showstopper!, The Free Press, 1994)。

5、为build增加修订,如果这样做有意义的话

一般开发人员不会每天都经常向系统中快速的增加实际的代码,通常是每隔几天,他们在开发好完成某个功能的一套代码以后,然后集成到整个系统中。

6、规定一些导致build失败的惩罚措施

很多执行每日构造的项目组都会规定一些惩罚措施,来惩罚那些导致build失败的行为。从最开始,项目组成员就清楚的知道,build的正常执行是项目组的头等大事。一个失败的build是项目组的意外,无法成为项目组工作的准则。必须坚持:导致build失败的同事,必须停下手中的工作,首先来解决build失败的问题。如果一个项目组的build经常失败的话,久而久之的,再来谈build的正确性就没有意义了。

有种轻松的惩罚措施,能够突出解决问题的优先性。Some groups give out lollipops to each "sucker" who breaks the build. This developer then has to tape the sucker to his office door until he fixes the problem. 有些项目组会惩罚犯错的同事戴上山羊角,或者向一个项目基金捐献5块钱。

有些项目组对此的惩罚就有点残酷了。微软的开发人员,在一些知名度很高、很重要的产品如Windows NT,Windows 95,Excel等产品后期研发中,被要求随时带着寻呼机,如果你的代码导致build失败的话,即使是凌晨3点钟,也会要求你立即来处理这个问题。

7、即使在压力下也需坚持每日构造和冒烟测试

当项目进度的压力越来越大时,维护每日构造的工作看起来有些浪费时间,但是恰恰相反。在压力之下,开发人员丢掉一些平时的规定,会采用一些设计和实现的捷径,这在平时压力较小的环境下一般时不会用的。代码的review和单元测试也可能会比平时粗心一些,这些代码的状态变化也会比平时快很多。

为防止这种情况的出现,每日构造会坚持相关的规定,让压力下的项目保持在正轨上。代码仍然每天在不断变化,但是构造过程使得这种变化每天都可控。

谁能够从每日构造这种过程中得到好处呢?一些开发人员会抗议说,由于他们的项目太大,每天进行build是没有实际意义的。但是为什么现在最复杂的软件项目组却能够成功的执行每日构造的制度呢?本文首发时,Windows NT包括了560万行代码、分布在4万个源程序文件中,项目组仍然可以坚持每日构造。

[转载]每日构造与冒烟测试相关推荐

  1. BVT测试(版本验证测试、冒烟测试)和Daily build

    BVT测试介绍: BVT测试也称为"冒烟测试".版本验证测试 (BVT) 通常由一组广泛的测试组成,这些测试用于验证特定版本的总体质量.BVT 通常根据设定的计划自动运行,经常在夜 ...

  2. BVT测试(冒烟测试)

    BVT测试(版本验证测试.冒烟测试)和Daily build BVT测试介绍: BVT测试也称为"冒烟测试".版本验证测试 (BVT) 通常由一组广泛的测试组成,这些测试用于验证特 ...

  3. 冒烟测试与回归测试的区别

    2019独角兽企业重金招聘Python工程师标准>>> 冒烟测试,是微软首先提出来的一个概念,和微软一直提倡的每日build(构建版本)有很密切的联系.具体说,冒烟测试就是在每日bu ...

  4. IC验证工程师高效战斗手册--高效验证平台搭建和冒烟测试要注意什么?

    前面我们一起探讨了"如何制定高效的验证方案",方案和战略有了,便到了具体执行.执行的第一步,即是验证平台的搭建和冒烟测试,本篇我们就一起聊聊,高效的搭建验证平台和冒烟过程中需要注意 ...

  5. BVT测试与冒烟测试

    [BVT的释义] BVT的全称是Build Verification Test.可以说这个全称就是BVT的定义了. BVT只验证build构建的成功与失败,不深入测试构建好的build的功能.性能等等 ...

  6. 谈冒烟测试与BVT测试

    现实过程中,经常提到冒烟测试与BVT测试,许多人经常并且将其等同,在实际操作应用中,这样做并没有太大问题,而实际两者间是存在区别的.最近反反复复遇到人提问这个问题,在此就该问题发表一下自己的看法,供大 ...

  7. 软件测试之冒烟测试中易犯的三个误区--新梦想软件测试

    何为冒烟测试? 这一术语源自硬件行业.对一个硬件或硬件组件进行更改或修复后,直接给设备加电.如果没有冒烟,则该组件就通过了测试.冒烟测试,名字听起来很奇怪,但是冒烟和测试完全就没有什么关系.冒烟测试引 ...

  8. 冒烟测试回归测试UATSIT

    在软件研发中,冒烟测试其实是微软首先提出来的一个概念,和微软一直提倡的每日build(构建版本)有很密切的联系.具体说,冒烟测试就是在每日build(构建版本)建立后,对系统的基本功能进行简单的测试. ...

  9. 单元测试、冒烟测试、集成测试、系统测试、回归测试、验收测试、Alpha、Beta

    1.冒烟测试 代码跑通即可. 这一术语源自硬件测试:测试一个硬件或硬件组件时,先直接加电,如果冒烟了,则无需进行后续测试.目的:判断是否可以进行后续的正式测试工作. 新编译的软件版本,确认其基本功能正 ...

最新文章

  1. jQuery遍历json数组怎么整。。。
  2. leetcode算法题--最大平均值和的分组★
  3. python爬取全国社会组织查询网站
  4. Android中文API(126) —— Message
  5. oracle坏块修复
  6. winfrom 窗口起始位置为屏幕中央
  7. 安卓图片框架:universal-image-loader的高速使用
  8. springmvc form中 commandName和modelAttribute的疑问
  9. 本人亲测,实用安装Oracle VM VirtualBox教程
  10. 系统集成j2cache
  11. Db2数据库:日期函数DATE函数
  12. js基础系列之函数调用与this
  13. 运维自动化工具-ansible的安装与ad-hoc模式场景应用
  14. Oracle EBS专业术语与名词解释
  15. 【Unity2D游戏】实现实时的正确的遮挡关系(引擎自带功能)
  16. 君子签“区块链+保全链+全证据链”保障电子合同签署全程可靠可信
  17. Web初学-2022.10.15-21
  18. 自己设计系统之间的通信协议
  19. 新编C语言程序设计pdf
  20. 2018android旗舰手机,亓纪的想法 篇五:且用且珍惜:2018年LCD屏幕旗舰手机推荐(上)...

热门文章

  1. Selenium alert 弹窗处理
  2. android+查看内存容量apk,如何检查 Android 应用的内存使用情况
  3. R语言统计分布及模拟
  4. 如何学习ReactJS:初学者完整指南
  5. 年薪10万的前端一定会用的19 个 JavaScript 简写方法!
  6. altera fpga sdi输出方案_FPGA设计太复杂?四大设计要点总结助你快速上手!
  7. assertionerror python_Python 基础(十四): 错误和异常
  8. javabirdge php_PHP-Java-Bridge使用笔记
  9. easyui 修改单元格内容_jquery easyui datagrid实现增加,修改,删除方法总结
  10. php备份远程系统快照,ZFS snapshot高级篇之快照备份