十分钟理解回归测试(Regression Testing)

回归测试是一个系统的质量控制过程,用于验证最近对软件的更改或更新是否无意中引入了新错误或对以前的功能方面产生了负面影响(比如你在家中安装了新的空调系统,发现虽然新的空调系统可以按预期工作,但是本来亮的等却不亮了)。其主要目标是确保旨在改进的修改不会破坏软件的既定性能和可靠性。回归测试是软件开发过程质量控制措施的一个重要方面。每次进行更改时,都会将其付诸实践,以确保它不会无意中导致任何功能或性能问题。

那我们为什么需要回归测试呢?

当软件开发人员修复错误、添加新功能或修改现有特性或功能时,他们必须更改程序代码。即使是微小的更改也可能导致大量新错误。在这种情况下,测试工程师可以通过回归测试来揭示和查明不良副作用。正确执行的回归测试套件至关重要。至关重要的一点是,在错误修复后原始产品不会停止工作。

回归测试是软件开发生命周期的基本组成部分。ProtoTech Solutions用这张图很好地说明了这个概念:

2. 什么时候进行回归测试

将新功能或增强功能部署到现有代码库或应用程序时,需要进行回归测试。它确保现有应用程序的任何新功能或更新都能正常工作,而不会出现任何错误或缺陷。开发人员和测试人员通常难以跟踪每个代码线程,因此很有可能出现代码不兼容问题。因此,对他们的代码库(或应用程序)执行回归测试使他们能够更早地检测到缺陷,并以更低的风险交付应用程序。

当部署花费的时间比预期的要长时,可以使用它。在这种情况下,测试人员应每天运行回归测试。此外,最好在每周发布的功能测试之后运行回归测试。

当某些功能被大修时,回归测试变得更加重要,因为它可能会危及代码库的现有功能。此外,修复一个缺陷有时会导致另一个缺陷。在这种情况下,可以混合使用调试和回归测试,以确保一切按预期工作。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

3. 回归测试的种类

根据软件开发生命周期 (SDLC) 和要部署的新功能或更新,可以实现各种类型的回归测试。但是,必须了解几种回归测试类型才能选择正确的回归测试类型。

以下是不同类型的回归测试——

纠正性回归测试

纠正性回归测试是更简单的回归测试形式之一,需要最少的工作量。纠正性回归测试不涉及对现有代码库的更改,也不涉及向应用程序添加新功能。您只需要测试现有功能和与之相关的测试用例,而不是创建新功能。

单元回归测试

单元回归测试是回归测试的一个组成部分,在回归测试中,代码是单独测试的。在执行单元回归测试时,所有其他交互、集成和依赖项都将被禁用,重点是单个单元代码。通常,此测试在低流量和非高峰时段进行。

选择性回归测试

选择性回归测试分析现有代码的影响以及新代码和现有代码的影响。变量和函数等常见元素被合并到应用程序中,以便在不影响过程的情况下快速识别结果。

渐进式回归测试

测试用例是根据渐进式回归测试的要求创建的。当只有微小的产品改进时,设计新的测试用例时不会影响产品的现有代码。

完全回归测试

一些微小或重大的更改可能会对产品产生巨大影响。在这种情况下,当对当前代码进行重大修改时,将使用完整的回归测试。它有助于修复在测试过程中所做的任何修改。

部分回归测试

将新代码添加到现有代码库时,将执行部分回归测试。这有助于发现现有代码中的关键错误,并允许在不影响系统的情况下对其进行测试。

重测所有回归测试

重新测试所有 回归测试是重新执行所有测试用例的过程,以确保没有由于应用程序中的代码更改而导致的错误。这种类型的测试需要 QA 方面付出巨大的努力。

4. 重测试和回归测试之间的区别

重测试是测试特定测试用例的持续过程,以确保错误得到修复,并且 Web 产品的功能在最终执行中运行良好。在重测试中重复同一组单元测试,以验证代码的功能。换句话说,重新测试是执行相同的手动或自动测试,以验证新版本是否完美运行。

回归测试是一种在发生任何代码提交时验证新生成的技术。在这个过程中,测试人员的工作是验证代码中没有由于软件修改和调整而包含新的错误。开发回归测试套件后,您可以使用自动化测试工具将其自动化。但是,这不适用于重测试。

以下是重测试与回归测试的详细比较

重测试回归测试
是一种确保测试用例没有错误并在错误修复后的最终执行中完美运行的技术。是一种确保代码功能在应用程序调整或修改后不受影响的技术,
是针对失败的测试用例执行的。是对通过的测试用例执行的。
确保修复构建中的原始错误。测试代码是否存在意外的副作用。
无法对测试进行自动重新测试。自动回归测试是可能的。
也称为计划测试。也称为通用测试。
由于其高优先级,它不能与回归测试并行执行。它可以与重新测试并行执行,因为它在少数实例中的优先级较低,并且资源可用性较低。
不包括 bug 验证作为测试的一部分。把错误验证作为测试的一部分。
在所有软件版本中执行。是在一些最新版本的软件中执行的。

5. 回归测试的策略

  • 再次执行所有现有测试:产品发布后,测试工程师必须再次检查问题区域。很多时候,这可能是一个挑战,尤其是在执行手动测试时。此处建议进行自动化测试。
  • 首先运行高优先级测试:在回归测试上花费的大约 50% 的时间应该用于重复与应用程序基本功能相关的测试。
  • 接下来检查复杂的功能:许多应用程序都有精密而复杂的部件,这可能会导致问题。尽管该功能很难理解,但其功能的质量必须非常出色。
  • 执行探索性测试:在学习软件版本的新功能的同时,为它们设计新的测试并执行它们。在这次测试过程中,会发现许多新的错误。
  • 借助自动化测试:提高生产力并减少运行测试所花费的时间/精力。使用自动化脚本,可以更快、更有效地执行测试。

最后,必须进行随机测试。软件测试人员扮演用户的角色并随机测试。因为总是存在一些问题,所以进行随机测试很重要。

6. 选择用于回归测试的测试用例

端到端测试对于在所有浏览器和操作系统上顺利运行应用程序至关重要。但是,据观察,在部署阶段,大量缺陷会泄漏到应用程序中。从客户的角度来看,这可能至关重要,因为它可能会增加营业额并造成糟糕的客户体验。因此,根据客户要求明智地选择测试用例至关重要。

以下是选择回归测试用例的步骤 -

  1. 选择具有频繁错误的测试用例:简单的代码提交有时会破坏应用程序的完整功能。因此,测试人员在选择涉及频繁缺陷的测试用例时应牢记这些因素。他们还可以根据他们在回归测试周期中的先验知识和经验来选择测试用例。
  2. 选择具有关键核心功能的测试用例:为确保应用程序在多个平台上顺利运行,测试人员应首先专注于选择涵盖应用程序基本关键功能的测试用例。例如,电子商务应用程序必须包括多种支付方式、网站导航、广泛的搜索功能等。
  3. 选择具有最近代码更新的测试用例:当新代码或功能合并到应用程序中时,缺陷的可能性会增加,并且必须多次修改代码。因此,确定测试用例的优先级并选择那些涉及频繁代码库调整和升级的测试用例至关重要。
  4. 根据用户界面选择测试用例:测试人员需要根据用户可见的区域来选择测试用例。用户界面的可见元素包括品牌徽标、图像、按钮文本等。然而,这些问题的优先级较低,但从用户的角度来看,它们至关重要。
  5. 选择基于集成的测试用例:端到端测试可确保应用程序在不同平台上平稳运行。在某些情况下,一个组件的功能可能依赖于另一个组件。例如,如果组件 C2 的功能依赖于 C1 并且修改了 C2,则 C1 的行为可能会受到影响。因此,对此类 bug 运行回归测试对于验证基于集成的测试方案至关重要。
  6. 选择复杂的测试用例:执行复杂的测试用例可能会导致应用崩溃和性能不佳。测试人员必须使用各种技术来测试复杂性,并确保解决所有复杂的测试场景。
  7. 合并基于风险的测试:在基于风险的测试方法中,测试人员根据最近的代码更改确定测试用例的优先级,从而减少回归时间和工作量。

回归测试用例的优先级可以分为三类——

  • 高优先级:它涵盖了应用程序的关键和核心功能、最近的代码修改以及很有可能出现错误的组件。
  • 中等优先级:它涉及现场验证和其他负面测试场景等方面。
  • 低优先级:它包括其他功能,如用户界面区域,如品牌徽标、按钮文本等。

7. 回归测试示例

以下是 Apple 网站所需的回归测试示例。该公司通过其网站产生数十亿美元的年收入。因此,他们的网站必须始终正常运行——功能、可靠且性能良好。

示例 – 特斯拉

在 apple.com的首页上,您可以看到苹果的所有产品。

当苹果发布他们的下一个产品,也许是iPhone 16时,苹果的开发人员将在网站上添加一个新条目,很可能在iPhone 15 Pro上面。但是,需要非常小心地确保:将新的 UI 流添加到主页上的新“iPhone 16”条目中后,其余的产品 UI 流仍能像以前一样继续正常工作。为此,我们执行了回归测试套件。这些回归测试用例可以手动执行,也可以使用称为 Selenium 的流行测试自动化框架自动执行。

假设其中一个回归测试失败;这意味着在添加新的产品流时,网站的现有功能中断了。此错误需要立即记录并修复。每次对网站进行次要或重大的 UI 流程添加/更改时,都应执行此回归测试套件。

同样,回归测试套件也应该得到增强,以在较新的测试用例的帮助下覆盖更多的 UI 流。这确保了网站始终正常运行;每当出现破损时,都会在回归测试套件的帮助下立即检测并标记。

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

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

应用在便携式多媒体播放器中的音频Codec芯片

便携式多媒体播放器(PMP,Portable Media Player),也就是通常人们所说的MP4。PMP的主要优点是:携带方便,能够直接播放高品质音/视频文件;也可以浏览图片,以及作为移动硬盘使用;此外,P…

无人机航拍技术基础入门,无人机拍摄的方法与技巧

一、教程描述 买了无人机,可是我不敢飞怎么办?禁飞区越来越多,到底哪儿才能飞?我的无人机跟你一样,为什么我拍不出大片?厂家的说明书看不进去,有没有一套无人机的课程,可以快速上手…

博阳精讯、凡得科技访问上海斯歌:共探BPM流程服务新高地

10月27日下午,来自博阳精讯、凡得科技的流程领域专家、领导一行参观访问了上海斯歌总部。三方举行了深度交流会谈,分享了彼此对流程领域的前沿洞察和技术实践,共同探索了BPM流程服务科技力与价值力的新高地。 本次研讨会上,博阳精…

高性能网络编程 - 解读5种I/O模型

文章目录 服务端处理网络请求流程图基础概念阻塞调用 vs 非阻塞调用同步处理 vs 异步处理阻塞、非阻塞 和 同步、异步的区别recvfrom 函数 五种I/O模型I/O模型1:阻塞式 I/O 模型(blocking I/O)I/O模型2:非阻塞式 I/O 模型(non-blocking I/O&a…

【Rust日报】2023-11-08 RustyVault -- 基于 rust 的现代秘密管理系统

RustyVault -- 基于 rust 的现代秘密管理系统 RustyVault 是一个用 Rust 编写的现代秘密管理系统。RustyVault 提供多种功能,支持多种场景,包括安全存储、云身份管理、秘密管理、Kubernetes 集成、PKI 基础设施、密码计算、传统密钥管理等。RustyVault 可…

基于MATLAB的关节型六轴机械臂轨迹规划仿真

笛卡尔空间下的轨迹规划,分为直线轨迹规划和圆弧轨迹规划,本文为笛卡尔空间下圆弧插值法的matlab仿真分析 目录 1 实验目的 2 实验内容 2.1标准D-H参数法 2.2实验中使用的Matlab函数 3 全部代码 4 仿真结果 1 实验目的 基于机器人学理论知识&…

C++二分查找算法:阶乘函数后 K 个零

涉及知识点 二分查找 数学 题目 f(x) 是 x! 末尾是 0 的数量。回想一下 x! 1 * 2 * 3 * … * x,且 0! 1 。 例如, f(3) 0 ,因为 3! 6 的末尾没有 0 ;而 f(11) 2 ,因为 11! 39916800 末端有 2 个 0 。 给定 k&a…

Go RabbitMQ简介 使用

RabbitMQ简介 RabbitMQ 是一个广泛使用的开源消息队列系统,它实现了高级消息队列协议(AMQP)标准,为分布式应用程序提供了强大的消息传递功能。RabbitMQ 是 Erlang 语言编写的,具有高度的可扩展性和可靠性,…

暴力递归转动态规划(十四)

题目 arr是面值数组,其中的值都是正数且没有重复。再给定一个正数aim。 每个值都认为是一种面值,且认为张数是无限的。 返回组成aim的最少货币数 暴力递归 依然是面值张数的问题,暴力递归尝试的过程是从数组arr index 0位置出发&#xff0c…

sql注入学习笔记

sql注入原理 掌握sql注入漏洞的原理掌握sql注入漏洞的分类 万能用户名 777 or 11 #原句 select userid from cms_users where username ".$username." and password".md5 ( $password ) ."输入过后为 select userid from cms_users where username …

GDPU 数据结构 天码行空9

实验九 哈夫曼编码 一、【实验目的】 1、理解哈夫曼树的基本概念 2、掌握哈夫曼树的构造及数据结构设计 3、掌握哈夫曼编码问题设计和实现 二、【实验内容】 1、假设用于通信的电文仅由8个字母 {a, b, c, d, e, f, g, h} 构成,它们在电文中出现的概率分别为{ 0.…

华为云,阿里云,腾讯云 安全组配置规则

1.安全组常用端口 端口服务说明21FTPFTP服务所开放的端口,用于上传、下载文件。22SSHSSH端口,用于通过命令行模式或远程连接软件(例如PuTTY、Xshell、SecureCRT等)连接Linux实例。23TelnetTelnet端口,用于Telnet远程登…

【教学类-40-04】A4骰子纸模制作4.0(4.5CM嵌套+记录表带符号)

作品展示 背景需求 骰子3.0(7字形)存在问题:6.5骰子体积大大,不适合幼儿操作(和幼儿手掌一样大,制作耗时,甩动费力) 1.0版本:边缘折线多,幼儿剪起来费力。 …

【网络编程】传输层——TCP协议

文章目录 TCP协议TCP协议格式窗口大小六个标志位确认应答机制超时重传机制连接管理机制三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协议TCP与UDP的对比 TCP相关实验CLOSE_WAIT状态实验TIME_WAIT状态实验TI…

动态规划(3)---Leetcode509.斐波那契数

题目 分析 很明显的动态规划&#xff0c;直接写出。之前都是用递归来写。 题解 class Solution {public int fib(int n) {if (n0) return 0;if (n1) return 1;int q0,p1,r0;for(int i2;i<n;i){rqp;int tmpp;pr;qtmp; }return r;}

Postgresql数据类型-时间类型

PostgreSQL对时间、日期数据类型的支持丰富而灵活&#xff0c;本节介绍PostgreSQL支持的时间、日期类型&#xff0c;及其操作符和常用函数。 PostgreSQL支持的时间、日期类型如表所示。 我们通过一个简单的例子理解这几个时间、日期数据类型&#xff0c;先来看看系统自带的now…

解决“找不到vcruntime140.dll,无法继续执行代码”错误的方法,以及解决步骤

给大家分享解决“找不到vcruntime140.dll,无法继续执行代码”错误的方法&#xff0c;以及解决步骤&#xff0c;来看看都有哪些可行性的办法解决“找不到vcruntime140.dll,无法继续执行代码”吧。 一.vcruntime140.dll的常见问题 vcruntime140.dll是Microsoft Visual Studio Re…

iis 部署 netcore 和vue 共用端口

常规情况下&#xff0c;vue 和api是分开的两个站点进行部署&#xff0c;若是要对外只有一个端口的话&#xff0c;采用以下梁总方式即可。 1.需要配置路由转发和代理开启&#xff08;vue 使用hisoty模式&#xff09; 参考链接.netCore vue&#xff08;history模式&#xff0…

如何批量下载iconfont图标库

如何批量下载iconfont中svg图 原文链接&#xff1a; https://gitee.com/veigarchen/iconfont-download 1、下载插件到本地 2、将解压的文件添加到浏览器扩展中 3、按需下载自己的图标

华为Auth-Http Serve任意文件读取

1.漏洞描述 华为Auth-Http Server 1.0任意文件读取&#xff0c;攻击者可通过该漏洞读取任意文件。 2.网络资产查找 FOFA&#xff1a;server”Huawei Auth-Http Server 1.0” 2、部分界面如下 3、Poc /umweb/shadow 4、Poc批量验证 id: huanwei-auth-http-server-filereadi…