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

news/2024/5/19 5:27:37/文章来源:https://blog.csdn.net/m0_67695717/article/details/128115472

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

冒烟测试(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.luyixian.cn/news_show_227969.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业日常公关如何抵御负面信息的入侵?

如今,互联网时代信息传播速度极快,这使得宣传工作效率倍增,也给企业舆情管理带来一定的挑战。舆情优化搞得好,企业宣传工作事半功倍,网络舆论走向负面的话,则对宣传工作非常不利,会导致推广效果…

狂神说Go语言学习笔记(一)

一、Go语言的发展史 二、Go语言能做什么 三、Go语言环境安装 下载地址 国外网站太慢,我们使用中文网进行下载! Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com) 安装 无脑下一步就完了 ,注意下这里创建自己设置一个Go语言的环…

比搞笑诺奖还离谱,看完国产AIGC最新创作,把我给整不会了

杨净 萧箫 发自 凹非寺量子位 | 公众号 QbitAI现在,AI生成的东西,“真实”得都让我有点害怕了——只是给出《马斯克获得诺贝尔物理学奖》这个标题,AI竟然就刷刷刷几下,蹦出了一整套大纲来?!如果让AI生成一些…

计算机网络——分层结构,协议接口,服务

分层结构 主机进行资源共享时需满足以下条件: (1)发起通信的计算机要将数据通路进行激活 (2)告诉网络如何识别主机 (3)发起通信的主机要查明目的主机是否开机等 (4)发起…

【Linux】权限讲解

一、什么是权限 1、权限概念 权限随处可见,在生活中,腾讯非VIP用户不能观看VIP视频,看小说也需要会员,所以权限是限制人的,一件事是否允许被谁做。在Linux系统中也有许多权限,访问文件需要权限&#xff0c…

Windows OpenGL 图像色彩替换

目录 一.OpenGL 图像色彩替换 1.原始图片2.效果演示 二.OpenGL 图像色彩替换源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL…

[附源码]Python计算机毕业设计Django的实验填报管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

FastDFS文件上传

分布式文件存储-FastDFS 介绍 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 FastDFS体系结构 FastD…

基于改进粒子群算法的微电网多目标优化调度(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

62 - 单例类模板

---- 整理自狄泰软件唐佐林老师课程 1. 单例模式 1.1 需求的提出 在架构设计时,某些类 在整个系统生命期中 最多只能有一个对象存在(Single Instance) 1.1.1 问题 如何定义一个类,使得这个类最多只能创建一个对象?…

模拟电路设计(35)---几种脉宽调制型开关电路

Forward单端正激变换器 在buck变换器开关与负载之间插入隔离变压器,这种隔离型buck变换器叫做Forward单端正激变换器。如下图所示: Forward单端正激变换器 简单分析可知,滤波电感L在开关管关断期间,通过续流二极管为负载提供电流…

【手把手】教你玩转SpringCloud Alibaba之Nacos Config深入

1、不同环境相同配置问题-自定义Data ID配置 在实际的开发过程中,项目所用到的配置参数有的时候并不需要根据不同的环境进行区分,生产、测试、开发环境所用到的参数值是相同的。怎么解决同一服务在多环境中,引用相同的配置的问题&#xff1f…

Flutter 离线数据方案 Flutter_Data 包

Flutter 离线数据方案 Flutter_Data 包 原文 https://levelup.gitconnected.com/flutter-offline-first-with-flutter-data-62bad61097be 前言 通过离线优先来改善您的用户体验 Flutter Data 是一个让你的应用程序先离线的软件包。 离线时,它在设备上使用 Hive 存储…

H2N-Hyp-FF-OH, 2493080-84-3

Hyp-Phe-Phe 是一种三肽,通过 Phe 环的芳香相互作用形成螺旋状的薄片,构成一个交叉螺旋结构。Hyp-Phe-Phe 具有很高的剪切压电特性,可作为一种压电材料。Hyp-Phe-Phe is a tripeptide that forms helical-like sheets via aromatic interacti…

天翎知识文档系统+群晖NAS,助力企业实现移动化学习

编者按:移动化学习成为一种社会发展趋势,本文分析了企业移动化学习的意义,并提出了企业移动化学习的一款全新解决方案——天翎知识文档系统群晖NAS。 关键词:多端适配,学习培训,智能问答,在线预…

计算机内存与外存的区别及使用配合(内存外存区别与搭配;快速缓存;计算机总线结构)

计算机系统结构1. 为什么计算机存储会分为内存和外存呢?2. 关于快速缓存3. 计算机总线结构1. 为什么计算机存储会分为内存和外存呢? 外部储存器断电可以存储数据,但是读写速度相对于cpu来说很慢,而内存虽然读取速度很快但是断电之…

微服务框架 SpringCloud微服务架构 6 Nacos 配置管理 6.1 Nacos 实现配置管理

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构6 Nacos 配置管理6.1 Nacos 实现配置管理6.1.1 统一配置管理6.1.2 直接开干…

SpringBoot中如何实现业务校验,这种方式才叫优雅!

大家好,在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验: 参数校验 业务规则校验 首先我们先看看参数校验。 参数校验 参数校验很好理解,比如登录的时候需要校验用户名密码是否为…

路径规划算法之刚体变换

目录 1 一般概念 1.1 基元的变换 1.2 一个参数化的变换族 2 2D变换 2.1 translation 2.2 rotation 2.3 Combining translation and rotation 3 3D变换 3.1 Yaw, pitch, and roll rotations 3.2 Determining yaw, pitch, and roll from a rotation matrix 3.3 The ho…

PyQt5 窗口数据传递

PyQt5 窗口数据传递单一窗口数据传递多窗口数据传递:调用属性多窗口数据传递:信号与槽开发应用程序时,若只有一个窗口则只需关心这个窗口里面的各控件之间如何传递数据。如果程序有多个窗口,就要关心不同的窗口之间是如何传递数据…