01
大哥,来颗华子
某日,新来的研发同学小刚敲完代码后准备提测
三点君,项目1111准备提测了
刚哥, 这个项目改动量较多,冒烟测试了没
啊?来来来,楼下门口集合~
我带着疑惑来到了前台门口,刚哥笑眯眯的从口袋掏出一包烟
哈哈,刚哥,烟雾缭绕里,我谈一谈冒烟测试
02
冒烟测试
冒烟测试(smoke test)最早来源于硬件测试,对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,该组件就通过了主流程核心的测试。
是否通过测试 =
( 硬件加电 == 冒烟 )?不通过 : 通过
后来应用到软件测试里面,有2种说法
说法1:该种测试耗时短,仅用一袋烟功夫足够了
说法2:类似于硬件加电,把软件抽象成核心功能拼接而成的烟囱,系统测试中,发现某节烟囱冒烟,说明对应核心功能有严重问题,烟雾不能完全从烟囱出口排出。
是否通过测试 =
(冒烟出口位置 == 唯一指定出口 )?通过 :不通过
上述2种说法都有道理,软件行业里的冒烟测试是一种快速验证、快速发现阻塞性问题的粗粒测试。
03
什么时候冒烟?
准入测试
研发测试周期里面,通常流程如上所示。随着敏捷开发敏捷测试的需求,测试左移,尽可能的在测试前期拦截严重阻塞性问题,所以上述流程里面会在提测前增加一个流程,即冒烟测试,提测前验收、研发自测等,只有冒烟测试通过的情况下测试才允许准入,此时的代码质量意味着相对可靠。
测试是否准入 =
冒烟用例通过== true ? 准入 :不准入
测试同学需要注意的是,测试同学对需求文档和技术文档提前进行梳理,设计和修订测试用例,选取核心功能、主流程的用例成为冒烟测试用例,在研发排期尾声提供冒烟测试用例,用于研发自测或者提测验收使用。
代码可测
快速验证
有些研发测试流程里面不支持提测准入,直接提测后,测试同学需要先做冒烟测试,再做细粒度详细测试。
例如:测试系统登录,关注点应针对用户名、密码、校验码的输入及提交完成,对于非法字符的校验、登录框是否美观、错误提示是否准确等均属于次要关注点,不纳入冒烟测试范围。
开发协同
冒烟测试通常能发现许多缺陷,特别是阻塞性问题,重要且紧急的问题需要尽快协同研发修复,给后续详细测试排除风险,保证整体的测试进度正常。
04
今天你冒烟了吗?
冒烟测试是测试阶段前期重要的代码质量保障手段,提测准入过程让研发也参与代码质量工作,提高了整体的测试效率,缩短项目排期,项目迭代速率更快。