OPS05-BP02 测试并验证变更 - AWS Well-Architected Framework

OPS05-BP02 测试并验证变更

部署的每一项变更都必须经过测试,以避免在生产中出现错误。此最佳实践的重点是测试从版本控制到构件构建的变更。除应用程序代码变更外,测试还应该包括基础设施、配置、安全控制和操作程序。测试有多种形式,从单元测试到软件组件分析(SCA)等等。在软件集成和交付过程中,尽早进行测试可进一步确保构件质量。

您的组织必须为所有的软件构件制定测试标准。自动化测试可以减少工作量,并避免人工测试的错误。有些情况下,可能必须进行手动测试。开发人员必须能够访问自动化测试结果,以创建反馈循环,提高软件质量。

期望结果:

  • 所有软件更改在交付前都要进行测试。

  • 开发人员可以访问测试结果。

  • 您的组织有一个适用于所有软件更改的测试标准。

常见反模式:

  • 您在没有进行任何测试的情况下部署一项新软件更改。它无法在生产环境中运行,从而导致中断。

  • 使用 AWS CloudFormation 部署新安全组,而没有在生产前环境中进行测试。这些安全组使客户无法访问您的应用程序。

  • 修改了一个方法,但没有进行单元测试。该软件在部署到生产环境中后无法运行。

建立此最佳实践的好处:

  • 软件部署的更改失败率降低。

  • 软件质量得到改进。

  • 开发人员提高了对其代码可行性的认识。

  • 可以放心地推出安全策略,以支持组织实现合规性。

  • 可以提前测试基础设施更改(如自动扩缩策略的更新),以满足流量需求。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

作为持续集成实践的一部分,对从应用程序代码到基础设施的所有更改都进行测试。将公布测试结果,以便开发人员快速提供反馈。您的组织有一个测试标准,所有更改都必须通过测试。

客户示例

作为持续集成管道的一部分,AnyCompany Retail 对所有软件构件进行几种类型的测试。他们实行测试驱动型开发,因此所有软件都有单元测试。构件构建完毕后,他们会立即运行端到端测试。第一轮测试完成后,他们会运行静态应用程序安全扫描,寻找已知漏洞。在每个测试关口通过时,开发人员都会收到消息。所有测试均完成后,软件构件就会存储在构件库中。

实施步骤

  1. 与您组织中的利益相关者合作,为软件构件制定测试标准。所有构件均应通过哪些标准测试? 是否有合规性或治理要求必须包括在测试范围内? 您是否需要进行代码质量测试? 测试完成后,需要通知谁?

    1. AWS 部署管道参考架构包含一个权威的测试类型列表,可作为集成管道的一部分对软件构件执行这些测试。

  2. 根据您的软件测试标准,利用必要的测试来检测您的应用程序。每组测试应在 10 分钟内完成。测试应该作为集成管道的一部分运行。

    1. Amazon CodeGuru Reviewer 可以测试您的应用程序代码是否存在缺陷。

    2. 可以使用 AWS CodeBuild 对软件构件执行测试。

    3. AWS CodePipeline 可以将您的软件测试编排到管道中。

资源

相关最佳实践:

相关文档:

相关视频:

相关资源:

相关服务: