根据其定义,回归测试是一种软件测试,用于确认最近的程序或代码更改没有对现有功能产生不利影响。
这样做是为了确保现有应用程序与新添加的功能保持完整,并且没有任何损坏。为了实现这一点,现有的测试用例被选择性地执行,有时甚至完全执行。回归测试可确保新代码更改完成后旧代码仍然有效。
为什么需要它?
在许多情况下都会进行回归测试:
- 现有功能的需求发生变化。
- 添加新功能。
- Bug修复。
- 技术变革/升级。
- 性能修复。
- 代码优化。
回归测试可确保更改不会在之前运行良好的现有功能中引入新的错误。有时,现有功能本身的需求发生变化,这可能会影响应用程序的其他功能。在这种情况下,会对其他特征进行回归测试。
如果由于旧库被弃用而导致底层技术发生更改或升级,也需要进行回归测试。为了确保这不会对功能产生任何影响,测试人员执行完整的回归测试。
当开发人员进行代码优化或进行性能修复时,测试人员也会执行回归测试。
重新测试和回归测试 - 重新测试和回归测试之间存在差异。重新测试是在修复缺陷时对软件/应用程序进行测试,以确保原始缺陷被完全消除,而进行回归测试以确保在开发新功能或更改现有功能时不会引入新的缺陷。
回归测试技术 - 通常测试人员在每个版本的测试计划中都包含回归测试。根据定义,应该执行它以确保新功能不会对现有功能产生任何影响,它必须包含在每个发布计划中。由于大多数组织遵循频繁发布的敏捷方法,因此回归测试是通过持续测试和自动化来实现的。回归测试有多种技术:
- 重新测试全部 - 这是测试工程师执行所有现有测试用例而不会遗漏任何测试用例的技术。这是相当昂贵的,因为它需要大量的时间和资源。
- 回归测试选择 - 在这种技术中,测试工程师根据影响分析选择测试用例的子集。测试所选案例分类为:
- 可重复使用的测试用例
- 过时的测试用例
- 测试用例的优先级 - 根据业务影响和使用频率确定测试用例的优先级。根据优先级选择测试用例将显着减少回归测试套件。
回归测试的类型
- 选择性– 选择性回归测试是一种回归测试,测试人员从之前运行的测试套件和测试覆盖率识别中选择测试用例。为了执行此操作,测试工程师使用已运行的测试用例的子集来减少重新测试所需的成本和工作量。
- 完整– 当软件的根代码发生更改时,使用完整的回归测试。当对现有代码进行多次更改时也会执行此操作。
- 纠正– 当现有软件/应用程序没有更改时执行。已经存在的测试用例可以重新用于执行此类回归测试。
- 部分– 这种类型的回归测试是在影响分析之后执行的。测试工程师根据由于新代码合并而受到影响的模块进行选择性测试用例执行。
回归测试可以手动完成吗?
回归测试可以手动执行。但如果应用程序很大并且影响很大,这会导致效率低下。而且,一次又一次地执行重复的测试用例对于测试工程师来说是非常无聊的。
为了执行回归测试,测试人员需要识别必须执行的测试用例。如果数量很大,测试人员需要找出最佳组合并进行优化。
回归测试工具 - 回归测试用例可以自动化并按计划执行。有许多可靠且可扩展的工具。让我们看看一些最流行的工具。
- Winrunner – HP WinRunner 是一种自动化功能 GUI 测试工具,允许用户将用户界面 (UI) 交互记录和回放为测试脚本。作为功能测试套件,它与 HP QuickTest Professional 配合使用并支持企业质量保证。
- QTP – QTP 是 HP 的自动化测试工具,现在称为 HPE 统一功能测试软件。它支持VB脚本语言来指定测试程序,并提供GUI。要执行更密集的操作,用户可能需要修改底层脚本。
- Watir – 根据 Watir 的网站,Watir 代表 Ruby 中的 Web 应用程序测试。它通过模仿用户与网站交互的行为来促进自动化测试的编写。它支持多种浏览器,如 Internet Explorer、Chrome、Firefox、Opera 和 Safari。其最新版本是基于 Selenium API 的 Watir WebDriver。
- Selenium – Selenium 是一组用于跨平台自动化 Web 应用程序的工具。它支持许多第三方库,以促进完整的自动化框架。它还支持多种编程语言。Selenium 得到了一些最大的浏览器供应商的支持,他们已经采取(或正在采取)措施使 Selenium 成为其浏览器的本机部分。它也是无数其他浏览器自动化工具、API 和框架的核心技术。
- actiWATE – actiWATE 是一个基于 Java 的软件平台,旨在使测试自动化过程变得简单且经济高效,以实现 Web 应用程序回归测试的自动化。它由 actiWATE 框架和附加模块组成。目前,只有一个模块可用 - actiWATE TWA 框架,它是一个基于 Java 的库。自动化测试使用此库与 Web 应用程序交互。actiWATE 无需真正的互联网浏览器即可执行测试;相反,actiWATE 框架会自行模拟 Internet 浏览器。actiWATE 测试与 JUnit 完全兼容,可以由任何 JUnit 测试运行程序运行。
- RationalFunctionalTester—— RationalFunctionalTester是来自IBM Rational软件部门的软件应用程序自动化测试工具。它允许用户创建模仿人类测试人员的操作和评估的测试。它主要由软件质量保证团队用来执行自动回归测试。
- SilkTest – Silk Test 是一种用于企业应用程序的自动化功能和回归测试的工具。它最初由 Segue Software 开发,该软件于 2006 年被 Borland 收购。Borland 于 2009 年被 Micro Focus International 收购。
- TimeShiftX – TimeShiftX 是一款日期和时间转换测试软件,可让您将软件时间旅行到未来或过去,以临时测试所有日期和时间敏感的功能和代码,例如年末、夏令时、闰年、计费、费率、政策等。执行时间旅行测试,无需更改系统时钟、编辑代码或隔离服务器。
- CloudQA – CloudQA 为各种测试需求提供统一平台。他们有一个带有集成报告的记录和回放工具,非常容易用于创建和安排回归测试套件。它还提供与各种第三方工具的集成,例如:
- ALM 工具(TestRail、TFS、Asana)
- 错误跟踪(Jira、BugTracker)
- CI/CD(Jenkins、CircleCI、TravisCI 和 DevOps 支持)
- 开放API集成
- 团队沟通(Slack、短信、webhooks)
- 版本控制工具(Github、TFS)