

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

# 创建测试场景
<a name="create-test-scenario"></a>

创建测试场景包括四个主要步骤：配置常规设置、定义场景、调整流量模式以及查看配置。

## 步骤 1：常规设置
<a name="step-1-general-settings"></a>

配置负载测试的基本参数，包括测试名称、描述和常规配置选项。

 **测试识别** 
+  **测试名称**（必填）-测试场景的描述性名称
+  **测试描述**（必填）-有关测试目的和配置的其他详细信息
+  **标签**（可选）-添加最多 5 个标签来对您的测试场景进行分类和整理

 **日程安排选项** 

配置测试的运行时间：
+  **立即运行**-创建后立即执行测试。  
![\[已选择 “立即运行” 选项\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-now.png)
+  **运行一次**-将测试安排在特定的日期和时间运行。  
![\[使用日期和时间选择器运行一次选项\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-once.png)
+  **按计划运行**-使用基于 cron 的计划定期自动运行测试。您可以从常用模式（每小时、每天、每周）中进行选择，也可以定义自定义 cron 表达式。  
![\[使用 cron 模式选择器按计划运行选项\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-recurring.png)

 **调度工作流程** 

安排测试时，会出现以下工作流程：
+ 计划参数通过 Amazon API Gateway 发送到解决方案的 API。
+ API 将参数传递给 Lambda 函数，该函数创建计划在指定日期运行 CloudWatch 的事件规则。
+ 对于一次性测试（运行一次）， CloudWatch 事件规则在指定日期运行，`api-services`Lambda 函数执行测试。
+ 对于定期测试（按计划运行）， CloudWatch 事件规则在指定日期激活，而 Lamb `api-services` da 函数会创建一个根据指定频率立即重复运行的新规则。

 **实时数据** 

选中 “**包括实时数据**” 复选框可在测试运行时查看实时指标。启用后，您可以监控：
+ 平均响应时间。
+ 虚拟用户计数。
+ 成功的请求计数。
+ 失败的请求计数。

实时数据功能提供实时图表，每隔一秒钟聚合数据。有关更多信息，请参阅[使用实时数据进行监控](run-test-scenario.md#monitoring-live-data)。

## 步骤 2：场景配置
<a name="step-2-scenario-configuration"></a>

定义特定的测试场景并选择您的首选测试框架。

 **测试类型选择** 

选择要执行的负载测试类型：

![\[选择要运行的测试类型\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/distributed-load-testing-on-aws/images/test-types.png)

+  **单个 HTTP 端点**-使用简单的配置测试单个 API 端点或网页。
+  **JMeter**-上传 JMeter 测试脚本（.jmx 文件或.zip 存档）。
+  **K6**-上传 K6 测试脚本（.js 文件或.zip 存档）。
+  **Locust**-上传 Locust 测试脚本（.py 文件或.zip 存档）。

 **HTTP 端点配置**图片:: images/test-types.png [选择要运行的测试类型] 选择 “单个 HTTP 端点” 后，配置以下设置：

 **HTTP 终端节点**（必填）  
输入要测试的端点的完整 URL。例如 `https://api.example.com/users`。确保可以从 AWS 基础设施访问终端节点。

 **HTTP 方法**（必填）  
为您的请求选择 HTTP 方法。默认值为 `GET`。其他选项包括`POST``PUT`、`DELETE`、`PATCH`、`HEAD`、和`OPTIONS`。

 **请求标头**（可选）  
在您的请求中添加自定义 HTTP 标头。常见示例包括：  
+  `Content-Type: application/json` 
+  `Authorization: Bearer <token>` 
+  `User-Agent: LoadTest/1.0` 

  选择 “**添加标题**” 以包含多个标题。

 **车身有效载荷**（可选）  
为 POST 或 PUT 请求添加请求正文内容。支持 JSON、XML 或纯文本格式。例如：`{"userId": 123, "action": "test"}`。

 **测试框架脚本** 

使用 JMeter K6 或 Locust 时，请上传您的测试脚本文件或包含测试脚本和支持文件的.zip 存档。对于 JMeter，您可以将自定义插件包含在.zip 存档中的`/plugins`文件夹中。

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

## 第 3 步：流量形状
<a name="step-3-traffic-shape"></a>

配置测试期间流量的分配方式，包括多区域支持。

![\[交通形状配置屏幕\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/distributed-load-testing-on-aws/images/traffic-shape-overview.png)


 **多区域流量配置** 

选择一个或多个 AWS 区域，按地理位置分配您的负载测试。对于每个选定的区域，请配置：

 **任务计数**   
在测试场景中，将在 Fargate 集群中启动的容器（任务）数量。一旦账户达到 “已达到 Fargate 资源” 限制，就不会创建其他任务。

 **并发**   
每个任务生成的并发虚拟用户数。建议的限制基于CPUs 每个任务 2 v 的默认设置。并发性受到 CPU 和内存资源的限制。

### 确定用户数量
<a name="determine-number-of-users"></a>

容器在测试中可以支持的用户数量可以通过逐步增加用户数量和监控 Amazon 中的性能来确定 CloudWatch。一旦你观察到 CPU 和内存性能已接近极限，你就达到了容器在默认配置（2 个 vCPU 和 4 GB 内存）下可以支持的最大用户数。

 **校准过程** 

您可以使用以下示例开始确定测试的并发用户限制：

1. 创建不超过 200 个用户的测试。

1. 测试运行时，使用[CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch/home)监控 CPU 和内存：

   1. 在左侧导航窗格的 “**容器见解**” 下，选择 “**性能监控**”。

   1. 在**性能监控**页面上，从左侧下拉菜单中选择 **ECS 集群**。

   1. 从右侧的下拉菜单中，选择您的亚马逊弹性容器服务 (Amazon ECS) Container Service 集群。

1. 在监控时，请注意CPU和内存。如果 CPU 未超过 75% 或内存未超过 85%（忽略一次性峰值），则可以对更多用户进行另一次测试。

如果测试未超过资源限制，请重复步骤 1-3。或者，您可以增加容器资源以允许更多的并发用户。但是，这会导致更高的成本。有关详细信息，请参阅《开发人员指南》。

**注意**  
为了获得准确的结果，在确定并发用户限制时，一次只能运行一个测试。所有测试都使用同一个集群， CloudWatch 容器见解会根据集群聚合性能数据。这会导致两个测试同时报告给 Conta CloudWatch iner Insights，从而导致单个测试的资源利用率指标不准确。

有关校准每个引擎的用户数的更多信息，请参阅文档中的[校准 Taurus 测试](https://guide.blazemeter.com/hc/en-us/articles/360000864389-Calibrating-a-Taurus-Test-Calibrating-a-Taurus-Test)。 BlazeMeter 

**注意**  
该解决方案显示每个区域的可用容量信息，帮助您在可用限制范围内规划测试配置。

 **可用任务表** 

**可用任务表**显示每个选定区域的资源可用性：
+  **区域**-AWS 区域名称。
+  **v CPUs 每个任务**- CPUs 分配给每个任务的虚拟数量（默认值：2）。
+  **DLT 任务限制**-根据您的账户的 Fargate 限制可以创建的最大任务数（默认值：2000）。
+  **可用的 DLT 任务**-该地区当前可供使用的任务数（默认值：2000）。

![\[该表显示了每个区域的可用任务\]](http://docs.aws.amazon.com/zh_cn/solutions/latest/distributed-load-testing-on-aws/images/traffic-shape-available-tasks.png)


要增加可用任务的数量或CPUs 每个任务的 v，请参阅开发者指南。

 **测试时长** 

定义您的负载测试将运行多长时间：

 **Ramp Up**   
达到目标并发的时间。在此期间，负载从 0 逐渐增加到配置的并发级别。

 **等一下**   
保持目标负荷的持续时间。在此期间，测试将以完全并发的状态继续进行。

## 步骤 4：审核并创建
<a name="step-4-review-create"></a>

在创建测试场景之前，请检查您的所有配置。验证:
+ 常规设置（名称、描述、日程安排）。
+ 场景配置（测试类型、端点或脚本）。
+ 流量形状（任务、用户、时长、区域）。

查看完毕后，选择 “**创建**” 以保存您的测试场景。

 **管理测试场景** 

创建测试场景后，您可以：
+  **编辑**-修改测试配置。常见使用案例包括：
  + 调整流量形态以实现所需的交易速率。
+  **复制**-复制现有测试场景以创建变体。常见使用案例包括：
  + 更新端点或添加 headers/body 参数。
  + 添加或修改测试脚本。
+  **删除-删除**不再需要的测试场景。