回归测试概念和4种回归测试策略——你想知道的都在这里啦!

news2024/11/19 6:44:17

前言:

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。

正文:

一.回归测试策略的概念

在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模块。当软件中所含错误被发现时,如果错误跟踪与管理系统不够完善,就可能会遗漏对这些错误的修改;而开发者对错误理解的不够透彻,也可能导致所做的修改只修正了错误的外在表现,而没有修复错误本身,从而造成修改失败;修改还有可能产生副作用从而导致软件未被修改的部分产生新的问题,使本来工作正常的功能产生错误。同样,在有新代码加入软件的时候,除了新加入的代码中有可能含有错误外,新代码还有可能对原有的代码带来影响。因此,每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试新的或被修改了的功能。为了验证修改的正确性及其影响就需要进行回归测试。

回归测试在软件生命周期中扮演着重要的角色,因忽视回归测试而造成严重后果的例子不计其数,导致阿里亚娜5型火箭发射失败的软件缺陷就是由于复用的代码没有经过充分的回归测试造成的。

回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代中回归测试更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。

二.回归测试的策略:

回归测试策略通常有四种:全面回归测试、选择性回归测试、指标法回归测试和自动化工具回归测试。

1、全面回归测试

全面回归测试是指不管发现多少个问题,也不管哪些功能有问题,哪些功能没有问题,都进行测试。全面回归测试的优点是对所有功能进行验证,尽最大可能保证系统没有问题,但是这样同样带来一个很重要的问题,就是如果进行全面回归测试,那么测试的成本就会大大提高,并且从测试心理学角度来说,测试工程师是不可能全面回归测试的,即使给你足够的测试时间,也不可能全面回归。前面我们谈到测试心理学,关于测试心态的两种情况,在我们回归测试时,随着测试的不断迭代,我们测试的心理会发生变化,后面测试时我们更多的是这种心态:“测试是为了证明系统不存在问题。”这就决定着我们不可能对所有测试用例进行验证,很可能是只挑选了一部分用例进行验证测试。

2、选择性回归测试

选择性回归测试是指,在回归测试时我们只对出现问题的这些功能进行验证,没有出现问题的功能就不进行测试。例如,一个系统一共有20 个功能点,第一轮测试时,发现10个BUG,这10个BUG是测试其中8个功能点发现的,那么选择性回归测试就只对这8个功能进行回归测试。但这样存在一个问题,在修改某个BUG时,如果修改了A函数,而这个A函数又被其他的功能所调用(假设是F1功能,这个F1功能在上一轮测试中是正确的),这个时候就不能仅仅验证存在问题的8个功能,还应该验证F1功能是否正确,即除了验证这些BUG外,还要关注那些可能影响到的模块。但是这里又存在一个问题,测试工程师如何知道哪些功能可能会受到影响呢?所以这就需要开发工程师在修复BUG时写清楚,当前这个BUG是由什么原因引起的,这个问题是如何修改的以及可能产生的影响,所以选择性回归测试除了需要验证当前的问题外,还要验证修改的这些问题可能对其他功能带来的影响。

3、指标法回归测试

指标法回归测试是指每次回归测试一定比例的测试用例,例如用例库一共是500条用例,每次回归测试时只回归验证其中60%的用例,这个方法是不可取的,因为没有规定回归哪60%的用例,这样可能出现测试工程师故意回归一些不相关的测试用例,因此质量无法保证。

4、自动化工具回归测试

自动化工具回归测试是指使用自动化测试工具进行回归测试,前面我们介绍过从理论的角度来说,其实不管修改了哪些功能,都应该对所有的功能进行回归测试。但是当我们进行全面回归测试时,由于时间成本和测试心态变化的因素,其实我们是无法保证有能力全面回归测试的,这个时候就可以使用自动化测试工具来代替我们手工回归测试,这样既可以解决测试成本的问题,又可以解决测试过程中测试工程师的心态问题。目前,在国内自动化测试还是处于初步阶段,未来自动化测试一定会成为一个发展趋势。

回归测试在整个测试过程中都存在,而不只是存在于某个阶段,因为不管是单元测试、集成测试还是系统测试,只要在测试过程中发现系统存在BUG,就需要对BUG进行修改,而修改完成后就需要进行回归测试来验证是否将该BUG修改好。

写在最后:

忙的时候虽然累,但是忙完了会特别畅快舒服;闲的时候虽然爽,但是闲的时间长了心就慌了。你迷茫的原因往往只有一个,那就是在本该拼命去努力的年纪,想得太多,做得太少。

所以朋友们确定目标,不忘初心,勇往直前,相信最后一定可以开出一朵属于自己的花儿来,加油。
 

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

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

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

相关文章

Tomcat源码:Acceptor与Poller、PollerEvent

参考资料: 《Tomcat源码解析系列(十一)ProtocolHandler》 《Tomcat源码解析系列(十二)NioEndpoint》 前文: 《Tomcat源码:启动类Bootstrap与Catalina的加载》 《Tomcat源码:容器…

绝对不能错过的7个零基础免费的ChatGPT镜像网站

还在为打不开openai官网烦心?本文帮你实现ChatGPTMidJourney自由( ̄∇ ̄)/ 📒收集了一些截至目前(2023年5月25日午12:00)可以免费访问,并且零基础也能正常使用的镜像网站,后续将持续维护更新(。&a…

(2)lordPE脱壳

1.寻找OEP 1.1第一种情况 1.修改OD选项,调试设置"事件"为系统断点,直接打开"查看"->"内存",设置00400000下F2断点,单步F8找到0040****开头的OEP例如:00401528 1.2第二种情况 进入od后如果直…

Github疯传!200本经典计算机书籍!

好书在精不在多,每一本经典书籍都值得反复翻阅,温故而知新! 下面分享几本计算机经典书籍,都是我自己看过的。 重构 改善既有代码的设计 就像豆瓣评论所说的,看后有种醍醐灌顶、欲罢不能的感觉。无论你是初学者&#…

数据结构与算法02:数组和链表

目录 【数组】 为什么Go语言的切片是成倍扩容? 【链表】 单链表 循环链表 双向链表 双向循环链表 数组和链表如何选择? 如何使用链表实现 LRU 缓存淘汰算法? 链表的一些操作 【每日一练】 【数组】 数组(Array&#…

JMeter参数化四种实现方式

1 参数化释义 什么是参数化?从字面上去理解的话,就是事先准备好数据(广义上来说,可以是具体的数据值,也可以是数据生成规则),而非在脚本中写死,脚本执行时从准备好的数据中取值。 参…

Sentinel热点key

1.基本介绍 官方文档 何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如: 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制用户 ID 为参数&…

HyDE、UDAPDR(LLM大模型用于信息检索)

本篇博文继续整理LLM在搜索推荐领域的应用,往期文章请往博主主页查看更多。 Precise Zero-Shot Dense Retrieval without Relevance Labels 这篇文章主要做zero-shot场景下的稠密检索,通过借助LLM的力量不需要Relevance Labels,开箱即用。作…

【数据结构】---几分钟简单几步学会手撕链式二叉树(上)

文章目录 前言🌟一、二叉树链式结构的实现🌏1.1 前置说明💫快速创建一棵简单的二叉树 🌏1.2 二叉树的遍历的时间、空间复杂度🌏1.3 二叉树的遍历💫1.3.1 前序、中序以及后序遍历:💫1…

深入理解hashmap底层实现原理

目录 总体介绍 HashMap元素的存储 在hashmap中添加元素 HashMap的扩容机制 HashMap的线程安全性 1.添加和删除元素时存在不安全性 2.进行扩容操作时存在不安全性 3.哈希冲突存在不安全性 4.线程之间的不可见性导致安全问题 总体介绍 HashMap是我们用于元素映射使用频率最…

MySQL——子查询

来一篇 MySQL-子查询 记录一下这个美好的时光,学习记录篇,下文中所有SQL 语句 均可在 MySQL DB 学习Demo 此处下载SQL语句执行,有相关DB 与 表。 1. 需求分析与问题解决 1.1 实际问题 现有解决方式一: SELECT salary FROM employees WHERE last_name = Abel SELECT last…

【算法】【算法杂谈】旋转数组的二分法查找

aTOC 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介绍 原问题 给定一个从小到大有序的数组,该数组存在重复的数&#xf…

【数据安全-02】AI打假利器数字水印,及java+opencv实现

AIGC 的火爆引燃了数字水印,说实话数字水印并不是一项新的技术,但是这时候某些公司拿出来宣传一下特别应景,相应股票蹭蹭地涨。数字水印是什么呢,顾名思义,和我们在pdf中打的水印作用差不多,起到明确版权、…

【拒绝爆零】C++编程考试常见栽区

前言 在OI赛制中,我们可能会因为一些细节原因导致题目爆零。下面,是我列举的一些常见的坑: 1.极值未赋值 这个错误在运行时就能检查出来,但还是会浪费一定的时间,所以我们还是避开这些小插曲为好。 2.定义变量遇到…

利用无代码工具开发一款小程序

目录 无代码工具开发小程序的流程需求分析阶段模型设计阶段页面搭建阶段创建项目创建数据表组件搭建 预览发布总结 日常我们开发小程序的时候都是要从写代码开始,但是写代码这个事只有专业开发才可以干,那作为普通人,如果也希望开发小程序&am…

前端小工具:批量修改图片信息

前端小工具一:批量修改文件夹里面的图片名称 步骤: 1.安装nodejs。 2.根据需要修改editFileName(filePath, formatName)函数的参数,也可以不改,直接将renameFile.js和img文件夹放在同一个目录下。 3.在renameFile.js目录下开启…

Linux:ext文件系统配额

1. 创建三个用户test1 test2 test3 2. 创建一个组 test_23 3. 把 test2 和 test3 加入test_23组 首先要有quota这个软件 如果没有用yum安装 yum -y install quota 如果不会搭建yum Linux:rpm查询安装 && yum安装_鲍海超-GNUBHCkalitarro的博客…

计算机组成原理-存储系统-缓存存储器(Cache)

目录 一、Cache基本概念 1.2性能分析 二、 Cache和主存的映射发生 ​​​​​​2.1全相连映射​编辑 2.2直接映射​编辑 2.3组相连映射 三、Cachae的替换算法 3.1 随机算法(RADN) 3.2 先进先出算法(FIFO) 3.3 近期最少使用(LRU) 3.4 最近不经常使用(LFU) 四、写策略 4…

kali安装ARL灯塔过程

(一)安装docker环境 1、检查是否存在docker环境 docker 2、如果没有docker,就先安装docker apt install docker.io 出现 unable to locate package docker.io这些,这是因为没有跟新 输入跟新命令: apt-get update 在…

把ChatGPT的所有插件整理成中文后!真要说卧槽了..

大家好,我是五竹。 ChatGPT如约向用户开放了联网功能和众多插件,五竹从上周开始满怀着热情等待着,看别人的测评效果都快把我羡慕哭了。最终等来的却是Plus账号给封了,而且至今也没有续上,只能说非常无奈。算了&#x…