

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# CI/CD 管道测试
<a name="tests-for-cicd-pipelines"></a>

部署管线中经常提到的两种类型的自动化测试是*单元测试*和*集成测试*。但是，有许多类型的测试可以在代码库和开发环境中运行。[AWS Deployment Pipeline Reference Architecture](https://pipelines.devops.aws.dev/application-pipeline/) 定义了以下类型的测试：
+ **单元测试**：这些测试构建并运行应用程序代码，以验证其性能是否符合预期。它们模拟代码库中使用的所有外部依赖关系。单元测试工具的示例包括 [JUnit](https://junit.org/)、[Jest](https://jestjs.io/) 和 [pytest](https://docs.pytest.org/en/stable/)。
+ **集成测试**：这些测试通过对预调配的测试环境进行测试来验证应用程序是否满足技术要求。集成测试工具的示例包括 [Cucumber](https://cucumber.io/)、[vRest NG](https://vrest.io/) 和 [integ-tests](https://docs.aws.amazon.com/cdk/api/v2/docs/integ-tests-alpha-readme.html)（适用于 AWS CDK）。
+ **验收测试**：这些测试通过对预调配的测试环境进行测试来验证应用程序是否满足用户要求。验收测试工具的示例包括 [Cypress](https://cypress.io/) 和 [Selenium](https://selenium.dev/)。
+ **综合测试**：这些测试在后台持续运行，以生成流量并验证系统是否正常运行。合成测试工具的示例包括 [Amazon Synth CloudWatch etics 和 [Dynatr](https://www.dynatrace.com/monitoring/platform/synthetic-monitoring/) ace 合成](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)监控。
+ **性能测试**：这些测试模拟生产环境的容量。其确定应用程序是否满足性能要求，并将指标与过去的性能进行比较。性能测试工具的示例包括 [Apache JMeter](https://jmeter.apache.org/)、[Locust](https://locust.io/) 和 [Gatling](https://gatling.io/)。
+ **韧性测试**：也称为*混沌测试*，这些测试将故障注入环境中，以识别风险区域。然后，将注入故障的时间段与没有故障的时间段进行比较。韧性测试工具的示例包括 [AWS Fault Injection Service](https://aws.amazon.com/fis/) 和 [Gremlin](https://www.gremlin.com/)。
+ **静态应用程序安全测试（SAST）**：这些测试分析代码中是否存在安全违规行为，例如 [SQL 注入](https://owasp.org/www-community/attacks/SQL_Injection)或[跨站脚本攻击（XSS）](https://owasp.org/www-community/attacks/xss/)。SAST 工具的示例包括[亚马逊 CodeGuru[SonarQube](https://www.sonarqube.org/)](https://aws.amazon.com/codeguru/)、和 [Check](https://checkmarx.com/) marx。
+ **动态应用程序安全测试（DAST）**：这些测试也称为*渗透测试*或 *pen 测试*。其可以识别漏洞，例如预调配测试环境中的 SQL 注入或 XSS。[DAST 工具的示例包括 [Zed Attack Proxy (ZAP)](https://www.zaproxy.org/) 和 HCL。 AppScan](https://www.hcltechsw.com/appscan)有关更多信息，请参阅 [Penetration Testing](https://aws.amazon.com/security/penetration-testing/)。

并非所有完全运行的 CI/CD 管道都能运行所有这些测试。但是，管线至少应对代码库运行单元测试和 SAST 测试，并对测试环境运行集成测试和验收测试。