冒烟测试的7个好处,你是否经常用到它?

news2024/11/26 13:31:04

在这里插入图片描述
以下为作者观点:

冒烟测试(smoke testing)是在开发的早期阶段评估基本的软件组件,以检查它们是否 “着火”(有问题),本文旨在介绍冒烟测试及其在程序开发过程中的作用。

什么是冒烟测试?

冒烟测试是在开发的早期阶段对软件程序的基本和核心元素进行测试,以确定有没有会影响产品按时发布的bug。

冒烟测试的核心是用来确定发布的软件是否可靠。冒烟测试允许质量保证(QA)团队继续进行额外的软件测试,包括在每个构建中执行的最小的测试集合,以验证软件的运行。

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

冒烟测试只需要确保被测试的构建没有大的bug,并且关键的功能能够按照预期运行。可以说,它是对软件基本功能的快速而简洁的回归测试,它还能更简单地决定该构建是否有大的缺陷,避免后续不必要的资源和时间投入。

通过进行冒烟测试,人们可以在早期发现阻塞性错误,防止测试工程师闲置,或者可以进一步检查独立的可测试模块。

冒烟测试与健全测试:它们一样吗?

冒烟测试可以保证软件的关键功能按预期运行,它用于测试系统或产品的运行情况,被称为可接受性测试的一个类别。然而,健全测试(Sanity testing)是一种检测产品质量以确定其是否准备好进行进一步测试的方法,被称为回归测试的一个分支。

有时,冒烟测试和健全测试被误认为是一样的。然而,它们各自有不同的目标和考虑。

冒烟测试是为了确保程序的关键功能按预期运行,而健全测试是用来确定缺陷是否在构建后被修复。冒烟测试是为了测试系统或产品的稳定性。健全测试是通过测试来评估系统或产品的逻辑。

在冒烟测试过程中,软件构建可能是稳定的,也可能是不稳定的。在整个健全测试过程中,软件构建是相对可靠的。健全测试通常是手动进行的,没有任何自动化技术,相比之下,冒烟测试可以手动进行或使用自动化工具进行。

冒烟测试的类型

为了充分理解冒烟测试的意义,有必要了解它的不同类型。

自动测试:在这种情况下,该工具会做所有必要的测试。特别是项目的最后期限很紧时,它是非常有帮助的。当一个新的构建准备部署时,开发人员可以立即用自动化测试来检查它。这个过程可以使用工具自动化,而不是依赖人工测试人员。自动化冒烟测试可以减少人力和资金投入,提高公司的生产力。如果测试不成功,在进行必要的修正后立即重新部署构建。

手动测试:手动测试要求测试人员为每个生成的产品创建、构建、更新或修改测试案例。如果你选择手动选项,你将使用人工测试员来执行冒烟测试。测试人员必须为已经存在的功能或全新的功能创建测试脚本。关键功能测试的执行应该是在向QA分发构建之后,以发现严重的系统问题。如果测试成功,功能测试继续进一步进行。如果测试失败,则放弃构建,将其送回生产团队进行修改。

混合测试:混合测试是手动和自动测试的混合。在这种情况下,测试人员必须创建他们的测试用例,并可能使用工具来实现测试的自动化。由于它结合了手动检查和工具的使用,测试的性能得到了提高。混合测试技术结合了其他两种的最实用的元素,它需要在冒烟测试程序中使用一些测试自动化,同时利用一定量的人工来评估软件。由于混合测试结合了前两者的优点,这种测试方法比其他两种方法更有优势。

冒烟测试过程

冒烟测试过程的4个步骤

为了进行冒烟测试,DevOps工程师和产品团队必须:

1.准备好测试

在执行冒烟测试之前,必须确定所需的测试案例的数量。如果不能确定确保正常功能所需的测试用例的数量,就需要推迟进度,重新计算。在成功完成构建后,但在测试应用程序之前,可能需要执行设置过程。

它可能需要启动服务器,安装许可证,设置数据库表,或将文件复制到正确的地方。人们应该在构建完成后和测试开始前完成特定的设置任务。这些活动包括设置许可证,将数据存储在不同的地方,启动服务器,以及其他相关的事情。

选择用于分析的测试案例应该是每个人的最初步骤。人们应该能够从他们选择的测试案例中清楚地了解到产品的基本功能。同时,人们应该避免使用不太重要的测试功能。进行的测试越多,结果就越可靠,越实用。

2.开发冒烟测试

接下来是制作冒烟测试程序的步骤3所需的测试套件。要做到这一点,必须准备好测试用例和测试脚本,并修改他们选择的测试方法(手动,混合,或自动)。下一步是在决定执行哪些冒烟测试后编写测试脚本。

冒烟测试应该始终使用一个脚本,通过使用单一的脚本,可以增加测试的通用性。下面的行动是编译其冒烟测试所需的文件。使用命令行,Perforce的冒烟测试工具的用户会下载许多测试文件到本地磁盘。

将必要的文件下载到本地硬盘进行冒烟测试的命令行因软件的不同而不同。

3.进行冒烟测试

下一步是在构建完成后对构建执行冒烟测试。完成后,可以继续评估结果。如果使用单一的冒烟测试脚本,会有更大的自由。应该从构建工具中启动冒烟测试。分析完成后应存储在多个构建文件中。

如果有什么功能不正常,必须通知开发人员(同时附上脚本版本)。在这种情况下,最关键的是要记住坚持前面步骤中的规则。例如,人们可能要确保他们有替代人员,以防几个人工测试人员突然取消。

当人们到达这一点时,他们应该已经为处理这些情况做了必要的准备。当然,意外事件总是有可能发生的,积极参与监测程序并留意因此而出现的问题是至关重要的。

4.改变你的方式

人们可以在构建通过冒烟测试后将产品送去进行功能和单元测试。如果测试不成功,就把它送回去进行修改。毋庸置疑,在一个开发周期中,团队会进行多次冒烟测试。因此,不要勉强将产品送回给设计者进行额外的调整。

如果研究他们的冒烟测试的结果,那么确定最终的结果是成功的还是不成功的就会更简单。例如,如果是一家SaaS公司,其软件质量的标准就需要相对较高,就像之前的情况。如果10%的测试表明是不稳定的构建,他们很可能想把它退回修改。

然而,其他开发者可能会认为同样的百分比是一个构建的稳定门槛。换句话说,必须记住,在整个分析阶段,人们必须使期望值适应需求。在冒烟测试之后,需要进行清理。

什么时候建议进行冒烟测试过程?

当一个新的程序版本在QA或暂存环境中被创建并与已经部署的版本集成时,就会进行冒烟测试。它检查是否所有的关键功能都能正确运行。开发团队部署QA构建,测试人员在删除一部分构建后对构建执行测试用例。

这组测试用例的目的是为了揭示构建中的错误。如果这些测试成功,QA团队就会转入功能测试。在任何失败的情况下,人们必须把系统交还给开发团队,如果通过了,就可以进入更多的阶段(比如被应用安全工程师测试)。

冒烟测试应该经常要做,以确保构建的稳定性,无论何时改变。一个构建包含了所有的数据集、档案、可用的模块和完成产品功能所需的技术组件。

如何使冒烟测试程序自动化?

在实际开发中,人们可以设置自动冒烟测试,以确保关键功能按预期运行。当一个新的构建准备部署时,开发人员可以立即用自动化测试来检查它。

每当一个新的软件构建准备发布时,预先录制的冒烟测试会与构建同步进行,而不是手动执行测试。一个冒烟测试套件应该包括适量的快速运行的测试,即使是完全自动化的,也是有效的和有目的的。

测试的数量应该在20到50之间,这是一个可以接受的范围。这个初步测试套件的目标可能会被太少或太多的覆盖率所击败。众多的自动化工具是现成的,多个工具供应商做出各种产品承诺。大多数著名的技术集中在基于浏览器的自动化,其中Selenium目前占据了浏览器自动化框架的首位。检查这些操作是否有错误,可以确定程序的任何问题。这些测试可能最多几天就能完成。

在对软件产品的初始发布进行这种测试时,人们应该确保他们覆盖系统的每一个区域。通过这样做,开发人员可以进行更多的冒烟测试,而不必等待整个应用程序达到稳定状态。

冒烟测试的好处

1. 更快地排除新问题和回归问题的故障

如果在冒烟测试中发现任何问题,开发团队可以更早地开始调试和进行根本原因分析,而不是等待整个测试套件的结果。这是因为冒烟测试套件有很好的覆盖面,但深度较浅。当QA继续对具有一定可行性的构建进行回归测试,同时开发人员修复冒烟测试中发现的任何缺陷时,可以实现效率的提高。一旦开发人员修复了这些缺陷,接下来开发人员可以专注于纠正QA在回归测试中发现的任何缺陷。

2. 提高测试效率

测试团队可以通过使用冒烟测试来节省精力。把精力浪费在一个几乎不能工作的充满bug的构建上是没有价值的。正因为如此,人们更愿意依靠冒烟测试来识别所有的不稳定性。开发人员可以及早消除它们,确保敏捷软件开发中每个新版本的基础是健全的、无缺陷的,而这个基础是建立在第一个版本之上的。换句话说,冒烟测试提高了核心代码的可靠性。它们也使新版本更容易集成,因为它们不太可能有重大问题。

3. 及时发现大的bug

冒烟测试最显著的好处之一是能够及早发现系统基本功能的问题。据统计,建立并运行一个有效的冒烟测试套件可以让他们发现并修复多达80%的缺陷。对于许多团队来说,冒烟测试可能只涵盖了全部测试用例的20%或更少,但他们仍然能够找到80%或更多的缺陷。仅仅因为这个原因,冒烟测试工作是值得的。

4. 减少与集成有关的威胁

冒烟测试对涉及到向已有的软件程序添加新功能的集成是有益的,这是在利用CI/CD工具和方法学时经常发生的。新的构建被用来添加这些功能,而每一个都必须首先被测试。如果测试包括冒烟测试,你就可以确定完成的集成程序的每一部分都经过了测试。

5. 节省时间和资源

冒烟测试通常需要15分钟到2小时,这取决于系统的复杂程度(最坏的情况)。冒烟测试的自动化可以减少所需的时间。如果团队能够使用冒烟测试快速有效地确定问题的原因,那么他们可以节约大量时间。

6. 自动化的潜力

通过自动化,时间和资源都可以大大节省。在完成任务和工作流程方面,机器总是比人类更快。虽然依靠人类智慧和创造力的程序不能自动化,但冒烟测试可以由基于人工智能(AI)的系统完成,这可以大大缩短测试时间。

选择自动化有很多好处。确保每次自动化的程序都按照相同的标准执行,有几个好处。因此,开发人员可以摒弃人为错误的不可预测性。还有可能增加测试的频率。

7. 适应性强

人们可以在不使用任何自动化的情况下最大限度地进行冒烟测试。这是由于该过程具有高度的灵活性和敏捷性。如果开发人员决定不使用自动化,他们仍然可以手工进行冒烟测试。正如我们在详细介绍这一策略的部分所看到的,它有自己的好处。此外,冒烟测试不仅仅局限于自动化和手工测试。

启示

冒烟测试是在软件产品开发测试用例时需要记住的关键概念之一。它不是深入到软件代码的细枝末节,而是寻找可能导致严重bug的基本问题。成功通过冒烟测试对于开发一个准备发布的软件应用程序是至关重要的。这就是为什么它必须在你的DevOps生命周期的持续集成/持续交付(CI/CD)流程中占据重要位置。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Linux文件权限

Linux文件权限 文件权限介绍 Linux文件权限有三种: 权限对应字符可读(read)r可写(write)w可执行(execute)x 文件权限身份也有三种: 权限身份对应字符文件所有者(user)u文件所有者所在组(group)g其他(other),即除了文件所有者和其所在组的…

简明误差卡尔曼滤波器(ESKF)及其推导过程

文章目录1. 简明ESKF简介ESKF基本过程及优点ESKF参数含义连续时间上的 ESKF状态方程误差状态方程推导误差状态的旋转项误差状态的速度项完整误差变量的运动学方程离散时间上的ESKF运动学方程ESKF的运动过程ESKF的更新过程ESKF的误差状态后续处理小结1. 简明ESKF 简介 本文主要…

电商新趋势:Starday拿下黑色星期五的制胜法宝是物流速度

国内电商“双十一”购物狂欢季活动已经闭幕,“双十二”又将袭来,但更多人却将眼光放在蓬勃发展的跨境电商行业中。当下跨境电商卖家们正在各大跨境电商服务平台的带领下全力备战,在“黑色星期五”期间推出各类大促活动,奋力冲刺20…

灌区量测水监测系统解决方案 灌区量测水系统解决方案 农业水价综合改革解决方案

平升电子灌区量测水监测系统解决方案/灌区量测水系统解决方案/农业水价综合改革解决方案,对灌区的渠道水位、流量、水雨情、土壤墒情、气象等信息进行监测,同时对泵站、闸门进行远程控制,对重点区域进行视频监控,实现了信息的采集…

网络面试知识

客户端与服务端的网络通信 bind函数 把一个本地协议地址和套接口绑定,比如把本机的2222端口绑定到套接口。注意:为什么在上图中客户端不需要调用bind函数?这是因为如果没有调用bind函数绑定一个端口的话,当调用connect函数时&…

Kotlin高仿微信-第18篇-单聊-删除单条信息

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

FRED应用:激光二极管的模拟

简介 当提及模拟激光二极管时,FRED软件具有极大的灵活性。在这篇应用笔记中,将会描述简单到详细的激光光源模型。最基本的模型是高斯TEM0,0模。更高级的模型包括在束腰上偏移和发散中的像散光束。激光也可以使用其M2因子表示。最后,可以创…

【TeamViewer丨远程控制软件】上海道宁助您远程访问和即时远程支持,提高远程工作团队的生产力

TeamViewer是 全面的远程访问、远程控制 及远程支持解决方案 几乎适用于所有桌面和移动平台 包括Windows、macOS、Android及iOS 开发商介绍 TeamViewer诞生于2005年,办公地点遍布全球12个国家或地区,以基于云的技术为核心,致力于在全球…

Jina AI正式将DocArray捐赠给Linux基金会

DocArray 是一个用于处理、传输和存储多模态数据的 Python 工具包。DocArray 提供便捷的多模态数据处理功能,具备基于 Protobuf 提供高性能的网络传输性能,同时也为多种向量存储方案提供统一的 API 接口。现在 Jina AI 正式将 DocArray 项目捐赠给 Linux…

JAVA助农电商商城平台毕业设计,JAVA助农销售网站系统设计与实现,毕设作品参考

功能清单 【后台管理功能模块】 系统设置:设置关于我们、联系我们、加入我们、法律声明的信息。 广告管理:设置网站首页轮播图和链接地址。 留言管理:显示用户通过前台留言的列表,支持删除。 会员中心:显示所有注册用户…

鲲鹏devkit性能分析工具介绍(四)

鲲鹏devkit性能分析工具介绍(四) 前面我们已经介绍了鲲鹏devkit性能分析工具的全景分析、热点函数分析、进程/线程分析、微架构分析、和访存分析,由此可见进行性能调优绝对不能够仅仅去进行一方面的考察而是需要全方面的数据分析进行一定的舍…

外汇天眼:经济衰退无阻加息,欧美货币政策齐收紧

美联储和欧洲央行官员在近两日发表讲话,先后释放进一步加息信号,美股、欧股事后均收跌,市场预计美元、欧元近期将下跌。 通胀仍高于目标,两大央行将进一步加息 除了非农报告等关键通胀数据,本周央行动态同样备受市场关…

软件测试 -- 进阶 5 软件测试用例

及之而后知,履之而后艰,乌有不行而能知者乎?。-- 魏源 释译:实际接触之后才知道真相,新自做了之后才知道困难,哪有不实践就能够知道的呢? 需求 -> 分析 -> 设计 -> 策略&#xff0…

大数据中Hadoop、Hive、Spark的关系

文章总括图 数据存储 单机数据库时代 所有数据在单机都能存的下,数据处理的任务都是IO密集型,更谈不上分布式系统 一个典型的2U服务器可以插6块硬盘,每块硬盘4T,共24T原始容量,再加上一些数据包的可用冗余&#xf…

A Self-Attentive model for Knowledge Tracing论文笔记和代码解析

原文链接和代码链接A Self-Attentive model for Knowledge Tracing | Papers With Code motivation:传统方法面临着处理稀疏数据时不能很好地泛化的问题。 本文提出了一种基于自注意力机制的知识追踪模型 Self Attentive Knowledge Tracing (SAKT)。其本质是用 Tra…

【博学谷学习记录】超强总结,用心分享|架构师-Spring核心组件介绍

文章目录一、Bean组件二、Context组件一、Bean组件 Bean组件定义在Spring的org.springframework.beans包下,解决了以下几个问题: 这个包下的所有类主要解决了三件事: Bean的定义 Bean的创建 Bean的解析 Spring Bean的创建是典型的工厂模式…

centos7安装字体和中文字体

文章目录1.查看自己的操作系统2. 安装字体库3.安装更新字体命令4.查看中文字体5.新建目录6.拷贝 fonts.scale 和windows上的字体到chinese文件夹中.将字体文件放在chinese目录7.授权,该目录及其下所有文件需要有执行权限8.重新建立字体索引、更新缓存9.查看字体是否…

信号包络及其提取方法(Matlab)

信号包络及其提取方法 介绍信号包络,以及信号包络的提取方法。 一、信号包络 直观地从时域来讲,信号包络就是信号波形的轮廓。 本质上,信号包络是带通信号的基带部分。 一个实带通信号记为x(t),将它频谱的中心频点搬移到零频…

数据结构初阶--栈和队列(讲解+类模板实现)

栈的概念和结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)加粗样式的原则。 入…

debug - 用Procmon记录目标程序启动后的操作

文章目录debug - 用Procmon记录目标程序启动后的操作概述笔记备注ENDdebug - 用Procmon记录目标程序启动后的操作 概述 想看看 D:\Cadence\SPB_17.4\tools\bin\Capture.exe 开始页中的recent projects 从哪里读的. 想用Procmon记录Capture.exe启动后的动作, 再记录成文本日志…