• 0
  • 0
分享
  • 什么是回归测试?谈谈大佬眼中的回归测试——软件测试圈
  • 恬恬圈 2022-03-24 10:59:14 字数 2371 阅读 5355 收藏 0

最近,从生产上反馈了一些产品缺陷,开发、测试一起对缺陷进行了多维度的原因分析,缺陷的逃逸是由产品生产过程中多种因素造成的,其中有部分原因是回归测试的策略选用不当。在此,我们有必要聚焦一下回归测试。

先收藏:什么是回归测试?谈谈大佬眼中的回归测试

什么是回归测试

回归测试的英文名称:Regression Testing,从字面上看,是“倒退测试”。这就表明,软件有当前状态和原来状态之分。回归测试就是对软件的原来状态重新进行功能和非功能的测试,用以确保先前开发并测试过的软件在缺陷修复、配置改变、软件更新等等这些变化之后,仍能符合要求的运行(即:软件当前状态中那些没有被修改的部分的功能和非功能与原来状态保持一致)。

这里所说的软件当前状态和原来状态的概念,可以简单的认为,每一个当前提交测试的版本就是该软件的当前状态,上一个版本就是原来状态。或者,当前基线就是当前状态,上一次基线就是原来状态。具体如何区分,可以根据管理要求来制定。

回归测试的时机

不论是基于新产品的开发还是老产品的维护升级,回归测试都是一个完整测试必不可少的一部分。通常,需要进行回归测试的时机是:

1)缺陷修复

当开发人员完成对当前状态的软件进行缺陷修复之后,并且提交新的测试版本或进行了代码基线;

2)软件更新

开发人员完成新增功能和代码重构之后,并且提交测试版本或进行了代码基线。其中,新增功能往往对应于维护类的产品,对其要进行完整的测试,即对新功能的验证测试,以及回归测试。对于代码重构,应该本着运行质量永远高于代码质量的原则慎重对待,如果一旦决定重构,则必须进行全量回归测试;

3)配置改变

出于软件参数配置灵活性以及运维高效的需要,对配置文件、脚本、批处理命令、存储过程进行修改并正式通知测试部门之后。

回归测试的技术

回归测试的技术通常有以下三种:

1)全量测试用例重复测试

对当前状态的软件进行全部测试用例的执行和结果检查。这种技术由于进行的是全量测试用例的重新执行,能将缺陷遗漏的风险降至最低水平,但是测试成本(时间成本、人力成本、财务成本)很高;

2)选择部分测试用例重复测试

与上述不同的是,只对当前状态的软件进行部分测试用例的执行和检查。这种技术的最大好处是测试成本(时间成本、人力成本、财务成本)低于全量测试用例重复测试;

3)测试用例优化

测试用例的优化技术是指,从测试用例的范围即有效和效率角度出发,优化、提取对后续软件版本或特定版本有用的测试用例(集合)。

回归测试的策略

回归测试技术用以服务于回归测试策略。通常情况下,我们在日常工作中会在以下策略中进行选择。

全量回归测试策略

在一些特殊行业,比如金融、通信行业,对生产环境中软件产品质量的要求通常是严重以上级别的逃逸缺陷是0,在此情况下,我们必须用安全系数最高、风险等级最低的策略进行回归测试,以达到质量要求。这时,我们可以采用全量测试策略,使用全量测试用例重复测试的技术进行回归测试。

全量回归测试策略可以适用任何情况,它是一种不是策略的策略,虽然有效,却不

高效。

非全量回归测试策略

实际工作中,测试用例会越来越多,工作量也会越来越大,特别是维护更新类的产品。当质量要求不变,又有上线时间以及其它条件制约时,我们会选择非全量回归测试策略,使用部分测试用例重复测试技术进行回归测试。这也是我们最常使用的策略。

这种策略的核心思想就是使用测试用例优化技术,提高测试效率,减少资源投入。

但是这种策略的漏测风险也是显而易见的,比如,测试人员对代码的相依性分析能力较弱,这很容易导致忽略了可能会发现缺陷的测试用例。为了规避这个风险,除了采用测试用例优化技术之外,还应该结合基于业务风险驱动的分析方法来进行。

总体上,测试人员需要通过与开发人员、业务人员的讨论,对被测试软件进行风险分析和操作分析,了解被测软件最重要、最频繁使用的功能,也就是了解被测试软件的业务关键度与故障可能性,然后根据这两个维度的风险分析结果采用相应的测试用例(集合)优化技术进行回归测试。

具体的,在测试行业里业务影响测试是一个公理,因此,要了解被测软件的业务关键度是首要任务。其次,软件及其中的模块都有故障可能性,这二者的相关指标及示例可以用以下二表所示:

1.jpg

表1:业务关键度指标与示例

2.jpg

3.jpg

表2:故障可能性指标与示例

通过以上二表,结合业务关键度与故障可能性评估得出被测软件功能模型的风险等级,如下表所示:

先收藏:什么是回归测试?谈谈大佬眼中的回归测试

通过上表,为非全量回归测试策略中缩减测试用例集合,集中力量做最需要的测试,提供了依据,从而降低漏测风险。当然,不论表1还是表2,其中的等级划分需要测试人员的经验积累,也需要业务人员、开发人员的有力支持。

自动化回归测试策略

由于回归测试是一个反复的过程,通常我们一提到回归测试的时候,就会考虑使用自动化的方式进行。因此,可以通过使用测试用例优化技术将提取出的测试用例进行按维护、复用、自动化的步骤进行自动化回归测试平台的建设,这种方式对维护类、升级类软件(比如:市场监察、结算系统)的回归测试可以做到即有效且高效。

但是,若要达到使用自动化回归测试策略的目的,需要专门人员进行实施,从业务流驱动、数据与用例分离、组件技术、统一的平台多维度出发进行长期建设。

我们都知道,测试不可能做到完全穷尽,但我们可以通过在软件的不同阶段采取不同的回归测试策略,减少直至避免在生产上出现严重以上级别的逃逸缺陷。当然,如果从软件生产的全生命周期入手严格进行代码与缺陷管理可以更直接的降低线上产生缺陷的风险了,毕竟回归测试也是可以用于单元测试的。


作者:Atstudy网校

原文链接:https://www.toutiao.com/article/7058127781993005572/?log_from=8a64007275655_1646895245206

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   填一份51Testing行业调查问卷吧?内含2019-2022年的技术趋势和热点。点击下方链接,不仅能帮助你更了解测试行业,还能免费获得实战课程~链接:http://vote.51testing.com/  编写测试用例是测试人员的基本功,可是在学校的时候我们好像也没有相应的课程来教我们相应的设计方法。后来我们从网上或是一些软件测试相关的书上会看到不少介绍编写测试用例的方法,如:等价类划分,边界值分析法,错误推测法,判定表法,正交实验法等,可是我们工作后这些方法好像不太好用。  曾经我面试过一个同学,在面试过程中让他写了一个登录功能的测试用例。他使用等价类划分法来编写测试用例,写的超级多,...
            0 0 1648
            分享
          •   使用背景概述:  在客户端项目中,测试同学经常需要使用VMWare虚拟机进行兼容性测试。随着操作系统从Win7到Win10的普及,笔者发现Win10自带的虚拟机Hyper-V就很好用。比如需要分别测试Win7、Win8、Win10等系统上的客户端系统,在虚拟机Hyper-V单独安装这些系统,这样既不影响本机系统软件使用,又可以完成兼容性测试工作。  对于从事Selenium分布式测试的同学也可以参考下:  1、Hyper-V安装系统要求  根据官网提示:  1).Intel或者AMD64位处理器  2).Windows Server 2008 R2及以上(服务器操作系统);  Window...
            11 11 3052
            分享
          •   踩坑一:StaleElementReferenceException  selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document  异常原因:  意思是,引用的元素已过期。原因是页面刷新了,此时当然找不到之前页面的元素,就算是后退回来的页面也是不一样的。  在编写脚本时一直报这个错,使用显示等待都不行,在一顿百度操作后才知道是元素被刷新了。  我们发现,仅仅是刷新了一下页面,...
            0 0 519
            分享
          •   关于“好的” 的定义  “好的”测试用例一定是一个完备的集合,可以覆盖所有等价类以及各种边界值,而跟它最终是否可以发现缺陷无关。  “好的”用例具备的特征  1.等价类集合的完备性  需要保证所有可能的边界值和边界条件都已经正确识别。  2.等价类划分的准确性  指的是对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。  3.整体完备性  往往一个功能点需要涉及到多个用例去覆盖方方面面,所以测试用例是一个完备的整体,是有效测试用例的集合,能完全覆盖测试需求。  最常用三种用例设计方法  1. 等价类划分方法  2. 边界值分析方法  3. 错误推测方法  如何才能设计...
            0 0 1092
            分享
          •   功能测试对于测试人员来说并不陌生,功能测试执行的大体流程是根据需求说明书设计测试用例,测试执行,测试总结。同样性能测试的执行过程也是如此。然而,功能测试与性能测试的区别在于,功能测试是单用户,性能测试是多用户,是从1到N的量变。由于无法通过手工操作模拟多用户并发,因此需要借助工具来实现用户操作被测系统某场景的动作流程,也就是编写测试脚本。那么,如何开展性能测试呢?  1、需求分析  通常开发人员会提供接口文档以及非功能需求文档。标准的接口文档中描述了接口请求地址,请求方式,参数类型以及请求报文和响应报文示例。如果接口文档中描述内容不是很清楚,测试人员可以通过抓包工具比如Fiddler,Ch...
            13 13 1663
            分享
      • 51testing软件测试圈微信