最近从生产中反馈了一些产品缺陷,结合开发和测试从多个维度分析了缺陷产生的原因。缺陷的逃逸是由生产过程中的许多因素造成的,其中一些是由于回归测试策略选择不当造成的。在这里,我们有必要重点关注回归测试。
什么是回归测试?
回归测试的英文名:Regression Testing,字面意思是“回归测试”。这说明软件有当前状态和原始状态。回归测试是对软件原始状态下的功能和非功能进行重新测试,以保证之前开发和测试的软件经过缺陷修复、配置变更、软件更新等变更后,仍然能够符合要求地运行(即软件当前状态下那些部分的功能和非功能与原始状态一致)。
这里提到的软件当前状态和原始状态的概念,可以简单的认为当前提交测试的每个版本都是软件的当前状态,之前的版本就是原始状态。或者,当前基线是当前状态,最后一个基线是原始状态。具体如何区分可以根据管理要求制定。
回归检验的时机
无论是基于新产品的开发还是旧产品的维护升级,回归测试都是一个完整测试必不可少的一部分。通常,回归测试的时机是:
1)缺陷修复
当开发人员完成当前软件的缺陷修复,并提交新的测试版本或执行代码基线时;
2)软件更新
在开发人员完成新功能和代码重构,并提交测试版本或执行代码基线之后。其中,新功能往往对应维护产品,需要进行完整的测试,即新功能的验证测试和回归测试。对于代码重构,我们应该本着运行质量永远高于代码质量的原则谨慎对待。如果我们决定重构,我们必须进行全面的回归测试。
3)配置变更
为了软件参数配置的灵活性和高效运维的需要,对配置文件、脚本、批处理命令和存储过程进行修改,并正式通知测试部门。
回归测试技术
回归测试通常有三种技术:
1)全面测试案例的重复测试
执行所有测试用例,并检查软件在当前状态下的结果。这种技术可以最大限度地降低因重新执行完整测试用例而遗漏缺陷的风险,但测试成本(时间成本、人力成本和财务成本)非常高;
2)选择一些测试用例重复测试。
与上面不同的是,对于当前状态下的软件,只执行和检查一些测试用例。该技术最大的优势是测试成本(时间成本、人力成本、财务成本)低于全测试用例的重复测试;
3)测试用例优化
测试用例优化技术是指从测试用例的范围,即有效性和效率的角度,优化提取对后续软件版本或特定版本有用的测试用例(集)。
回归测试的策略
回归测试技术是为回归测试策略服务的。通常我们在日常工作中会选择以下策略。
总体回归测试策略
在一些特殊行业,如金融、通信行业,对软件产品在生产环境中质量的要求通常是严重级别以上的逃逸缺陷为0。在这种情况下,我们必须使用安全系数最高、风险水平最低的策略来进行回归测试,以满足质量要求。这时,我们可以采用全尺寸测试的策略,使用全尺寸测试用例重复测试的技术进行回归测试。
全回归测试策略可以应用于任何情况。这是一个不是战略的战略。虽然有效,其实不然。
高效。
不完全回归测试策略
在实际工作中,测试用例会越来越多,工作量会越来越大,尤其是更新产品的维护。当质量需求不变,且有在线时间等条件时,我们会选择不完全回归测试策略,使用一些测试用例重复测试技术进行回归测试。这也是我们最常用的策略。
该策略的核心思想是利用测试用例优化技术提高测试效率,减少资源投入。
但是,这种策略的漏检风险也是显而易见的。例如,测试人员在代码依赖分析方面很弱,这容易导致忽略可能发现缺陷的测试用例。为了避免这种风险,除了使用测试用例优化技术,还应该结合业务风险驱动的分析方法。
一般来说,测试人员需要通过与开发人员和业务人员的讨论,对被测软件进行风险分析和运行分析,从而了解被测软件最重要和最常用的功能,即了解被测软件的业务关键性和失败可能性,然后根据这两个维度的风险分析结果,使用相应的测试用例(集)优化技术进行回归测试。
具体来说,业务影响测试是测试行业的一个公理,所以理解被测软件的业务关键性是首要任务。其次,软件及其模块存在失效的可能性,两者的相关指标和实例可参见以下两个表格:
表1:业务关键度指标和示例
表2:故障可能性指标和示例
通过以上两个表,结合业务关键度和失败可能性评估,得到被测软件功能模型的风险等级,如下表所示:
通过上表,为减少测试用例集和集中不完全回归测试策略中最需要的测试提供了依据,从而降低了漏测的风险。当然,无论是表1还是表2,分级都需要测试人员的经验积累和业务人员、开发人员的大力支持。
自动化回归测试策略
因为回归测试是一个迭代的过程,当我们提到回归测试时,我们通常会考虑使用自动化的方法。因此,可以利用测试用例优化技术,按照维护、复用和自动化的步骤,构建一个自动化回归测试平台,能够有效、高效地测试维护和升级软件(如市场监控和结算系统)的回归。
但要达到使用自动化回归测试策略的目的,需要专门的人员来实施,要从业务流驱动、数据与用例分离、组件技术、统一平台维度等方面进行长期建设。
我们都知道测试不可能完全穷尽,但是在软件的不同阶段采用不同的回归测试策略,可以减少甚至避免生产中出现严重的逃逸缺陷。当然,如果从软件生产的全生命周期进行严格的代码和缺陷管理,可以更直接地降低在线缺陷的风险。毕竟回归测试也可以用于单元测试。
最后:
1)关注+私信回复:“测试”,即可免费获得10G软件测试工程师面试书一本。并且相应的视频学习教程免费分享!,包括基础知识、Linux essentials、Mysql数据库、抓包工具、接口测试工具、高级测试——Python编程、Web自动化测试、APP自动化测试、接口自动化测试、高级持续集成测试、测试框架开发测试、性能测试等。
2)关注+私信回复:& # 34;加入这个团体& # 34;我可以邀请你进入软件测试群学习交流~ ~
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。