了解回归测试的作用
Posted 测试界的飘柔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解回归测试的作用相关的知识,希望对你有一定的参考价值。
回归测试是一个在软件产品频繁修改时保持其质量的过程。回归测试被定义为一种软件测试技术,它重新运行功能和非功能测试,以确保软件应用程序在任何代码变化、更新、修订、改进或优化后按预期运行。
一、什么是回归测试?
回归测试是指一种软件测试技术,重新运行非功能和功能测试,以确保软件应用程序在任何代码变化、更新、修订、改进或优化后能按预期运行。它是软件开发周期的一个组成部分,因为它允许开发人员检测应用程序中可能由于调整、增强或扩展现有代码库而出现的意外故障。
回归测试通过对现有功能的检查,为软件应用提供整体的稳定性。它是每一个新的代码修改后不可避免的步骤,确保系统可以维持和承受频繁的改进。
从技术上讲,代码修改可能会导致依赖关系的改变,从而导致软件的缺陷或故障。回归测试是为了最大限度地减少这种风险而设置的。它使专业人员能够验证在引入新的功能或代码变化时,先前开发和测试的代码是否能保持运行。
通常情况下,任何软件应用程序在变化成为开发包的一部分之前都要经过一系列的测试。在这些多次测试中,回归测试构成了最后一步,负责对产品的行为进行全面评判。
此外,快速回归测试过程允许产品开发收到信息反馈,可以立即响应,并允许即时修改软件代码。通过回归测试,人们可以在软件开发周期的早期阶段(如敏捷软件开发)发现错误,从而使企业在解决积累的缺陷所需的时间和成本方面免于投入维护工作。
据观察,最轻微的代码修改都会引起多米诺骨牌效应,改变产品的主要功能。因此,回归测试对于确定产品成功或失败,起着至关重要的作用。
让我们考虑一个简单的例子,一家开发视频会议平台的软件公司。该公司必须确保软件平台或产品的第一个版本包括基本的核心功能。在发布第一个版本的同时,该公司进行回归测试,包括1000个测试案例。这种做法验证了该平台是否具有基本的会议功能。在成功通过测试后,该产品就可以在市场上推出了。
随着产品的第一个版本在视频会议平台领域获得普及,用户对额外功能的需求也在增长。因此,业务团队了解并收集了用户需求,并提出了对新功能的要求,可以在软件的高级版本中发布。产品开发团队遵循指示,在现有产品中增加新的功能。
在添加新功能时,回归测试再次变得至关重要。在这里,要运行几百个(比如100个)测试案例来验证新添加的功能是否正常。然而,关键是要考虑到已经进行的1000个测试用例需要重新运行,以确保上一版本的关键功能不会因为增加新功能而受到影响、冲击或破坏。
简而言之,这就是回归测试的运作方式。虽然它很乏味,但它能有效地识别偶尔出现的关键错误或问题。一般来说,回归测试在以下情况下使用:
- 一个新的需求被添加到现有的产品功能中
- 一个全新的功能或特性被添加到产品中
- 优化了代码库以提高性能
- 增加了补丁修复
- 配置改变
二、如何进行回归测试?
每个组织的回归测试策略都不同。然而,大多数人所遵循的一些基本步骤包括:
图注:回归测试过程
第一步:识别源代码中的变化
在这一步中,识别源代码的变化(修改和优化)。接下来,还要检测变化的组件以及所有这些对产品现有基本功能的影响。
第二步:对确定的变化和产品需求进行优先排序
在接下来的步骤中,所有确定的产品需求和代码修改都会通过调整测试计划和测试用例来进行优先排序。
第三步:选择要重新运行的测试案例
接下来,要重新运行的测试用例是根据源代码修改的模块来选择的。在这里,人们不需要测试整个测试套件。测试用例选择后,测试用例被分为可重用和过时的测试用例,其中可重用的测试用例被列入回归测试的短名单。相反,过时的测试用例则不用于未来的测试周期。
第四步:考虑测试场景以确定测试用例的执行时间
测试用例的变量,如测试数据准备,回归测试设计等,被评估以确定它们如何影响测试用例的执行时间。
第五步:对自动和手动测试案例进行分类
这一步将测试用例分为自动和手动的。自动测试用例比人工管理的用例要快。此外,人们可以在自动情况下多次重复使用测试代码。因此,对测试用例进行分类是回归测试的一个关键步骤。
第六步:对测试案例进行优先排序
在这一步,收集的测试用例根据其重要性(高、中、低)进行排序。在评估中,紧急的测试用例被赋予优先权,其次是那些中等和低重要性的测试用例。基本上,优先级的分配是基于产品的效用和用户的参与。
优先级的分配是基于以下标准:
- 优先级0:重要的测试用例,涵盖所有基本功能
- 优先级1:不属于基本类别但有一定重要性的功能
- 优先级2:处理技术复杂问题的测试用例
第七步:安排和执行测试案例
在最后一步,每个测试用例都在一个适当的、预定的时间进行,以验证产品的功能是否符合预期。在这里,根据需要和要求,可以采用自动或手动测试。
三、回归测试技术
回归测试是通过采用四种基本的实施技术来实现的:重测一切,选择回归测试,确定测试用例的优先级,以及混合策略。
图注:回归测试技术
具体来说:
1. 全部重新测试
当对软件应用程序的主代码或根代码进行多次更新或修改时,这种方法在每个现有的测试套件中应用回归测试。这种技术是识别和解决所有bug的关键;然而,它是耗时和资源密集型的。因此,这种方法是通过考虑上下文来实现的。例如,当一个应用程序被转移到一个新的平台上,或者当有一个更新来修复O.S.中的一个主要错误时,完全回归是首选。
2. 回归测试的选择
在这种技术中,你可以选择需要进行回归测试的部分。相关部分的选择是基于代码变更对应用程序的影响的范围。此外,通过这种方法,选取有限的测试用例,减少了回归测试所需的精力、资源和时间。
3. 测试用例的优先级
这种回归测试技术允许你选择在测试过程中应该优先考虑的测试案例。测试用例的选择基于几个因素,如最常用的功能,功能失败率,以及某些功能的商业影响。更重要的是,新加入的功能和以客户为中心的功能被认为是最优先的测试案例。
4. 混合策略
这种回归测试方法结合了前两种技术的原则:测试用例的优先级和选择性的回归测试可以根据具体要求和需要来运行测试案例。这样的动态风格在测试应用程序时可以节省精力和时间。
纠正性回归测试:纠正性测试用于对源代码没有进行修改或更新的情况。在这里,由于你打算验证当前功能的运作,你可以重新使用现有的测试案例。
渐进式回归测试:当引入新的系统组件,需要开发新的测试环境或测试用例时,就会采用渐进式测试。这种类型有助于确定更新或变化是否影响现有组件。
选择性回归测试:选择性测试适用于只有选定的组件必须重新测试时,从而节省整个系统所需的时间和资源。
局部回归测试:当对应用程序的现有源代码进行修改时,采用部分测试来确保新的代码没有影响或破坏应用程序的整体性能。
完全回归测试:当多个更新被引入根代码时,整个测试类型被应用于整个软件结构。这种详尽的测试类别通常在产品发布前使用。
重测-全部回归测试:这种回归测试类型是一种全面的方法,通过使用所有以前的测试案例与最后的测试结果进行比较,重新执行每一个测试场景。它还确保新的源代码修改不会导致整个应用功能的问题。
单元回归测试:在单元测试中,代码单元被隔离和测试,不影响它们的依赖关系,从而促进独立的代码测试。
总结
回归测试对于提高软件产品的质量和增强终端用户的体验至关重要,因为它可以确保代码的改变不影响旧的或现有的产品功能,能更好地控制在提高软件产品的质量上投入的费用、精力、资源和时间。
资源分享
下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】
软件测试之回归测试
回归测试的定义:
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
1.回归测试是指重复以前的全部或部分的相同测试。
2.新加入测试的模组,可能对其他模组产生副作用,故须进行某些程度的回归测试。
3.回归测试的重心,以关键性模组为核心。
回归测试的好处:
自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。
回归测试的存在意义:
在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。
回归测试的需求:
对于一个软件开发项目来说,项目的测试组在实施测试的过程中会将所开发的测试用例保存到“测试用例库”中,并对其进行维护和管理。当得到一个软件的基线版本时,用于基线版本测试的所有测试用例就形成了基线测试用例库。在需要进行回归测试的时候,就可以根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测试。保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可能是测试用例的手工实现过程。
测试用例的选择:
对于一个软件开发项目来说,项目的测试组在实施测试的过程中会将所开发的测试用例保存到“测试用例库”中,并对其进行维护和管理。当得到一个软件的基线版本时,用于基线版本测试的所有测试用例就形成了基线测试用例库。在需要进行回归测试的时候,就可以根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测试。保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可能是测试用例的手工实现过程。
测试用例的维护是一个不间断的过程,通常可以将软件开发的基线作为基准,维护的主要内容包括下述几个方面。
(1)、删除过时的测试用例
因为需求的改变等原因可能会使一个基线测试用例不再适合被测试系统,这些测试用例就会过时。例如,某个变量的界限发生了改变,原来针对边界值的测试就无法完成对新边界测试。所以,在软件的每次修改后都应进行相应的过时测试用例的删除。
(2)、改进不受控制的测试用例
随着软件项目的进展,测试用例库中的用例会不断增加,其中会出现一些对输入或运行状态十分敏感的测试用例。这些测试不容易重复且结果难以控制,会影响回归测试的效率,需要进行改进,使其达到可重复和可控制的要求。
(3)、删除冗余的测试用例
如果存在两个或者更多个测试用例针对一组相同的输入和输出进行测试,那么这些测试用例是冗余的。冗余测试用例的存在降低了回归测试的效率。所以需要定期的整理测试用例库,并将冗余的用例删除掉。
(4)、增添新的测试用例
如果某个程序段、构件或关键的接口在现有的测试中没有被测试,那么应该开发新测试用例重新对其进行测试。并将新开发的测试用例合并到基线测试包中。
通过对测试用例库的维护不仅改善了测试用例的可用性,而且也提高了测试库的可信性,同时还可以将一个基线测试用例库的效率和效用保持在一个较高的级别上。
选择回归测试应该兼顾效率和有效性两个方面。常用的选择回归测试的方式包括:
(1)、再测试全部用例
选择基线测试用例库中的全部测试用例组成回归测试包,这是一种比较安全的方法,再测试全部用例具有最低的遗漏回归错误的风险,但测试成本最高。全部再测试几乎可以应用到任何情况下,基本上不需要进行分析和重新开发,但是,随着开发工作的进展,测试用例不断增多,重复原先所有的测试将带来很大的工作量,往往超出了我们的预算和进度。
(2)、基于风险选择测试
可以基于一定的风险标准来从基线测试用例库中选择回归测试包。首先运行最重要的、关键的和可疑的测试,而跳过那些非关键的、优先级别低的或者高稳定的测试用例,这些用例即便可能测试到缺陷,这些缺陷的严重性也仅有三级或四级。一般而言,测试从主要特征到次要特征。
(3)、基于操作剖面选择测试
如果基线测试用例库的测试用例是基于软件操作剖面开发的,测试用例的分布情况反映了系统的实际使用情况。回归测试所使用的测试用例个数可以由测试预算确定,回归测试可以优先选择那些针对最重要或最频繁使用功能的测试用例,释放和缓解最高级别的风险,有助于尽早发现那些对可靠性有最大影响的故障。这种方法可以在一个给定的预算下最有效的提高系统可靠性,但实施起来有一定的难度。
(4)、再测试修改的部分
当测试者对修改的局部化有足够的信心时,可以通过相依性分析识别软件的修改情况并分析修改的影响,将回归测试局限于被改变的模块和它的接口上。通常,一个回归错误一定涉及一个新的、修改的或删除的代码段。在允许的条件下,回归测试尽可能覆盖受到影响的部分。
回归测试的基本过程:
(1). 识别出软件中被修改的部分;
(2). 从原基线测试用例库T中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例,其结果是建立一个新的基线测试用例库T0。
(3). 依据一定的策略从T0中选择测试用例测试被修改的软件。
(4). 如果必要,生成新的测试用例集T1,用于测试T0无法充分测试的软件部分。
(5). 用T1执行修改后的软件。
以上是关于了解回归测试的作用的主要内容,如果未能解决你的问题,请参考以下文章