我的编程空间,编程开发者的网络收藏夹
学习永远不晚

自动化回归测试全接触:概念、方法和实践

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

自动化回归测试全接触:概念、方法和实践

在本文中,我们将从回归测试的概念入手,讨论其实施的重要性,以及那些实现自动化测试的方法与优秀实践。

什么是回归测试?

回归测试(https://en.wikipedia.org/wiki/Regression_testing)是一种软件的测试形式,能够涵盖软件系统中的各种功能性和非功能性的元素。我们可以在执行如下操作后,通过它来发现潜在的问题或错误。

  • 部署新的功能
  • 添加新的模块
  • 修复现有缺陷
  • 重构程序代码
  • 更改系统配置
  • 改善应用程序的性能

针对上述任何事件,如果采用手动的方式测试整个系统,显然既费时又费力。开发团队往往希望通过自动化测试的方式,来加快整个工作流程,以实现每修改一次代码,都能执行一系列预先开发好的测试脚本。据此,他们能够在进行连续性回归测试的同时,降低测试的总体成本,减少人为错误,并保持更高的准确性。

为何要使用自动化回归测试?

如前文所述,我们在对每个系统组件进行下一阶段开发之前,需要对其进行彻底的测试,否则就会积累所谓的技术债(technical debt)。这不仅成本高昂,而且对于开发工作流程来说也是危害极大的。

值得注意的是,错误的修复成本会在软件开发的各个阶段呈指数性增长(请参考:https://www.nist.gov/system/files/documents/director/planning/report02-3.pdf),并且会在产品发布的时候高达30倍以上。下图是此类费用随时间增加的统计图。

可见,通过在开发的早期阶段进行彻底的测试,不但可以及时地发现错误,还能够避免纠正错误所带来的高昂成本。这也正是自动化回归测试发挥作用的地方。当然,除了改进错误检测的效率,自动化回归测试还能够为开发工作、及其流程带来如下好处:

  • 更高的测试覆盖范围 - 自动化能够让我们通过运行更多的回归测试,来检查系统的各个方面。显然,这是手动回归测试所无法达到的彻底水平。
  • 更高的测试投资回报率 - 尽管自动化测试有时会引发更高的初期投资,但是从长远来看,由于软件开发和维护是一个连续性的过程,因此自动化回归测试往往可以在可预见的将来,为团队节省大量的时间与金钱,并能收获更大的回报。
  • 更少的人力成本 - 使用自动化测试平台时,团队只需一名QA(质量检测)工程师即可测试脚本。相反,手动回归测试将需要数名专业人员,才能达到相似的效果。因此,自动化大幅减少了回归测试所需的总体时间和人力成本。
  • 增强的稳定性 - 手动回归测试的结果,往往取决于团队中QA专家的专业知识和测试方法。而自动化却能够确保用相同的专业技术,来测试整个系统的方方面面。
  • 重复性 - 自动化回归测试可以按需随时执行,而无需顾及QA团队是否有时间和精力。而手动测试则需要为每个新项目配备足够的QA人员。

如何执行自动化回归测试?

正如执行任何其他类型的自动化软件测试一样,我们需要遵循预定义的测试路线,才能成功地完成回归测试。

正所谓“工欲善其事,必先利其器”,我们在执行自动化回归测试前,首先也是最重要的一步是:选择合适的工具。目前市场上的自动化回归测试工具林林总总,其中比较流行的包括SeleniumTestCompleteRanorex StudioPerfecto

接着,我们可以按照如下四步来开展自动执行回归测试:

  • 发现和计划 - 首先概述产品将要发布的范围,确定哪些测试用例可能会被包含在回归测试的套件中。
  • 设计和开发 – 在确定测试项目需包含的所有任务后,开始为每个测试用例编写自动化的脚本。
  • 测试执行 – 运行测试,并在执行过程中识别错误。
  • 测试结束 - 最后,记录和提交测试报告,进而执行其他的后续测试。

自动化回归测试的方法

目前,业界通常会使用如下三种方法,来执行自动化回归测试(请参见--https://ieeexplore.ieee.org/document/10189)。您该具体选择哪种方法,则完全取决于开发的优先级、代码库的大小、以及可用在测试中的资源。

  • 全部重新测试 - 有时候,在代码库上执行所有现有的回归测试是一种最佳选择。尽管需要初期大量的投入,但是只要设计合理,就能够发现一些不需要回归的环节。当然,客观地说,该方法对于大型代码库几乎是不可行的。
  • 基于优先级重新测试 – 按照重要性和紧迫性的顺序,执行测试用例。在确定具有最高优先级的测试用例时,往往需要QA专家给出专家意见。而且,优先级测试应涵盖所有关键的代码路径,以发现那些严重的错误。
  • 选择性重新测试 - 您可以选择回归测试套件中的一个子集来执行,而不是重新运行整个测试套件。在后续的回归周期中,您只需执行那些可以在代码库上复用的测试用例,并将过时的用例剔除出去。

此外,您还可以使用混合回归测试技术,即:先执行优先级测试,然后再运行其他必要的测试,以避免遗漏并实现全覆盖。

自动化回归测试的实例

如前所述,我们可以根据对代码库所进行的更改,来采用不同形式的回归测试。有些是在添加新的功能后执行,而有些是在修复了系统中已知错误后执行。下面,让我们来讨论回归测试的一些实际案例:

  • 场景1:假设有一个具有数据库管理功能的应用,其核心功能有三个,即:数据添加、数据保存、以及数据删除。当我们在新版本中,引入允许用户对数据进行修改的“数据更新”功能时,则需要通过执行回归测试,来确保该功能不会影响到既有的“添加”、“保存”和“删除”功能。
  • 场景2:某个系统具有管理员、版主、客户和作者,四个角色模块。如果管理员模块出现了错误,那么就会导致作者使用其凭据,以版主的身份登录到后台系统中。因此,测试团队需要反馈开发团队修复该错误。而在实施了有效修复后,测试团队将再次检查系统,以确保具有修复功效的代码能够正常工作,且不会影响到其他模块与功能(该过程便是回归测试)。

根据上述的场景,我们来讨论其中的登录验证功能,即:用户输入其登录凭据(如用户名和密码),然后单击登录按钮。其中,用于测试此功能的分步实施代码如下:

如下代码则展示了当我们对该功能性代码进行测试时,生成的具有登录功能的类:

上述代码实为手动回归测试的示例。如果我们使用诸如Perfecto之类的自动化回归测试工具,则无需对测试脚本进行硬编码。我们只需做到:首先,确定可能用到的回归测试,并记录每个测试用例的工作流程。接着,使用Perfecto仪表板对测试方案进行建模。如下图所示,我们可以让Perfecto协助将工作流程转换为测试脚本。

在工作流程准备就绪后,我们即可执行测试并捕获结果。而在完成测试之后,Perfecto将返回对应的测试通过或失败状态,并为每个执行的命令提供详细的反馈。据此,您可以相继开展分析测试结果,生成报告,以及重新测试更改等工作。

自动执行回归测试的最佳做法

在执行回归测试时,开发团队往往会碰到包括:时间与资源有限,测试时间过长,测试用例增多等各方面的挑战。为了避免“踩坑”,并能够成功地完成自动化回归测试,我在此为您罗列了如下实践建议:

  • 选用可靠的自动化工具,以扩大测试的范围,并利用其自动化的优势。
  • 在整个项目中采用常规化的测试方案。
  • 通过独立可重用的回归测试,以节省时间。
  • 在修改代码库后,应重新运行过往已成功完成的测试。
  • 通过定期更新回归测试包,以确保与更新的产品版本相对应。
  • 为每个新发现的错误编写各种测试。
  • 确保所有集成测试用例都被包含在回归测试的套件中。

希望上述实践经验能够帮助您平滑地开展回归测试,并获得预期的结果。

小结

回归测试是在减少潜在技术债,并改善软件项目维护态势的有效方法。借助自动化测试工具,开发团队不但能够简化测试的整体工作量,并且可以确保产品在交付到生产环境之前的稳定性与代码质量。

原文All You Need To Know About Automating Regression Tests,作者: Dickson Mwendia

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

自动化回归测试全接触:概念、方法和实践

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

自动化回归测试全接触:概念、方法和实践

在本文中,我们将从回归测试的概念入手,讨论其实施的重要性,以及那些实现自动化测试的方法与优秀实践。

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录