

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

# 设计注意事项
<a name="design-considerations"></a>

本节介绍了 AWS 上的分布式负载测试解决方案的重要设计决策和配置选项，包括支持的应用程序、测试类型、计划选项和部署注意事项。

## 受支持的应用程序
<a name="supported-applications"></a>

只要您的 AWS 账户与应用程序之间存在网络连接，该解决方案就支持测试基于云的应用程序和本地应用程序。该解决方案支持 APIs 使用 HTTP 或 HTTPS 协议。

## 测试类型
<a name="test-types"></a>

AWS 上的分布式负载测试支持多种测试类型：简单的 HTTP 终端节点测试 JMeter、K6 和 Locust。

### 简单的 HTTP 端点测试
<a name="single-http-support"></a>

Web 控制台提供了 HTTP 端点配置接口，允许您测试任何 HTTP 或 HTTPS 端点，而无需编写自定义脚本。您可以定义端点 URL，从下拉菜单中选择 HTTP 方法（GET、POST、PUT、DELETE 等），还可以选择添加自定义请求标头和正文有效负载。此配置使您能够 APIs 使用自定义授权令牌、内容类型或应用程序所需的任何其他 HTTP 标头和请求正文进行测试。

### JMeter 测试
<a name="jmeter-script-support"></a>

使用 Web 控制台创建测试场景时，可以上传 JMeter 测试脚本。该解决方案将脚本上传到场景 S3 存储桶。当 Amazon ECS 任务运行时，他们会从 S3 下载 JMeter 脚本并执行测试。

**重要**  
尽管您的 JMeter 脚本可以定义并发性（虚拟用户）、交易速率 (TPS)、加速时间和其他加载参数，但该解决方案将使用您在创建测试期间在 Traffic Shape 屏幕中指定的值来覆盖这些配置。Traffic Shape 配置控制测试执行的任务计数、并发度（每个任务的虚拟用户数）、加速持续时间和保持持续时间。

如果您有 JMeter 输入文件，则可以将输入文件与 JMeter 脚本一起压缩。您可以在创建测试场景时选择 zip 文件。

如果要包含插件，则捆绑的 zip 文件的 /plugins 子目录中包含的任何.jar 文件都将被复制到 JMeter 扩展目录中，可供负载测试。

**注意**  
如果在 JMeter 脚本文件中包含 JMeter 输入文件，则必须在 JMeter 脚本文件中包含输入文件的相对路径。此外，输入文件必须位于相对路径上。例如，当您的 JMeter 输入文件和脚本文件位于/ home/user directory and you refer to the input files in the JMeter script file, the path of input files must be ./INPUT\$1FILES. If you use /home/user/INPUT \$1FILES中时，测试将失败，因为它无法找到输入文件。

如果包含 JMeter 插件，则.jar 文件必须捆绑在 zip 文件根目录下名为 /plugins 的子目录中。相对于压缩文件的根目录，jar 文件的路径必须是。 /plugins/bundled\$1plugin.jar。

有关如何使用 JMeter 脚本的更多信息，请参阅[JMeter 用户手册](https://jmeter.apache.org/usermanual/index.html)。

### K6 测试
<a name="k6-script-support"></a>

该解决方案支持基于 K6 框架的测试。K6 是在 [AGPL](https://github.com/grafana/k6/blob/master/LICENSE.md) -3.0 许可下发布的。创建新的 K6 测试时，解决方案会显示许可证确认消息。您可以将 K6 测试文件以及任何必要的输入文件上传到存档文件中。

**重要**  
尽管您的 K6 脚本可以定义并发性（虚拟用户）、阶段、阈值和其他负载参数，但该解决方案将使用您在创建测试期间在 “流量形状” 屏幕中指定的值来覆盖这些配置。Traffic Shape 配置控制测试执行的任务计数、并发度（每个任务的虚拟用户数）、加速持续时间和保持持续时间。

### 蝗虫试验
<a name="locust-script-support"></a>

该解决方案支持基于 Locust 框架的测试。您可以将 Locust 测试文件以及任何必要的输入文件上传到存档文件中。

**重要**  
尽管您的 Locust 脚本可以定义并发性（用户数）、生成率和其他加载参数，但该解决方案将使用您在测试创建期间在 Traffic Shape 屏幕中指定的值来覆盖这些配置。Traffic Shape 配置控制测试执行的任务计数、并发度（每个任务的虚拟用户数）、加速持续时间和保持持续时间。

## 安排测试
<a name="scheduling-tests"></a>

该解决方案为运行负载测试提供了三个执行定时选项：
+  **立即运行**-创建后立即执行负载测试
+  **Run Onc** e-在未来的特定日期和时间执行测试
+  **按计划运行**-使用 cron 表达式创建重复测试来定义计划

选择 “**运行一次**” 时，可以以 24 小时格式指定运行时间以及负载测试应开始运行的运行日期。

选择 “**按计划运行**” 时，可以手动输入 cron 表达式，也可以从常见的 cron 模式中进行选择（例如每小时、每天在特定时间、工作日或每月）。cron 表达式使用精细的计划格式，其中包含分钟、小时、月日、月、星期和年的字段。您还必须指定到期日期，该日期定义了计划测试何时停止运行。有关计划工作原理的更多信息，请参阅本指南的[测试计划工作流程](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-scheduling-workflow.html)部分。

**注意**  
测试时长：安排考试时请考虑测试的总持续时间。例如，启动时间为 10 分钟、保持时间为 40 分钟的测试大约需要 80 分钟才能完成。
最小间隔：确保计划测试之间的间隔长于预计的测试持续时间。例如，如果测试需要大约 80 分钟，则将其安排为不超过每 3 小时运行一次。
每小时限制：即使预计的考试时间少于一小时，系统也不允许安排只有一小时差异的测试。

## 并行测试
<a name="concurrent-tests"></a>

此解决方案为每项测试创建一个 Amazon CloudWatch 控制面板，实时显示 Amazon ECS 集群中运行的所有任务的组合输出。 CloudWatch 控制面板显示平均响应时间、并发用户数、成功请求数和失败请求数。该解决方案按秒汇总每个指标，并每分钟更新一次仪表板。

## User management
<a name="user-management"></a>

在初始配置期间，您需要提供一个用户名和电子邮件地址，Amazon Cognito 使用该用户名和电子邮件地址来授予您访问解决方案网络控制台的权限。控制台不提供用户管理。要添加其他用户，您必须使用 Amazon Cognito 控制台。有关更多信息，请参阅 *Amazon Cognito 开发者*指南中的[管理用户池](https://docs.aws.amazon.com/cognito/latest/developerguide/managing-users.html)中的用户。

要将现有用户迁移到 Amazon Cognito 用户池，请参阅 AWS 博客《将用户[迁移到 Amazon Cognito 用户池的方法](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools)》。

## 区域部署
<a name="regional-deployment"></a>

此解决方案使用 Amazon Cognito，仅在特定的 AWS 区域可用。因此，您必须在可用 Amazon Cognito 的区域部署此解决方案。有关按地区划分的最新可用服务，请参阅 [AWS 区域服务列表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。