

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

# 测试自动化
<a name="test-automation"></a>

使用专门的框架和工具进行自动测试可以减少人为干预并最大限度地提高质量。自动性能测试与自动化测试（例如单元测试和集成测试）没有什么不同。

在不同阶段使用 DevOps 管道进行性能测试。

![\[流程图显示了五个阶段。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/performance-engineering-aws/images/performance-engineering-devops-pipeline.png)


测试自动化管道的五个阶段是：

1. **设置**-在此阶段使用测试数据[生成部分中描述的测试数据](test-data-generation.md)方法。生成真实的测试数据对于获得有效的测试结果至关重要。您必须谨慎创建涵盖各种用例并与实时制作数据密切匹配的多样化测试数据。在运行全面性能测试之前，您可能需要运行初始试用测试来验证测试脚本、环境和监控工具。

1. **测试工具**-要进行性能测试，请选择适当的负载测试工具，例如 JMeter 或 ghz。在模拟真实用户负载方面，请考虑最适合您的业务需求的方案。

1. **测试运行**-在建立测试工具和环境后，在一系列预期的用户负载和持续时间内运行 end-to-end性能测试。在整个测试过程中，密切监视被测系统的运行状况。这通常是一个长期运行的阶段。监控自动测试失效的错误率，如果错误太多，则停止测试。

   负载测试工具可提供对资源利用率、响应时间和潜在瓶颈的见解。

1. **测试报告**-收集测试结果以及应用程序和测试配置。自动收集应用程序配置、测试配置和结果，这有助于记录与性能测试相关的数据并将其集中存储。集中维护绩效数据有助于提供良好的见解，并支持以编程方式为您的业务定义成功标准。

1. **清理**-完成性能测试运行后，重置测试环境和数据，为后续运行做好准备。首先，恢复运行期间对测试数据所做的任何更改。必须将数据库和其他数据存储恢复到其原始状态，还原测试期间生成的任何新、更新或删除的记录。

您可以重复使用管道多次重复测试，直到结果反映出您想要的性能。您还可以使用管道来验证代码更改不会影响性能。您可以在非工作时间运行代码验证测试，并使用可用的测试和可观察性数据进行故障排除。

最佳做法包括以下内容：
+ 记录开始和结束时间，并自动生成以 URLs 供记录，这有助于您在相应的时间窗内筛选可观测性数据。监控和跟踪系统。
+ 调用测试时，在标题中注入测试标识符。应用程序开发人员可以通过在后端使用标识符作为过滤器来丰富其日志、监控和跟踪数据。
+ 将管道限制为一次只能运行一次。运行并发测试会产生噪音，从而在故障排除期间造成混乱。在专用的性能环境中运行测试也很重要。

## 测试自动化工具
<a name="automation-tools"></a>

测试工具在任何测试自动化中都起着重要作用。开源测试工具的热门选择包括以下几种：
+ [Apache JMeter](https://jmeter.apache.org/) 是经验丰富的强者。多年来，Apache JMeter 变得更加可靠，并增加了功能。利用图形界面，您无需掌握编程语言即可创建复杂的测试。诸如此类的公司都 BlazeMeter支持 Apache JMeter。
+ [K6](https://k6.io/) 是一款免费工具，提供支持、负载源托管以及用于组织、运行和分析负载测试的集成 Web 界面。
+ [Vegeta](https://github.com/tsenart/vegeta) 负载测试遵循不同的概念。您无需定义并发性或向系统施加负载，而是定义一定的速率。然后，该工具会创建独立于系统响应时间的负载。
+ He@@ [y](https://github.com/rakyll/hey) and [ab](https://httpd.apache.org/docs/2.4/programs/ab.html)，Apache HTTP 服务器基准测试工具，是基本工具，你可以从命令行使用它们在单个端点上运行指定的负载。如果您有服务器可以运行这些工具，这是生成负载最快的方法。即使是本地笔记本电脑也能运行，尽管它可能不够强大，无法产生高负载。
+ g@@ [hz](https://ghz.sh/) 是一个命令行实用程序和 G [o](http://golang.org/) 包，用于负载测试和基准测试 [gRPC 服务](http://grpc.io)。

AWS 提供 AWS 解决方案的分布式负载测试。该解决方案可以创建和模拟成千上万的连接用户，无需配置服务器即可以恒定的速度生成交易记录。有关更多信息，请参阅[AWS 解决方案库](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/)。

您可以使用自动 AWS CodePipeline 执行性能测试管道。有关使用自动执行 API 测试的更多信息 CodePipeline，请参阅[AWS DevOps 博客](https://aws.amazon.com/blogs/devops/automating-your-api-testing-with-aws-codebuild-aws-codepipeline-and-postman/)和[AWS 文档](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)。