OPS05-BP02 测试并验证变更
部署的每一项变更都必须经过测试,以避免在生产中出现错误。此最佳实践的重点是测试从版本控制到构件构建的变更。除应用程序代码变更外,测试还应该包括基础设施、配置、安全控制和操作程序。测试有多种形式,从单元测试到软件组件分析(SCA)等等。在软件集成和交付过程中,尽早进行测试可进一步确保构件质量。
您的组织必须为所有的软件构件制定测试标准。自动化测试可以减少工作量,并避免人工测试的错误。有些情况下,可能必须进行手动测试。开发人员必须能够访问自动化测试结果,以创建反馈循环,提高软件质量。
期望结果:
-
所有软件更改在交付前都要进行测试。
-
开发人员可以访问测试结果。
-
您的组织有一个适用于所有软件更改的测试标准。
常见反模式:
-
您在没有进行任何测试的情况下部署一项新软件更改。它无法在生产环境中运行,从而导致中断。
-
使用 AWS CloudFormation 部署新安全组,而没有在生产前环境中进行测试。这些安全组使客户无法访问您的应用程序。
-
修改了一个方法,但没有进行单元测试。该软件在部署到生产环境中后无法运行。
建立此最佳实践的好处:
-
软件部署的更改失败率降低。
-
软件质量得到改进。
-
开发人员提高了对其代码可行性的认识。
-
可以放心地推出安全策略,以支持组织实现合规性。
-
可以提前测试基础设施更改(如自动扩缩策略的更新),以满足流量需求。
在未建立这种最佳实践的情况下暴露的风险等级:高
实施指导
作为持续集成实践的一部分,对从应用程序代码到基础设施的所有更改都进行测试。将公布测试结果,以便开发人员快速提供反馈。您的组织有一个测试标准,所有更改都必须通过测试。
客户示例
作为持续集成管道的一部分,AnyCompany Retail 对所有软件构件进行几种类型的测试。他们实行测试驱动型开发,因此所有软件都有单元测试。构件构建完毕后,他们会立即运行端到端测试。第一轮测试完成后,他们会运行静态应用程序安全扫描,寻找已知漏洞。在每个测试关口通过时,开发人员都会收到消息。所有测试均完成后,软件构件就会存储在构件库中。
实施步骤
-
与您组织中的利益相关者合作,为软件构件制定测试标准。所有构件均应通过哪些标准测试? 是否有合规性或治理要求必须包括在测试范围内? 您是否需要进行代码质量测试? 测试完成后,需要通知谁?
-
AWS 部署管道参考架构
包含一个权威的测试类型列表,可作为集成管道的一部分对软件构件执行这些测试。
-
-
根据您的软件测试标准,利用必要的测试来检测您的应用程序。每组测试应在 10 分钟内完成。测试应该作为集成管道的一部分运行。
-
Amazon CodeGuru Reviewer 可以测试您的应用程序代码是否存在缺陷。
-
可以使用 AWS CodeBuild 对软件构件执行测试。
-
AWS CodePipeline 可以将您的软件测试编排到管道中。
-
资源
相关最佳实践:
-
OPS05-BP01 使用版本控制 - 所有软件构件都必须以版本受控的存储库为后盾。
-
OPS05-BP06 共享设计标准 - 您组织的软件测试标准将为您的设计标准提供依据。
-
OPS05-BP10 完全自动化集成和部署 - 软件测试应该作为更大的集成和部署管道的一部分自动运行。
相关文档:
相关视频:
相关资源:
相关服务: