新闻中心

回归测试教程:包含最佳实践的综合指南

时间: 2023-10-15 14:27:17 作者: 新闻中心

  当软件产品对现有功能进行更改、错误修复和添加新功能时,回归测试的目的是确保在这些更改之后,产品能够按预期工作。

  “回归”一词意味着重新测试产品未更改的部分。软件测试人员负责确定新的修改是否导致了潜在的错误或缺陷。

  当开发人员修复错误、添加新功能或修改现有功能时,他们要更改程序代码。即使是很小的更改也有一定可能会导致一些错误。在这种情况下,回归测试用于揭示和查明不良副作用。为此,他们用最新版本重新执行在产品的先前版本中完美运行的测试用例,以确定保证产品的功能正常运行。

  当要验证新构建时,测试人员进行功能测试以验证现有功能和新添加功能的修改。完成此测试后,测试人员将接着来进行回归测试。他们会发现新的改进是否导致了在最新更改之前令人满意的工作中的任何功能缺陷。

  每当您添加启用新功能或修复任何错误的代码时,您都会启动回归测试。这种启动是强制性的,因为现有的和新添加的功能可能有很多依赖关系。这种质量检查是不可避免的,因为新代码一定要符合现有代码。您必须确保未修改的代码不会受一定的影响。您可能经常需要检查在最后一刻完成的系统修改。

  在开发周期中,如果产品中存在持续的增强或更改,新功能可能会损害已经过测试并发现 OK 的现有代码。代码的更改有几率会使错误。如果这样的代码未经测试,您可能会在实时环境中遇到严重问题。因此,您的客户可能会遇到麻烦。

  让我们考虑一个在线网站。您报告了待售产品的成本未正确显示的问题;也就是说,较低的价格正在替代产品的实际成本。您认为一定要尽快解决此问题。

  现在,研发人员已经解决了这样的一个问题。这样一个时间段,reported page的价格有可能改了,但是summary page还是有错误的cost,发给client的email也有错误的cost。这证明bug修复完成后,必须检查显示较低价格的页面,并检查相关页面。这说明了为什么运行回归测试至关重要。

  让我们假设有一个软件产品 XYZ。其中一项功能是在用户单击 Dispatch、Accept 和 Confirm 按钮时触发发送、接受和确认电子邮件。在开发过程中,确认电子邮件出现了一些问题。

  为了解决这样一些问题,研发人员进行了一些代码更改。在此过程中,很明显必须对确认电子邮件来测试。此外,还应测试已发送和接受的电子邮件,以验证代码更改没影响它们。

  每个涉及生产代码更改的场景都有必要进行回归测试。以下所有场景都有此测试的需求。

  具有登录功能的网站。用户只可以通过电子邮件使用此功能。一项新功能是使用 Facebook 凭据执行登录。

  登录按钮无法正常工作的登录页面。测试人员提供了一份报告,指出存在错误,即登录按钮已损坏。一旦开发人员修复了这个错误,QA 工程师就会执行测试,确保登录按钮按预期工作。同时,测试人员测试与登录按钮相关的其他功能。

  有些软件产品需要几个月的时间才能完成。所以对这些产品,建议每天进行回归测试。每周都会发布一些版本。对此类产品,回归测试在功能测试结束后开始。

  让我们考虑一下当您测试特定功能时的场景,并且测试在一天结束时还没结束。现在,你必须中途停止这样的一个过程。第二天,你回来重新从头开始测试。此操作称为“重新测试”。您出于特定原因再次来测试。一个原因可能是特定测试用例在最终执行中失败,因此必须重新运行测试用例。第二个原因可能是源代码有一个缺陷已被修复。

  回归测试可以被认为是重新测试的微小变化。仅当产品或代码发生明显的变化时才安排回归测试。这种变化可以是设计、代码或任何其他导致产品整体框架发生明显的变化的问题。这种更改的最常见原因是修复了错误或创建了产品的新版本。

  在通常的软件测试生命周期(STLC)中,较早的过程是重新测试,然后能够直接进行回归测试。在中,只关注失败的测试用例。在回归测试中,注意力集中在以前已经通过的测试用例上,但有可能出现新的和意想不到的错误。

  软件测试生命周期 (STLC) 是一个包含多个阶段的连续过程。冒烟或健全测试结束后或在最后一个功能测试阶段,您需要开始回归测试。

  有效回归测试的第一步是概述回归测试计划。该计划必须详细说明您的回归测试策略和退出标准。您还可以在此计划中包括性能测试。此包含旨在确定保证产品组件的更改不会影响产品性能。

  必须遵守回归测试的最佳实践。您需要在接近一天结束时运行自动化测试用例。此外,如果检测到任何回归副作用,您可以与研发人员共享它们以在第二天的构建中修复它们。通过这一种做法,您可以在早期阶段而不是在发布周期结束时解决大部分回归缺陷。以这种方式,释放风险被最小化。

  您可以根据要部署的功能或更新实施各种回归测试。但是,了解几种回归测试类型以选择正确的一种至关重要。

  当许多模块上的代码发生明显的变化时,您应选择这种类型,而这种变化对其他模块的影响是未知的。因此,决定是检查整个产品以检测是否有任何其他由于代码更改而产生的修改。

  对于第二次产品发布,客户建议增加四五个新功能,并修复第一次发布的一些缺陷。测试团队实施影响分析并得出结论,必须针对这些修改对整个产品做测试。简而言之,这种类型意味着测试所有更改的和旧的功能。

  让我们考虑一个以Java 虚拟机 (JVM) 作为根文件的 Java 应用程序。如果更改对 JVM 文件来说必不可少,则必须测试 Java 应用程序。

  开发人员进行一些代码更改后,将更改的代码单元与现有(即未更改的)代码集成在一起。您必须验证更改后的代码是否按预期工作。

  您必须在单元测试阶段进行时执行此操作。在这种情况下,一个单元的代码被隔离测试。此类测试的目标是必须在个人级别对单元来测试。因此,被测试单元上的所有依赖项都被阻止了。

  它是需要较少工作量的简单回归测试之一。纠正性回归测试涉及对现有代码库进行零更改并向软件应用程序添加新功能。您需要测试现有功能和随之而来的测试用例,而不是开发新功能。

  选择性回归测试确定现有代码库以及新代码和现有代码的影响。变量和函数等通用元素被实施到应用程序中,以在不影响整个过程的情况下识别结果。

  重新测试回归涉及重新执行所有测试用例,以确保不会因软件中的代码更改而导致缺陷。这种类型的测试需要 QA 方面的更多手动工作。

  这是关于同一项目的新版本。先前版本中的旧元素可能会受到最新版本中新功能的影响。该类型包括以下步骤:

  Release 1 是第一个版本。它没有修改。因此,此版本中没有回归测试。

  进行影响分析,防范重大风险。这是由客户使用业务知识、开发人员使用编码知识以及 QA 工程师使用产品知识完成的。由于所有相关人员都参与了影响分析,因此完成了影响分析的最大测试范围。

  测试负责人合并三个影响区域文档,并将合并后的文档保存在版本 1 的测试用例需求存储库中。

  测试负责人参考需求可追溯性矩阵(Requirement Traceability Matrix,RTM),从测试用例需求库中选择相关的回归测试用例,并将测试用例文件存储在回归测试套件中。

  在 QA 工程师完成新测试用例的工作后,测试负责人将回归测试用例分配给 QA 工程师。

  bug 修复后,重新测试 bug,如果 bug 有依赖模块,则进行回归测试。让我们考虑一个示例,其中有三个构建(构建 1、构建 2 和构建 3),所有这些都有不同的场景。这种类型包括以下步骤。

  测试人员开始编写测试用例。让我们假设他们为 Build 1 编写了 500 个测试用例。

  测试人员开始为四个新特性编写测试用例。让我们假设他们为 Build 2 编写了 300 个测试用例。因此,测试用例的总数为 800。

  测试人员开始执行 Build 1 的 500 个测试用例,以确认这四个新功能没有妨碍旧功能。

  测试人员删除与功能 1 的模块相关的所有测试用例(让我们假设这些是 150 个用例)。

  测试人员测试所有剩余的功能,以确认在删除功能 1 后,其余功能可以正常工作。

  让我们考虑一个功能或修复的范围很大。受影响的产品面积也很大。您必须获得开发人员关于更改的数量、性质和范围的输入。因此,您可以决定需要回归的产品区域。

  在回归测试中,测试一次又一次地重复。因此,您可以自动化一组测试用例。然后,这个集合在每个新构建上执行。您必须谨慎选择测试用例,同时牢记最少数量的测试用例必须覆盖产品最大功能的目标。

  让我们考虑一下产品范围是巨大的,并且正在向系统添加连续的补丁或增量。在这种情况下,您可以通过选择选择性测试来节省测试的时间和成本。您需要考虑产品的增强功能以及这些增强功能可以产生最大影响的部分,以最终确定选择性测试用例。

  以下是回归测试中使用的技术:测试用例优先级排序、回归测试选择、重新测试所有和混合。

  根据案例的关键性、对产品的影响以及产品特定功能的频率,为每个测试案例分配优先级。新增功能和面向客户方面的测试用例属于高优先级类别。优先级高的先执行。优先级中等的紧随其后,最后执行优先级低的。

  根据模块中的代码修改,您可以从测试套件中选择一些测试用例。然后,您重新执行这些选定的测试用例。不需要重新执行整个测试套件。测试用例分为两类:过时的测试用例和可重用的测试用例。

  在即将到来的回归周期中,您不应该执行过时的测试用例,而必须执行可重用的测试用例。在这种技术中,您只实施相关的测试用例,这些用例的数量是有限的。这减少了回归测试的时间和精力。

  您必须重新执行测试套件中的所有测试用例。这是为了确保代码中所做的更改没有引入任何错误。这种类型比其他技术需要更多的时间和资源。这是最昂贵的技术。

  然而,这是最安全的方法,因为它确保所有错误都已被识别和修复。当操作系统有重大更新或应用程序针对新语言或平台进行修改时,此方法通常适用。

  这种技术是测试用例优先级排序和回归测试选择的混合。不会重新执行完整的测试套件。根据优先级,您必须选择要重新执行的测试用例。

  在生产环境中,对代码的修改和第十一小时修复的错误导致代码中出现新的错误。

  这使得回归测试成为产品发布前的一项关键任务。应为回归测试套件选择以下测试用例。

  测试用例的选择由具有许多代码更改的组件决定。测试人员可以将测试分为可重用和过时的测试用例。可重用的测试用例可以稍后在回归测试周期中使用,而过时的测试用例将不会包含在进一步的回归测试周期中。

  测试人员在完成时间估算后,应根据测试用例的数量在手动测试和自动测试之间进行选择。

  在此步骤中,测试人员根据最近的代码提交对测试用例进行优先级排序,从而减少回归时间和工作量。高优先级的测试用例首先运行,然后是中低优先级。

  最后按照优先级顺序执行所有测试用例,以发现缺陷并确保应用程序正常运行。

  在敏捷环境中,当进行回归测试时,必须进行配置管理。在这种环境中,代码会不断发生变化。以下步骤可以确保回归测试的有效性:

  敏捷方法促进了一种迭代和增量的工作方式。产品开发在名为“sprint”的两到四个星期的短迭代中执行。代码修改和新功能在冲刺中执行。在初始阶段,您需要开发一个回归测试套件。

  在这种类型中,测试套件由与新功能或前一个冲刺中完成的代码修改相关的测试用例组成。

  敏捷中的短冲刺要求自动化测试套件。测试用例在短时间内重新执行。如果您将测试用例自动化,执行时间和缺陷延误将被最小化。

  在这种类型中,测试套件由所有重新执行的测试用例组成。整个产品从头到尾都经过测试,涵盖了产品的所有核心功能。

  敏捷中的短冲刺要求自动化测试套件。测试用例在短时间内重新执行。如果您将测试用例自动化,执行时间和缺陷延误将被最小化。

  大多数测试工作自动化的测试称为自动回归测试。之前执行的所有测试用例都在新构建上运行。在这个场景中,你有一个可用的测试用例集,手动测试这个测试用例集是很耗时的。

  因此,您将这组自动化,结果是提高了测试过程的效率。您必须导航 Application Under Test (AUT) 以观察预期结果是否存在。很大一部分回归测试执行工具分为记录和回放类型。其中一些工具如下。

  :这是用于跨平台和基于浏览器的回归测试的顶级工具之一。它具有一组用于 Web 应用程序自动化的有价值的功能。它支持通过数据驱动测试和数据集在循环中移动的自动化测试脚本。如果您拥有一支由高级测试人员组成的大型测试团队,那么此工具是完美的选择。

  该工具的主要优点是减少了必要的资源、遵守时间线和缩短了测试周期。综合效果是发布周期变短,同时确保软件的高可靠性。

  您可以利用自然语言编程用简单的英语编写回归测试。这需要像编写手动测试脚本一样完成。这种方法结合了编码方法的灵活性和强大功能以及无代码工具的可访问性和速度。机器人由 Virtuoso 推出,它可以深入产品的 DOM,并根据可用的属性、ID 和选择器形成元素的整体模型。

  如果您的测试自动化用户社区很大,那么这是工具中的首选。它是一个一体化平台。您不需要为此工具进行复杂的设置。它是一个现成的框架,可以提供无代码和免费的解决方案。

  软件测试人员可以利用其高级功能,例如 CI/CD 集成、测试报告、跨浏览器测试、自我修复、脚本模式和内置关键字。适用于移动产品、Web 服务和网站的回归测试。它支持在多种环境、浏览器和设备上运行脚本。测试报告采用 PDF、CSV、HTML 和 LOG 格式。

  这是自动化回归测试的最简单的工具。它有一个直观的界面。软件测试人员只需“记录并重播”他们的测试。该工具不需要编码。它可以快速创建生产就绪的回归测试。由于易于学习,它是 Selenium 的一个非常简单的替代品。

  这是一个不需要任何代码的异构测试自动化解决方案。软件测试人员发现使用此工具进行回归测试非常快速和简单。它具有跨平台兼容性。该工具可以跨关联的模拟器、ERP、大型机、桌面、移动和 Web 来测试。即使没有一行代码,您也可以进行端到端的回归测试,以完成快速、优质的交付。

  全称是 web application testing in Ruby。Ruby 编程代码用于创建此开源库。使用它,您可以编写可以在灵活、轻量级的 UI 上轻松读取和维护的测试。Watir 认可用于测试网站的不同用户交互能力,例如验证文本、在表单中输入数据和单击链接。

  缩写为 RFT。IBM 开发了这个用于软件测试自动化的工具。它用于不同类型的测试,例如数据驱动、GUI、回归和功能测试。

  这是用于测试自动化的开源软件。它可以测量测试性能和加载功能测试行为。它可以为最终用户呈现整个回归测试套件。它支持在不同的服务器、应用程序和协议上进行性能和负载测试。

  它有一个内置的 Selenium WebDriver。它可用于移动、Web 和桌面应用程序的自动回归测试。该工作室包括完整的 IDE 和执行无代码自动化的工具。

  回归测试有助于在引入新功能时或在现有代码库中发现错误,并减轻应用程序故障和性能瓶颈。

  结合并行测试可能是跨多个浏览器和操作系统组合并发运行测试用例的可行解决方案。

  但是,随着您的应用程序变得更加复杂,测试用例的数量将会增加。因此,您需要一个可根据您的测试要求进行扩展的基于云的测试解决方案。

  像 LambdaTest 这样的持续质量云测试平台提供了一个包含 3000 多个真实浏览器、设备和操作系统组合的云可扩展基础架构,以满足您的自动化回归测试需求。

  回归测试可以交付高质量的产品和用户体验。回归测试的主要好处是任何代码更改都不会影响现有功能。

  您可以根据项目需求选择自动化工具来自动化回归测试用例,并根据其更新测试用例套件的能力来自动化回归测试用例,因为测试用例套件的频繁更新是不可避免的。选择 apt 工具后,您可通过它来检测所有浮出水面的错误,并在管道中及早消除它们。

  当回归测试与敏捷方法相结合时,结果是有很多技术和商业利益。在回归测试上投入的时间和金钱越多,对过程、错误处理和预算的控制就越多。

上一篇:无人驾驶的几个级别

下一篇:新能源汽车行业发展壮大离不开这样一群“幕后英雄”