news 2026/3/22 6:23:55

软件测试之冒烟测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软件测试之冒烟测试

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

1. 核心

冒烟测试就是完成一个新版本的开发后,对该版本最基本的功能进行测试,保证基本的功能和流程能走通。

如果不通过,则打回开发那边重新开发;

如果通过测试,才会进行下一步的测试(功能测试,集成测试,系统测试等等)。

简化:门槛测试,一个开关而不是一个阶段。

目的:版本验证测试BVT(Build Verification Testing)。

时间:开发转测试,历时半至一个小时,很短。

对象:需求覆盖,主功能路径。

优点:节省测试时间,防止build失败。

缺点:覆盖率还是比较低。

操作:对着需求文档把新功能过一遍;把所有流程功能走一遍;用monkey跑个一两个小时;如果有历史用例的话,可以把用例分级,冒烟级、详细级、回归级等等

用例:冒烟测试基本上不需要什么用例,如果有的话,就用详细用例里,覆盖需求文档级别的用例就可以了

冒烟测试,是版本验证测试,主要确认新的版本是否存在致命性bug,冒烟测试最大的优点在于节约测试的时间成本,减少测试轮数。

回归测试,是软件维护阶段对软件修改后进行的测试,指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

2. 定义

维基百科上对冒烟测试的解释:

smoke testing is preliminary testing to reveal simple failures severe enough to, for example, reject a prospective software release. Smoke tests are a subset of [test cases] that cover the most important functionality of a component or system, used to aid assessment if main functions of the software appear to work correctly.[1][2] When used to determine if a computer program should be subjected to further, more fine-grained testing, a smoke test may be called an intake test.[1] Alternately, it is a set of tests run on each new build of a product to verify that the build is testable before the build is released into the hands of the test team.[5] In the DevOps paradigm, use of a BVT step is one hallmark of the continuous integration maturity stage.

冒烟测试这个名称的来历,最初是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟再进行其它测试,否则就必须重新来过。

而在软件研发中,冒烟测试其实是微软首先提出来的一个概念,和微软一直提倡的每日build(构建版本)有很密切的联系。具体说,冒烟测试就是在每日build(构建版本)建立后,对系统的基本功能进行简单的测试。这种测试强调程序的主要功能进行的验证,而不会对具体功能进行更深入的测试。

冒烟只是这类测试活动更形象化一些的叫法,直接叫做BVT(Build Verification Testing)其实个人觉得更为贴切。

3. WHY

为什么进行冒烟测试?软件测试从业者都知道,bug发现得越晚,修复bug的成本就越高。那成本高在哪里呢?

影响的代码多,开发的修复成本会增加

影响的功能范围较大,测试回归的范围增加

容易引发更多的bug,拉长测试周期,还有质量风险

更多的bug,会增加bug的提交、沟通成本

所以,如何尽早发现bug,把bug置解决是降低成本和控制止风险的有效方式,也是QA的主要职责之一。因此使用冒烟测试的方式,对开发提测的代码进行审查,找出那些非常浅显的bug是很有必要的

4. 特点

(1) 这种测试强调程序的主要功能进行的验证,而不会对具体功能进行更深入的测试。

(2) 冒烟测试是随着版本转测进行的,它应该是一个开关(判断版本能否转测试)而不是一个研发流程中的测试阶段。

(3) 冒烟测试用例一般选取的是测试用例中level 0的用例,保证主功能可用。

(4) 冒烟测试就是在一个新版本出来的时候,将软件的全部功能过一遍,看有没有什么大问题。如果功能可以正常运行,不会影响测试进行,那么这个版本就可以真正开始测试了。如果功能有重大问题或影响测试进行,那么这个版本就是不合格的,不用进行进一步的测试。

5. 实现

开展冒烟测试工作有助于尽早发现软件代码存在的问题,提高软件代码的质量和开发效率。

基于持续集成(Continuous Integration,CI)的冒烟测试采用自动化测试脚本进行测试工作,能够提高测试效率,减少测试人员大量的重复测试验证工作。

冒烟测试的最佳实践还是最好被自动化,在CI中每一个Build都自动的去执行主流程的测试,确保其是一个基本可用的版本。

冒烟测试可以手动执行,也可以自动化执行。稳定的系统适合自动化冒烟测试,集成过程中的系统适合手工冒烟测试,因为冒烟测试内容在动态变化,变化中的自动化脚本维护工作量比较大。

6. 案例选择原则

既然只是个准入门槛那就不会选择全部案例进行测试,根据经验,选择全部案例数的 40%-50% 测试通过率在 80% 左右即可视为冒烟测试通过,允许测试准入,那这部分案例如何选择呢?

遵循以下原则

A选取重要功能案例。

重要功能案例至少应占冒烟案例的 30%,特别关注对软件功能实现具有重要影响的功能模块测试案例,例如:一个事件(业务)的增加、删除、修改、查询,一个统计、计算逻辑的的结果校验等。

B选取主要流程

主、分流程,对于主流程案例原则上应选取,分支流程案例可视其与主流程关联度和影响度从高到低选择部分。如主流程未通过,即使总案例通过率达到通过标准,该软件也应被拒绝准入,待开发人员修正后重新进入冒烟测试环节。例如:一个审批流程,即使增加、删除、修改、查询的功能均通过,但如果整个流程环节中出现阻塞,无法完成完整的审批,则应视为冒烟未通过。

C筛选数据案例

筛选与主流程、重要功能相关度高的数据测试案例,原则是确保数据的埋设满足主流程、重要功能测试条件。例如:想校验一个商品购买的正确性,就离不开商品种类、单位、库存、价格、购买数量等数据相关案例。这仅是一个简单的商品购买,如果是统计分析则更需要大量不同种类、不同时点的数据作为测试基础。

7. 涉及角色

冒烟测试在测试环境搭建与执行过程中,涉及到的人员包括:测试架构师、管理自动化工厂的测试工程师、开发工程师、持续集成工程师、质量工程师。

8. 冒烟测试 V.S. 回归测试

冒烟测试,是版本验证测试,主要确认新的版本是否存在致命性bug,冒烟测试最大的优点在于节约测试的时间成本,减少测试轮数。

回归测试,是软件维护阶段对软件修改后进行的测试,指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 6:17:32

一键搞定网页长截图!Chrome扩展神器超详细使用指南

一键搞定网页长截图!Chrome扩展神器超详细使用指南 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extensio…

作者头像 李华
网站建设 2026/3/14 9:06:13

Sunshine游戏串流:打造专属云游戏平台的完整指南

Sunshine游戏串流:打造专属云游戏平台的完整指南 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine …

作者头像 李华
网站建设 2026/3/14 2:01:52

Prisma ORM数据模型:AI编写schema.prisma定义文件

Prisma ORM 数据建模新范式:用轻量AI高效生成 schema.prisma 在现代全栈开发中,一个常见的痛点是——业务需求已经明确,但数据库 Schema 的设计却成了“卡点”:字段类型是否准确?关系怎么定义?外键约束要不…

作者头像 李华
网站建设 2026/3/14 2:22:40

Modulepreload预解析:AI提升重要JS模块加载优先级

Modulepreload预解析:AI提升重要JS模块加载优先级 在浏览器中运行一个轻量语言模型,用户点击页面后却要等待数秒才能开始输入问题——这背后往往不是模型本身太慢,而是前端关键脚本还没加载完成。尤其当这个模型专精于数学推理和算法生成时&a…

作者头像 李华
网站建设 2026/3/14 11:09:46

Vue3 Composition API:VibeThinker写出setup函数逻辑

Vue3 Composition API 与 VibeThinker:智能生成 setup 函数的实践探索 在现代前端开发中,组件逻辑的组织方式直接影响项目的可维护性与扩展能力。随着 Vue3 的普及,setup() 函数作为 Composition API 的核心入口,正在重塑开发者编…

作者头像 李华
网站建设 2026/3/19 18:05:08

VSCode技能说明加载优化全攻略(专家级调优秘籍)

第一章:VSCode技能说明加载优化概述在现代开发环境中,Visual Studio Code(VSCode)因其轻量、可扩展和高度定制化而广受欢迎。随着插件生态的不断壮大,技能说明(如语言服务器提供的文档提示、函数签名、类型…

作者头像 李华