具体来说,冒烟测试就是在每日构建完成后,对系统的基本功能进行简单的测试。这种测试强调功能的覆盖率,而不对功能的正确性进行验证。
至于冒烟测试这个名称的来历,大概是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟在进行其它测试,否则就必须重新来过。类似的如果冒烟测试没有通过,那么这个build也会返回给开发队伍进行修正,测试人员测试的版本必须首先通过冒烟测试的考验。
Test now icon. Internet button on white

冒烟测试在软件测试中的意义,应该说取的是其原始概念中的目的而非手段。通过 冒烟测试,在软件代码正式编译并交付测试之前,先尽量消除其“表面的”错误,减少后期测试的负担。因此可以说,冒烟测试是预测试。
软件开发过程

按照现有定义的说法,冒烟测试的执行似乎是在每日构建(daily build)完成时进行的,从这一点来看似乎说的就是 BVT。因此国内有人更加引申一步理解,把研发后期所做的一些不全面的集成测试也认为是冒烟测试。
实际上 冒烟测试的执行是在代码评审(code review)之后、每日构建(daily build)之前完成的工作——关于这一点,如果大家认真查阅国外同行关于冒烟测试的介绍是不难找到叙述的。
软件研发不同阶段的冒烟测试在实际的软件测试工作中,冒烟测试在软件研发的不同阶段有所不同。大体可以分为三类:
形成集成测试版本以前——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 结果对后续工作的影响不一样。觉得不错的朋友关注下哩,后面会分享更多干货。