

# SEC11-BP02 在整个开发和发布生命周期中执行自动化测试
<a name="sec_appsec_automate_testing_throughout_lifecycle"></a>

 在整个开发和发布生命周期中自动测试安全属性。自动化使得在发布软件前，更加容易始终如一反复识别软件中可能存在的问题，进而减少所提供的软件中存在安全问题的风险。

**期望结果：**自动测试的目标是提供一种程序化方式，在整个开发生命周期中常常尽早检测潜在问题。自动执行回归测试时，您可以重新运行功能测试和非功能测试，确认以前测试过的软件在更改后仍按预期执行。定义安全性单元测试以检查常见的错误配置（如身份验证中断或缺失）时，可以在开发过程的早期识别并修复这些问题。

 测试自动化根据应用程序的要求和期望的功能，使用专门构建的测试用例进行应用程序验证。自动测试的结果基于将生成的测试输出与其各自的预期输出进行比较，从而加快整个测试生命周期。回归测试和单元测试套件等测试方法最适合自动化。自动执行安全属性的测试使构建者无需等待安全审查即可自动接收反馈。静态或动态代码分析形式的自动化测试可以提高代码质量，并帮助在开发生命周期的早期检测潜在的软件问题。

**常见反模式：**
+  不传达自动化测试的测试用例和测试结果。
+  就在发布之前执行自动化测试。
+  使用自动化测试用例来应对经常变化的需求。
+  未能就如何处理安全测试的结果提供指导。

**建立此最佳实践的好处：**
+  减少对评估系统安全属性的人员的依赖。
+  在多个工作流程中得到一致的结果可提高一致性。
+  降低在生产软件中引入安全问题的可能性。
+  由于及早发现软件问题，可以缩短检测和修复之间的时间。
+  增加多个工作流中的系统或重复行为的可见性，可用于促进组织范围内的改进。

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

## 实施指导
<a name="implementation-guidance"></a>

在构建软件时，采用各种软件测试机制，以确保根据应用程序的业务逻辑测试应用程序的功能要求和非功能要求（重点关注应用程序可靠性、性能和安全性）。

 静态应用程序安全性测试（SAST）分析源代码是否存在异常安全模式，并指出容易出现缺陷的代码。SAST 依赖于文档（需求规范、设计文档和设计规范）和应用程序源代码等静态输入来测试一系列已知的安全问题。静态代码分析器可以帮助加快大量代码的分析。[NIST Quality Group](https://www.nist.gov/itl/ssd/software-quality-group) 对[源代码安全性分析器](https://www.nist.gov/itl/ssd/software-quality-group/source-code-security-analyzers)进行了比较，包括针对[字节码扫描器](https://samate.nist.gov/index.php/Byte_Code_Scanners.html)和[二进制码扫描器](https://samate.nist.gov/index.php/Binary_Code_Scanners.html)的开源工具。

 动态分析安全测试（DAST）方法针对正在运行的应用程序执行测试，以识别潜在的意外行为，能够对静态测试作出补充。动态测试可用于检测通过静态分析无法检测到的潜在问题。通过在代码存储库、构建和管道阶段进行测试，您可以检查出不同类型的潜在问题，防止这些问题进入到代码中。[Amazon Q 开发者版](https://aws.amazon.com/q/developer/)在构建器的 IDE 中提供代码建议，包括安全扫描。[Amazon CodeGuru 安全防御工具](https://aws.amazon.com/codeguru/)可以识别应用程序开发过程中的严重问题、安全问题以及难以发现的错误，并提供可提高代码质量的建议。提取软件物料清单（SBOM）还可让您提取一份正式记录，其中包含构建软件时使用的各个组件的详细信息和关系。这使您可以为漏洞管理提供信息，并快速识别软件或组件依赖关系以及供应链风险。

 通过 [Security for Developers 讲习会](https://catalog.workshops.aws/sec4devs)，学会使用 AWS 开发人员工具（例如，[AWS CodeBuild](https://aws.amazon.com/codebuild/)、[AWS CodeCommit](https://aws.amazon.com/codecommit/) 和 [AWS CodePipeline](https://aws.amazon.com/codepipeline/)）来自动实施发布管道，包括 SAST 和 DAST 测试方法。

 在 SDLC 中，建立一个迭代过程，其中包括与安全团队一起定期审查应用程序。在发布准备情况审查过程中，应该处理和验证从这些安全审查中收集到的反馈。这些审查建立了健壮的应用程序安全态势，并为构建者提供切实可行的反馈，以解决潜在问题。

### 实施步骤
<a name="implementation-steps"></a>
+  实施一致的 IDE、代码审查和 CI/CD 工具，其中包括安全测试。
+  考虑在 SDLC 中的哪个阶段适合阻塞管道，而不仅仅是通知构建者需要修复问题。
+  [Automated Security Helper (ASH)](https://github.com/awslabs/automated-security-helper) 是开源代码安全扫描工具的一个示例。
+  使用自动化工具（例如，与开发人员 IDE 集成的 [Amazon Q 开发者版](https://aws.amazon.com/q/developer/)，以及用于在提交时扫描代码的 [Amazon CodeGuru 安全防御工具](https://aws.amazon.com/codeguru/)）执行测试或代码分析，有助于构建者适时获得反馈。
+  使用 AWS Lambda 构建应用程序时，您可以使用 [Amazon Inspector](https://docs.aws.amazon.com/inspector/latest/user/scanning-lambda.html) 来扫描函数中的应用程序代码。
+  当 CI/CD 管道中包括自动化测试时，您应该使用工单系统来跟踪软件问题的通知和修正。
+  对于可能生成结果的安全测试，链接到补救指南可帮助构建者提高代码质量。
+  定期分析使用自动化工具获得的结果，以确定下一个自动化、构建者培训或认知宣传活动的优先级。
+  要提取 SBOM 作为 CI/CD 管道的一部分，请使用 [Amazon Inspector SBOM Generator](https://docs.aws.amazon.com/inspector/latest/user/sbom-generator.html)，来为 CycloneDX SBOM 格式的归档、容器映像、目录、本地系统以及编译后的 Go 和 Rust 二进制文件生成 SBOM。

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [DevOps Guidance: DL.CR.3 Establish clear completion criteria for code tasks](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/dl.cr.3-establish-clear-completion-criteria-for-code-tasks.html) 

 **相关文档：**
+  [持续交付和持续部署](https://aws.amazon.com/devops/continuous-delivery/) 
+  [AWS DevOps 能力合作伙伴](https://aws.amazon.com/devops/partner-solutions/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc&partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc&awsf.partner-solutions-filter-partner-type=partner-type%23technology&awsf.Filter%20Name%3A%20partner-solutions-filter-partner-location=*all&awsf.partner-solutions-filter-partner-location=*all&partner-case-studies-cards.sort-by=item.additionalFields.sortDate&partner-case-studies-cards.sort-order=desc&awsm.page-partner-solutions-cards=1) 
+  [适用于应用程序安全性的 AWS 安全能力合作伙伴](https://aws.amazon.com/security/partner-solutions/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc&partner-solutions-cards.sort-by=item.additionalFields.partnerNameLower&partner-solutions-cards.sort-order=asc&awsf.partner-solutions-filter-partner-type=*all&awsf.Filter%20Name%3A%20partner-solutions-filter-partner-categories=use-case%23app-security&awsf.partner-solutions-filter-partner-location=*all&partner-case-studies-cards.sort-by=item.additionalFields.sortDate&partner-case-studies-cards.sort-order=desc&events-master-partner-webinars.sort-by=item.additionalFields.startDateTime&events-master-partner-webinars.sort-order=asc) 
+  [选择 Well-Architected CI/CD 方法](https://aws.amazon.com/blogs/devops/choosing-well-architected-ci-cd-open-source-software-aws-services/) 
+  [Secrets detection in Amazon CodeGuru Security](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/recommendations.html#secrets-detection) 
+  [Amazon CodeGuru Security Detection Library](https://docs.aws.amazon.com/codeguru/detector-library/) 
+  [通过有效的治理加快 AWS 上的部署](https://aws.amazon.com/blogs/architecture/accelerate-deployments-on-aws-with-effective-governance/) 
+  [AWS 方法如何自动实现无需干预的安全部署](https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/) 
+  [How Amazon CodeGuru Security helps you effectively balance security and velocity](https://aws.amazon.com/blogs/security/how_amazon_codeguru_security_helps_effectively_balance_security_and_velocity/) 

 **相关视频：**
+  [无需干预：在亚马逊自动实现持续交付管道](https://www.youtube.com/watch?v=ngnMj1zbMPY) 
+  [自动执行跨账户 CI/CD 管道](https://www.youtube.com/watch?v=AF-pSRSGNks) 
+  [The Software Development Prcess at Amazon](https://www.youtube.com/watch?t=1340&v=52SC80SFPOw&feature=youtu.be) 
+  [Testing software and systems at Amazon](https://www.youtube.com/watch?v=o1sc3cK9bMU&t) 

 **相关示例：**
+  [开发人员的行业意识](https://owasp.org/www-project-top-ten/) 
+  [Automated Security Helper (ASH)](https://github.com/awslabs/automated-security-helper) 
+  [AWS CodePipeline Governance - Github](https://github.com/awslabs/aws-codepipeline-governance) 