什么是持续测试?
持续测试是在软件开发过程的每个阶段以及每次更改应用程序代码或配置时测试应用程序的过程。业务敏捷性要求组织缩短发布周期,并经常提供新功能和修复。持续测试将测试集成到软件交付管道的每个阶段,以便及早发现错误并保持软件质量。软件测试作为代码与应用程序代码一起维护,通常作为持续测试范例的一部分运行。
什么是生产中的持续测试?
通过生产中的持续测试 (CTIP),您可以在生产环境中自动执行代码检查。某些错误在早期的软件开发阶段可能无法检测到,但在用户与应用程序实时交互时会出现。您可以应用软件测试工具和脚本来自动检测问题并允许及时进行补救。尽管 CTIP 有助于检测生产环境中的潜在软件问题,但它并不能取代在开发过程中执行的其他软件测试。
持续测试与持续集成和持续交付有何关系?
持续集成和持续交付(CI/CD)是一种 DevOps 实践,可在向最终用户交付软件版本时平衡质量和速度。在开发或更新应用程序时,多个开发人员可能会在各自的代码分支中进行更改。每个分支都包含原始代码的修改版本。开发人员必须将这些分支合并到一个共享存储库中,而不会发生任何代码冲突。
通过持续集成(CI),您可以自动合并来自各个分支的代码。持续交付(CD)会自动准备应用程序的功能版本,您可以随时将其部署到最终用户。CI 和 CD 共同简化了交付新软件的工作,使增量代码更改更快、更高效。
CI/CD 中的持续测试
DevOps 中的持续测试是驱动整个 CI/CD 管道的一项基本原则。软件团队可以向左移动,也可以将测试过程与开发一起移动。您不必将测试留到以后的阶段,而是要抓住软件开发生命周期 (SDLC) 中的每一个机会来运行自动化测试。您可以使用自动化测试工具来检查代码、运行测试脚本并发现有价值的见解,以提高软件质量。
在您更改代码时,持续测试工具会在 CI 过程中自动执行功能、代码质量和单元测试。这些工具可在 CD 管道中自动执行大规模测试,包括回归、集成和负载测试,以进一步降低业务风险。
下图显示了大型机 DevOps 中的 CI/CD 管道示例。
持续测试有哪些好处?
在现代应用程序开发周期中集成持续测试工具时,您可以体验到以下好处。
加速软件开发
通过持续测试过程,您可以使用自动化测试工具加快开发速度和节省精力。传统上,软件开发遵循瀑布模型,即开发人员在进入下一个阶段之前完成特定阶段。借助 Agile 和 DevOps 等现代软件开发实践,您可以采用更加灵活的方法。结合持续测试,您可以在编写代码时测试和应用修复程序,而无需等待 QA 工程师的反馈。这意味着您可以缩短上市时间,更快地响应功能请求。
减少费用
软件错误和性能问题会影响服务交付,这可能会使组织失去商机并产生大量成本。尽管您尽了最大努力,但在部署之前您可能无法发现所有软件问题。您可以使用持续测试工具来评估、监控和报告整个 SDLC 中的问题。您可以通过在开发管道的早期发现软件问题来减少修复费用和资源需求。与生产环境中修复相比,提前修复错误的成本更低。
提高代码质量
在构建软件时,您要努力遵守编码最佳实践。结构良好的源代码易于理解,包含的错误更少,消耗的计算资源也更少。通过持续测试,您可以在不同的项目中保持代码的一致性。当代码经过严格的错误、功能和性能问题测试时,您还可以更自信地重用代码。
改善团队协作
持续测试在提供对整个开发阶段进行的软件测试的可见性方面起着重要作用。开发、QA 和运营团队不是孤岛式操作,而是采取更主动的方法来发现测试环境中的软件错误。集成到 CI/CD 后,您可以测试不同的软件模块并同时传达结果。例如,在运营团队评估现有云基础设施是否可以支持不断变化的需求时,多个开发人员可能会同时测试新功能。
提升客户体验
在发布具有强大测试策略的新软件变更时,您可以预测可能出现的问题并计划响应措施。您可以使用持续测试框架来模拟可能的场景并预测潜在问题,而不是通过有缺陷的版本来降低客户的期望。在将软件发布到生产环境之前,您可以解决从测试中检测到的问题。这意味着您可以持续提供富有吸引力的软件体验。
什么是持续测试方法?
持续测试涉及大量测试,您可以使用这些测试来生成安全、用户友好且功能强大的应用程序。以下是几种常见的测试方法。
功能测试
通过功能测试,您可以使软件工作流程与其架构所遵循的业务需求保持一致。例如,电子商务软件会提醒运输公司收到的每笔订单。在功能测试中,您可以确保软件向运输供应商的系统发送正确的 API 调用。
回归测试
回归测试可确保您的代码更改不会影响应用程序的稳定性、性能、安全性和功能。当您在现代软件环境中引入快速代码更改时,该测试可确保软件行为保持一致。
性能测试
通过性能测试,您可以评测应用程序的非功能方面。在性能测试期间,您可以评测应用程序在 Web 流量、内存消耗、并发用户和其他环境参数增加的情况下以最佳方式运行的能力。您可以使用测试的可操作见解来识别瓶颈并优化代码工作流程。
集成测试
通过集成测试,您可以确保第三方软件组件和依赖项在应用程序中按预期运行。例如,API 调用应返回文档中指定的相应响应。您可以执行集成测试,以确保所有依赖项组合在一起后可以无缝运行。
用户接受度测试
用户接受度测试通常在专为特定用户设计的自定义软件上执行。以为零售行业的客户构建客户关系管理(CRM)软件应用程序为例。执行用户接受度测试,以验证所有需求和功能是否按照软件需求规范中的描述进行设计。根据用户反馈,您可以修改软件或签收以完成交付。
烟雾测试
烟雾测试是 QA 工程师在收到开发人员的新版本时执行的软件测试自动化。QA 团队使用烟雾测试(也称为构建验证测试)来确保软件中的关键功能没有任何重大缺陷。在此过程中,QA 团队会将发现的问题通知开发人员,并等待返工,然后再进行进一步的测试。
持续测试面临哪些挑战?
尽管持续测试有好处,但在大规模实施持续测试时可能会面临挑战,原因如下:
- 您已经习惯了传统的测试和测试数据管理实践,在开发的早期阶段,这些实践并不优先考虑测试。
- 您需要更好地访问自动化测试工具,以便与现有开发工作流程轻松集成。
- 将持续测试限制为自动化软件测试,这会降低其积极影响。相反,您必须将持续测试作为更广泛策略(例如 DevOps 和 Agile)的一部分进行应用,以提供可改善用户体验的功能性软件。
纳入持续测试需要从最高领导层开始的思维方式和文化转变。
AWS 如何帮助您满足持续测试需求?
借助 Amazon Web Services (AWS),您可以使用 CI/CD 管道中的自动测试工具扩展开发工作。您可以使用 AWS 提供的持续测试工具来构建功能强大、一致且用户友好的现代应用程序。例如,您可以:
- 在将源代码编译成可随时部署的软件包时,使用 AWS CodeBuild 自动执行测试。CodeBuild 与您现有的 CI/CD 管道集成,以便您可以在更容易捕获错误时检测到错误。
- 在测试或生产环境中发布迭代软件变更时,使用 AWS CodePipeline 来发现错误。借助 CodePipeline,您可以在与 AWS CodeCommit、AWS CodeDeploy 和 AWS CloudFormation 集成的管道中对部署工作流程进行建模。
立即创建账户,开始在 AWS 上进行持续测试。