【51CTO.com快译】众所周知,在软件开发的生命周期中,开发人员往往需要修改已有代码,或将新功能引入目标系统。不过,此类更改可能会通过影响现有功能对系统造成破坏。因此,我们需要执行一系列测试,以验证新的代码对系统不会造成负面影响。这便是回归测试。
在本文中,我们将从回归测试的概念入手,讨论其实施的重要性,以及那些实现自动化测试的方法与优秀实践。
什么是回归测试?
回归测试(https://en.wikipedia.org/wiki/Regression_testing)是一种软件的测试形式,能够涵盖软件系统中的各种功能性和非功能性的元素。我们可以在执行如下操作后,通过它来发现潜在的问题或错误。
针对上述任何事件,如果采用手动的方式测试整个系统,显然既费时又费力。开发团队往往希望通过自动化测试的方式,来加快整个工作流程,以实现每修改一次代码,都能执行一系列预先开发好的测试脚本。据此,他们能够在进行连续性回归测试的同时,降低测试的总体成本,减少人为错误,并保持更高的准确性。
为何要使用自动化回归测试?
如前文所述,我们在对每个系统组件进行下一阶段开发之前,需要对其进行彻底的测试,否则就会积累所谓的技术债(technical debt)。这不仅成本高昂,而且对于开发工作流程来说也是危害极大的。
值得注意的是,错误的修复成本会在软件开发的各个阶段呈指数性增长(请参考:https://www.nist.gov/system/files/documents/director/planning/report02-3.pdf),并且会在产品发布的时候高达30倍以上。下图是此类费用随时间增加的统计图。
可见,通过在开发的早期阶段进行彻底的测试,不但可以及时地发现错误,还能够避免纠正错误所带来的高昂成本。这也正是自动化回归测试发挥作用的地方。当然,除了改进错误检测的效率,自动化回归测试还能够为开发工作、及其流程带来如下好处:
如何执行自动化回归测试?
正如执行任何其他类型的自动化软件测试一样,我们需要遵循预定义的测试路线,才能成功地完成回归测试。
正所谓“工欲善其事,必先利其器”,我们在执行自动化回归测试前,首先也是最重要的一步是:选择合适的工具。目前市场上的自动化回归测试工具林林总总,其中比较流行的包括Selenium、TestComplete、Ranorex Studio和Perfecto。
接着,我们可以按照如下四步来开展自动执行回归测试:
自动化回归测试的方法
目前,业界通常会使用如下三种方法,来执行自动化回归测试(请参见--https://ieeexplore.ieee.org/document/10189)。您该具体选择哪种方法,则完全取决于开发的优先级、代码库的大小、以及可用在测试中的资源。
此外,您还可以使用混合回归测试技术,即:先执行优先级测试,然后再运行其他必要的测试,以避免遗漏并实现全覆盖。
自动化回归测试的实例
如前所述,我们可以根据对代码库所进行的更改,来采用不同形式的回归测试。有些是在添加新的功能后执行,而有些是在修复了系统中已知错误后执行。下面,让我们来讨论回归测试的一些实际案例:
根据上述的场景,我们来讨论其中的登录验证功能,即:用户输入其登录凭据(如用户名和密码),然后单击登录按钮。其中,用于测试此功能的分步实施代码如下:
如下代码则展示了当我们对该功能性代码进行测试时,生成的具有登录功能的类:
上述代码实为手动回归测试的示例。如果我们使用诸如Perfecto之类的自动化回归测试工具,则无需对测试脚本进行硬编码。我们只需做到:首先,确定可能用到的回归测试,并记录每个测试用例的工作流程。接着,使用Perfecto仪表板对测试方案进行建模。如下图所示,我们可以让Perfecto协助将工作流程转换为测试脚本。
在工作流程准备就绪后,我们即可执行测试并捕获结果。而在完成测试之后,Perfecto将返回对应的测试通过或失败状态,并为每个执行的命令提供详细的反馈。据此,您可以相继开展分析测试结果,生成报告,以及重新测试更改等工作。
自动执行回归测试的最佳做法
在执行回归测试时,开发团队往往会碰到包括:时间与资源有限,测试时间过长,测试用例增多等各方面的挑战。为了避免“踩坑”,并能够成功地完成自动化回归测试,我在此为您罗列了如下实践建议:
希望上述实践经验能够帮助您平滑地开展回归测试,并获得预期的结果。
小结
回归测试是在减少潜在技术债,并改善软件项目维护态势的有效方法。借助自动化测试工具,开发团队不但能够简化测试的整体工作量,并且可以确保产品在交付到生产环境之前的稳定性与代码质量。
原文标题:All You Need To Know About Automating Regression Tests,作者: Dickson Mwendia
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
业务流量分担 在电商、视频直播、教育等行业中,秒杀活动、直播互动、查分报名等...
1. 接口描述 接口请求域名: vpc.tencentcloudapi.com 。 本接口(DeleteHaVip)...
作者 染陌 「北海 Kraken」是一款基于 Flutter 的 Web 渲染引擎 通过基于 W3C 标...
登录 腾讯云控制台 ,选择【云产品】【网络】【私有网络】,进入私有网络控制台...
作者 郑锴 - 阿里云高级技术专家 张晨晖 - 阿里云产品专家 最近几年数据湖热度很...
数据盘可以在购买 云服务器 的时候购买,由系统自动挂载给 云服务器 。也可以在...
一、循环结构语句 1.在我们实际生活中经常会把同一件事情重复做好几次。例如:潮...
一、分布式架构 的 优势和理念 01 传统单体架构特点 本文转载自网络,原文链接:...
用户在访问对象存储 OSS 的过程中,会产生大量的访问日志。实时日志查询功能将 O...
API网关(API Gateway)帮助用户轻松构建、管理和部署任意规模的API。其中共享版...