【Smoke Testing 释义】
Smoke Testing 的概念最早源于制造业,用于测试管道。测试时,用鼓风机往管道里灌烟,看管壁外面是否有烟冒出来,以便检验管道是否有缝隙。这一测试显然比较初级,更深层一点的测试至少要进行渗油测试、带压测试等等。Smoke Testing 只是一种初级、直观的测试。
软件测试中的 Smoke Testing 实际上用的是其引申含义,而且是引申了不止一道的含义,在这里,Smoke Testing 其实是个俚语就跟很多其他源于美国软件行业的名词一样。
以前我并不知道 Smoke Testing 有适当的中文翻译,最早听到冒烟测试这个词还是在我的顾问客户那里。据我的理解,这个翻译只是字面翻译,显然并不能代表 Smoke Testing 的真实含义,换句话说冒烟测试只是 Smoke Testing 的字译而非意译。
Smoke Testing 在软件测试中的意义,应该说取的是其原始概念中的目的而非手段。通过 Smoke Testing,在软件代码正式编译并交付测试之前,先尽量消除其表面的错误,减少后期测试的负担。因此可以说,Smoke Testing 是预测试。
【软件研发不同阶段的 Smoke Testing】
在实际的软件测试工作中,Smoke Testing 在软件研发的不同阶段有所不同。大体可以分为三类:
-
形成集成测试版本以前Smoke Testing 是随着代码的不断开发必做的一项工作,目的是验证各个单元能够成功执行,并保证测试版本能够顺利集成。
-
形成集成测试版本以后在代码 check in 到 daily build 之前执行 Smoke Testing,以保证新的或者更改过的代码不破坏集成版本的完成性和稳定性。
-
后期预测试 Bug 的修正后期 daily build 相对稳定时,针对每个 Bug 所做的 Bug Fix 都要先在干净的 build 中进行 Smoke Testing,测试通过的 Bug Fix 才能 check in 到新的 daily build 中。
【Smoke Testing 与 BVT】
从 Smoke Testing 的定义上看,BVT 似乎可以看作是 Smoke Testing,但在实际当中 BVT 是与 Smoke Testing 完全独立的一个概念,这是基于以下几个方面:
- Smoke Testing 与 BVT 的执行阶段不一样。
- Smoke Testing 与 BVT 的内容不一样。
- Smoke Testing 与 BVT 结果对后续工作的影响不一样。