软件测试—冒烟测试

news2025/2/1 13:44:06

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,冒烟测试最大的优点在于节约测试的时间成本,减少测试轮数。

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

9.技术帮助

我给大家整理了一套软件测试面试文档和一整套的软件测试资源,我自己也在用这套资料,这套资料也帮助我跳槽到现在这个公司,薪资也涨到了25k,应该对朋友们跳槽面试、升职加薪、摆脱职业困境、提高自己的技术有很大的帮助,希望各位都能前程似锦。【点击文末小卡片免费领取软件测试全套资料】

资料包括:测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等。


 

上面是我收集的一些软件测试视频资源,在这个过程中帮到了我很多。如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我下方扣扣群,里面有各种软件测试资源和技术讨论

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ThreadLocal为什么可能内存泄漏?】 —— 每天一点小知识

💧 T h r e a d L o c a l 为什么可能内存泄漏? \color{#FF1493}{ThreadLocal为什么可能内存泄漏?} ThreadLocal为什么可能内存泄漏?💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个…

渗透测试综合实验

文章目录 一、前期交互二、信息搜集三、威胁建模五、渗透攻击1.弱口令攻击2.SQL注入3.不安全文件上传 六、后渗透攻击利用1.蚁剑安装2.一句话木马利用 七、漏洞报告 一、前期交互 二、信息搜集 使用nmap收集端口、域名、后台信息 目标IP nmap -O -sV IP 三、威胁建模 寻…

基于javaweb jsp+servlet实验室设备管理系统的设计与实现

一.项目介绍 本系统分为 超级管理员、老师、学生三类角色 超级管理员:通知管理、维护用户信息、实验室管理(负责维护实验室、预约实验室)、设备管理(维护技术参数、维护运行数据、维护电子文档)、设备维修管理&am…

第5章 总体设计

第5章 总体设计 总体设计是决定”怎样做”。也就是概括的说,系统应该如何实现,因此总体设计也被称作概要设计。 5.1 设计过程 例题 5.2 设计原理 5.2.1 模块化 模块是由边界元素限定的相邻程序元素(例如,数据说明,…

【Spring Boot】Spring Boot特点及重要策略,含安装步骤详细讲解

前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应…

Matplotlib 绘制多图

Matplotlib 绘制多图 我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。 subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。 subplot subplot(nrows, ncols, inde…

微服务_Nacos

简介 Nacos(全称为“动态服务发现、配置和服务管理平台”)是阿里巴巴开源的一款云原生服务发现和配置管理平台,支持多种语言和多种环境,包括Kubernetes、Docker、Spring Cloud等常见的云原生环境。它提供了服务发现、配置管理、服…

MFC的定义和实际操作方法

我是荔园微风,作为一名在IT界整整25年的老兵,今天从另一个角度来看一下MFC。 完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDocument文档类,CView视类 过程:CWinApp创建CF…

算法刷题-链表-反转链表

反转链表 206.反转链表思路C代码双指针法递归法其他语言版本使用虚拟头结点解决链表翻转使用栈解决反转链表的问题 反转链表的写法很简单,一些同学甚至可以背下来但过一阵就忘了该咋写,主要是因为没有理解真正的反转过程。 206.反转链表 力扣题目链接 …

【Java基础篇】方法的使用(方法的使用以及形参实参的关系)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏:Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用&…

【线程安全问题】线程互斥与线程同步技术

在达内Windows/Win32编程专栏中,我们已经介绍过线程同步与线程互斥技术,包括了原子锁,互斥体,事件和信号量。但是与海哥讲的线程同步与线程互斥技术不太一样,这篇文章来带领大家学习线程同步与线程互斥技术&#xff0c…

新手运行bert,pycharm不识别conda安装的python环境

提示No module named numpy/tensorflow conda list是有这些包的 pycharm识别不出interpreter的package 改成scripts下的python.exe就能识别出numpy和tensorflow了 改完interpreter之后出现过importerror: dll load failed,在environment variables里加了这些就不报错…

06. Web大前端时代之:HTML5+CSS3入门系列~HTML5 画布

我们先看看画布的魅力&#xff1a; 初始画布 canvas默认是宽300px&#xff0c;高150px; 绘制步骤 1.定义一个id <canvas id"canvasOne" width"300" height"300"></canvas> 2.获取canvas对象 var canvasObj document.getEleme…

程序开发体系架构(C/S与B/S)

应用最多的网络应用程序开发体系结构可分为两种&#xff0c;一种是基于客户端/服务器&#xff08;Client/Server&#xff0c;C/S&#xff09;结构&#xff0c;另一种是基于浏览器/服务器&#xff08;Browser/Server&#xff0c;B/S&#xff09;架构 C/S体系结构 C/S是指在开发…

性能测试报告模板

xxx系统 性能测试报告 版本号&#xff1a;V1.0 2023年1月9日 1 概述 1.1 测试目的 1.2 测试依据 2 测试范围 3 测试方法 3.1 测试工具 3.2 并发用户策略 3.3 性能指标监控 3.4 性能测试策略 3.5 测试步骤简述 4 测试目标 4.1 系统处理能力 4.2 操作响应时间 4…

凸优化系列——无约束优化问题

最小二乘问题: 采用适当的方法可将约束优化问题转换为无约束优化问题; 最优解的定义&#xff1a; 无约束优化问题的最优性条件 需要说明的是&#xff0c;由于二阶梯度可以取0&#xff0c;我们由一元函数的知识可以知道&#xff0c;它是必要条件而非充分条件&#xff0c;当把等…

一款自动生成CRUD代码的自定义Starter

一个基础web的spring-boot-starter框架 web-spring-boot-starter Gitee仓库链接&#xff1a;https://gitee.com/suhuamo/web-spring-boot-starter Github仓库链接&#xff1a;https://github.com/suhuamo/web-spring-boot-starter 前言 对应一个web项目的开发&#xff0c;数据…

硬件设计电源系列文章-DCDC转换器布局设计

文章目录 概要 整体架构流程 技术名词解释 1.开关电源PCB布局要点 2.输入电容的放置 3.二极管的放置 4.散热孔的放置 5.反馈路径的走线 小结 概要 提示&#xff1a;这里可以添加技术概要 例如&#xff1a; 本文主要DCDC转换器布局方面的知识。 整体架构流程 提示&#xf…

Dockerfile构建镜像与实战

一、基于Dockerfile创建镜像 1&#xff09;联合文件系统(UnionFS) UnionFS(联合文件系统) : Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统&#xff0c;它支持对文件系统的修改作为一次提交来一层层的叠加&#xff0c;同时可以将不同目录挂载到同一个虚拟文…

Go语言并发之Select多路选择操作符

1、Go语言并发之Select多路选择操作符 select 是类 UNIX 系统提供的一个多路复用系统 API&#xff0c;Go 语言借用多路复用的概念&#xff0c;提供了 select 关键字&#xff0c;用 于多路监听多个通道。当监听的通道没有状态是可读或可写的&#xff0c;select 是阻塞的&#…