OpenText 主页。
技术主题

什么是持续测试?

以问号为重点的信息技术项目图示

概述

持续测试是在整个软件交付生命周期(SDLC)中执行自动测试的做法,以获得有关业务风险的快速反馈。传统测试往往发生在流程的后期,而持续测试与持续集成和交付(CI/CD)管道紧密集成,并将测试带入每个开发阶段。这种紧密的反馈回路有助于团队更早地发现问题,更快地解决问题。

持续测试

持续测试为何重要

持续测试使高速团队能够大规模交付可靠的软件。向敏捷和 DevOps 的转变意味着更快的发布周期,但没有控制的速度会导致风险。持续测试就像一个安全网,随着开发的发展而发展。

这就是开发团队、组织和 DevOps 专业人员使用持续测试的原因:

  1. 更快的反馈循环:在最容易修复的时候发现漏洞,大大缩短代码提交和问题识别之间的时间。这种即时可见性可以防止小问题变成大阻碍,从而使整个发布工作脱轨。
  2. 增强发布信心:通过实时仪表板显示测试覆盖率、通过率和潜在业务影响,业务利益相关者可在部署前更好地了解风险。有了这种透明度,就能根据实际风险评估而不是直觉,做出明智的 "去/不去 "决定。
  3. 降低质量成本:及早发现问题,避免昂贵的返工,因为返工成本会随着问题在流水线上的转移而成倍增加。在生产过程中修复一个错误的成本可能会比在开发过程中解决它的成本高出数倍。
  4. 缩短发布周期:测试不再是瓶颈,而是流程的一部分。自动质量门消除了传统的"测试阶段" ,而这往往会延误发布,从而实现真正的持续交付。

持续测试的工作原理

持续测试将测试自动化与持续集成工具连接起来。测试在管道的关键阶段自动运行,结果直接反馈到决策过程中。

用于 DevOps 和 CI/CD 管道的持续测试工作流程图,详细说明从源代码提交到自动测试和报告的各个阶段,包括 CI 启动、构建、测试执行和反馈循环

通常情况是这样的:

  1. 提交代码: 开发人员将代码推送到共享仓库。
  2. 触发 CI 管道: CI 工具会自动启动新的构建流程。
  3. 运行自动测试: 自动测试可按顺序、并行或两者结合执行:单元测试、应用程序接口测试、集成测试、用户界面测试、性能测试、安全测试和可访问性测试。
  4. 分析& 报告: 如果任何测试失败,管道会停止运行或通过详细报告提醒利益相关者。
  5. 改进& 迭代: 团队修复问题、提高测试覆盖率或调整基础架构。

这一流程通常被称为持续开发测试自动化,它能使质量与代码交付保持同步。该过程不断循环。


人员、流程和技术

实施持续测试不仅与工具有关。这是一项融合了团队文化、简化流程和正确技术堆栈的跨职能工作。

  1. 人: 开发人员、测试人员和运营人员必须通力合作。测试不再是"别人的工作。"要实现这种文化转变,就必须打破各自为政的局面,形成对质量成果的共同掌控。
  2. 过程: 左移测试实践和基于风险的测试策略指导测试内容和时间。团队必须定义清晰的质量关,建立测试标准,并创建反馈回路,为技术和业务决策提供信息。
  3. 技术:您需要支持测试自动化、CI/CD 集成、环境管理和分析的工具。技术堆栈必须可靠、可扩展,并能提供有意义的见解,而不仅仅是测试执行。

当这三大支柱协调工作时,您获得的不仅仅是覆盖面,还有洞察力。


持续测试与自动化测试

许多团队将自动化软件测试与持续测试混为一谈。虽然它们拥有共同的工具和技术,但战略和结果却大相径庭。

将自动化测试视为"what" ,将持续测试视为"when" 和"why。"
本图表重点介绍了主要区别,尤其是在集成、协作和业务价值方面:

类别 自动化软件测试 持续测试
定义 使用工具和脚本执行测试,无需人工步骤 在 CI/CD 中嵌入自动测试,就业务风险提供快速、持续的反馈
运行时 手动或按需,通常在交付管道之外 在开发和部署的每个阶段自动触发
目标& 影响 取代人工执行测试,提高效率 通过实时洞察降低风险、加快交付和提高质量
管道集成 可能与 CI/CD 和交付流程脱节 与持续集成测试和部署工作流程完全集成
团队协作 通常由质量保证部负责;合作有限 开发人员、测试人员和 DevOps 团队共享所有权

持续测试的挑战以及如何克服这些挑战

持续测试带来了巨大的好处,但同时也带来了新的复杂性,即使是最善意的实施也会因此脱轨。

团队面临的共同挑战包括

不稳定的环境:由于服务配置错误或不可用,导致测试失败,从而造成团队对测试结果失去信心的恶梦。环境的不稳定性会使持续测试从一个安全网变成持续的挫折源,导致"测试盲" ,从而使故障被忽视。
为克服这一问题,可使用容器化测试环境来实现一致性。容器可为开发、测试和生产提供相同的环境。Docker 和 Kubernetes 等工具可确保环境差异不会导致测试失败,同时还能实现环境的快速调配和拆卸。

测试不稳定:不一致的结果会削弱对自动化的信任,迫使团队多次重新运行测试,更有甚者,会完全忽略失败的测试。不稳定的测试是生产力的杀手,会让人觉得持续测试是一种负担,而不是一种好处。
为克服这一问题,可采用服务虚拟化来模拟依赖关系:当外部服务不可用或不可靠时,服务虚拟化可创建可预测、可控制的模拟。这种方法消除了对第三方系统的依赖,减少了因网络问题或服务中断造成的测试不稳定性。

反馈回路过长:缓慢的测试套件会延误管道,从而违背持续集成的整个目的。当测试耗时过长时,开发人员要么跳过测试,要么批量修改,从而破坏了快速反馈,而快速反馈正是持续测试的价值所在。
为克服这一问题,可对测试进行优先排序和并行化处理,以缩短执行时间。首先运行最关键的测试,然后并行执行独立测试。基于代码变化的智能测试选择可大幅缩短反馈时间,而并行执行则可最大限度地提高基础设施的利用率。正确进行持续测试需要严谨的态度,但付出是值得的!


持续测试工具

有效的持续测试依赖于一整套集成工具,这些工具支持整个软件交付管道的自动化、协调和可视性。这些工具不仅能执行测试,还能确保在正确的时间、正确的环境中运行正确的测试,并提供有意义的反馈。

以下是需要考虑的主要工具类别:

  1. 测试自动化框架:持续测试的核心是单元、应用程序接口、用户界面、性能和安全测试的自动化测试脚本。这些框架为编写和组织测试、大规模执行测试以及跨测试类型一致地报告结果提供了结构。o9 Solutions 发现,利用 OpenText Core Performance Engineering,他们可以将测试脚本创建速度提高 70%。
  2. 测试环境管理:可靠的、与生产环境类似的环境对于获得有效的测试结果至关重要。环境工具支持动态供应、配置和隔离--通常是通过容器或虚拟环境。它们还有助于通过虚拟化或模拟技术来模拟不可用的或第三方服务。
  3. 测试数据管理:好的测试需要好的数据。这些工具使团队能够跨环境生成、屏蔽或刷新测试数据集,同时确保符合隐私法规。正确的测试数据可减少缺陷,增强对测试结果的信心。
  4. 测试报告和分析:持续测试会产生大量测试结果。报告工具有助于将数据提炼为可操作的见解--识别趋势、突出回归,并支持基于业务风险的 "去/不去 "决策。
  5. 协作和管理工具:最后,能够实现版本控制、可追溯性和可审计性的工具在使测试与开发、安全和合规要求保持一致方面发挥着至关重要的作用。
  6. CI/CD 协调工具:这些工具可根据代码变更触发自动测试。他们负责管理构建、测试和部署流程,确保将测试嵌入交付的每个阶段。它们还允许管道定制、条件逻辑以及与通知和分析系统集成。

加强持续测试战略

持续测试的强大取决于其背后的平台。无论您是要扩展自动化软件测试、改善测试环境,还是要将质量关集成到 DevOps 工作流中,OpenText 都能帮助您以更低的风险更快地实现目标。

探索我们的测试解决方案软件交付平台,了解我们如何帮助团队快速交付质量。

我们能提供什么帮助?

脚注