这一术语源自硬件行业。对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。在软件中,“冒烟测试”这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程。在检查了代码后,冒烟测试是确定和修复
软件缺陷的最经济有效的方法。冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。
产品介绍
冒烟测试是
微软公司在《
微软项目求生法则》一书中提出的一种功能测试,目的是对一个新编译需要正式测试的
软件版本,确认软件的
基本功能是正常的,可以进行后续的
测试工作。其严格定义为:冒烟测试是从抽象层次验证软件的基本功能是否已经实现来确定是否需要更多的测试.若测试失效,软件不再进行其他测试,直接返回给开发人员。
冒烟测试是在
软件开发过程中的一种针对软件版本包的快速基本
功能验证策略,是对软件基本功能进行确认验证的手段,并非对软件版本包的深入测试。冒烟测试也是针对软件版本包进行详细测试之前的
预测试,执行冒烟测试的主要目的是快速验证软件基本功能是否有缺陷。如果冒烟测试的测试例不能通过,则不必做进一步的测试。进行冒烟测试之前需要确定冒烟测试的
用例集,对用例集要求覆盖软件的基本功能。这种版本包出包之后的验证方法通常称为软件版本包的门槛用例验证。
冒烟测试属于HLT(highlevel
test)测试,HLT通常指SDV(系统
设计验证)/SIT(系统
集成测试)/SVT(系统验证测试)等测试活动。HLT是站在系统的角度对整个版本进行测试,测试对象是一个完整的产品而不是产品内部的模块,常见的HLT测试包括
系统测试和验收测试。
冒烟测试可以手动执行,也可以自动化执行。稳定的系统适合自动化冒烟测试,集成过程中的系统适合手工冒烟测试,因为冒烟测试内容在动态变化,变化中的自动化脚本维护工作量比较大。
冒烟测试(smoke testing),据说是
微软起的名字。在《
微软项目求生法则》一书第14章“构建过程”关于冒烟测试,就是开发人员在个人版本的软件上执行的冒烟测试项目,确定新的程序代码不出故障。冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板基本功能检查。任何新电路板焊好后,先通电检查,如果存在
设计缺陷,电路板可能会短路,板子冒烟了。
分类
冒烟测试的对象是每一个新编译的需要正式测试的软件版本。通过冒烟测试,在
软件代码正式编译并
交付测试之前,先尽量消除其表面的错误,减少后期测试的负担。冒烟测试的执行者是版本编译人员。因此可以说,冒烟测试是预测试。在实际的软件测试工作中,冒烟测试在
软件研发的不同阶段有所不同。大体可以分为三类:
应用
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。
在一般软件公司,软件在编写过程中,内部需要编译多个版本(Builds),但是只有有限的几个版本需要执行正式测试(根据项目
开发计划),这些需要执行的中间测试版本,在刚刚编译出来后,软件编译人员需要进行基本性能
确认测试,例如是否可以正确安装/卸载,主要功能是否实现,是否存在严重死机或数据严重丢失等Bug。如果通过了该测试,则可以根据正式测试文档进行正式测试。否则,就需要重新编译版本,再次执行版本可接收确认测试,直到成功。
现状
新版本的
基本功能确认的测试,有的公司称为版本
健康检查(Build Sanity Check)。
对于编译的本地化软件新版本,除了进行上面提到的各种检查,还要检查是否在新的本地化版本中正确包含了全部应该本地化的文件。可以采用文件和
目录结构比较工具,首先比较
源语言版本和本地化版本的文件和目录中的文件数目、文件名称和文件日期等,这个过程称为版本镜像检查(Build Image Check);其次,分别安装源语言版本和本地化版本,比较安装后的文件和目录结构中的文件数目、文件名称和文件日期等,这个过程称为版本安装检查(Build Installing Check)。
意义
冒烟测试,在
软件生命周期中所占有的时间比例较低,同时具有注重
通过性轻细节的特点,因此经常被开发、测试人员所忽视。事实上,冒烟测试是
软件测试过程中一个不可或缺的节点,一个好的冒烟
测试过程,对于软件测试效率的提升具有重要意义。
通过冒烟测试,能够快速确认软件是否具备测试准入条件,避免出现正式
测试阶段全面开展后甚至到测试中后期才发现阻塞型缺陷等严重影响测试进度浪费人力物力的情况。
(2)冒烟测试是测试人员对测试流程的熟悉。
通过冒烟测试,测试人员可以迅速熟悉测试总体流程,这一方面有助于测试人员准确制定测试时间计划,合理安排工作进度;另一方面也有助于测试人员提前做好相关设备、数据的准备,为正式测试的开展奠定基础。
注意事项
冒烟测试执行,与正式测试的区别在于二者
侧重点不同,冒烟测试关注的是阻塞型缺陷,
包括但不限于流程不通、主要功能未实现等,而正式测试则属于全面、细致的测试,需要尽可能的发现全部缺陷并按其
严重性进行区分。冒烟测试过程中,需要注意的是:
1、开发协同
冒烟测试阶段有几个特点,一是该阶段软件可能存在较多缺陷,特别是阻塞型缺陷,
测试工作随时可能陷入停滞状态;二是该阶段测试人员对软件的流程、功能等熟悉程度较低,难免会出现找不到合适的
测试方法甚至是找不到
功能模块的情况从而延迟测试进度;三是该阶段的时间一般仅占整个
软件生命周期的极小部分,这就需要开发人员实时响应,尽快解决各类问题。因此,在冒烟测试阶段,测试人员与开发人员的
协同工作十分重要。
2、注重效率
冒烟测试应以效率为先,尽量缩短测试时间提高测试效率。要在关注主流程、重点功能的前提下,抓
关键缺陷验
数据准备,对于诸如页面不美观、
用户体验不佳等缺陷可在冒烟阶段有选择的予以过滤。例如:测试
系统登录,关注点应针对
用户名、密码、
校验码的输入及提交完成,对于
非法字符的校验、登录框是否美观、错误提示是否准确等均属于次要关注点,不纳入冒烟测试范围。
3、评估用例
冒烟测试过程同时也是对
测试用例进行评估的一个过程,要充分利用这一阶段,对前期形成的
测试案例进行检验,及时对案例进行补充、删减和修订,使案例更贴合实际,更具有可执行。