

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立測試案例
<a name="create-test-scenario"></a>

建立測試案例包含四個主要步驟：設定一般設定、定義案例、塑造流量模式，以及檢閱您的組態。

## 步驟 1：一般設定
<a name="step-1-general-settings"></a>

為您的負載測試設定基本參數，包括測試名稱、描述和一般組態選項。

 **測試識別** 
+  **測試名稱** （必要） - 測試案例的描述性名稱
+  **測試描述** （必要） - 測試用途和組態的其他詳細資訊
+  **標籤 **（選用） - 新增最多 5 個標籤來分類和整理您的測試案例

 **排程選項** 

設定測試應執行的時間：
+  **立即執行** - 在建立後立即執行測試。  
![\[已選取立即執行選項\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-now.png)
+  **執行一次** - 排定在特定日期和時間執行測試。  
![\[使用日期和時間選擇器執行一次選項\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-once.png)
+  **在排程上執行** - 使用以 Cron 為基礎的排程，定期自動執行測試。您可以從常見模式 （每小時、每日、每週） 中選取，或定義自訂 Cron 表達式。  
![\[使用 Cron 模式選取器在排程選項上執行\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/distributed-load-testing-on-aws/images/schedule-run-recurring.png)

 **排程工作流程** 

當您排程測試時，會發生下列工作流程：
+ 排程參數會透過 Amazon API Gateway 傳送至解決方案的 API。
+ API 會將參數傳遞至 Lambda 函數，該函數會建立排程在指定日期執行的 CloudWatch Events 規則。
+ 對於一次性測試 （執行一次），CloudWatch Events 規則會在指定的日期執行，Lambda `api-services` 函數會執行測試。
+ 對於週期性測試 （在排程上執行），CloudWatch Events 規則會在指定的日期啟用，而 `api-services` Lambda 函數會根據指定的頻率建立立即且重複執行的新規則。

 **即時資料** 

選取**包含即時資料**核取方塊，以在測試執行時檢視即時指標。啟用時，您可以監控：
+ 平均回應時間。
+ 虛擬使用者計數。
+ 成功的請求計數。
+ 失敗的請求計數。

即時資料功能提供即時圖表，並以一秒的間隔彙總資料。如需詳細資訊，請參閱[使用即時資料進行監控](run-test-scenario.md#monitoring-live-data)。

## 步驟 2：案例組態
<a name="step-2-scenario-configuration"></a>

定義特定測試案例，然後選取您偏好的測試架構。

 **測試類型選擇** 

選擇您要執行的負載測試類型：

![\[選取要執行的測試類型\]](http://docs.aws.amazon.com/zh_tw/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`、`HEAD`、 `PATCH`和 `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)、漸進測試時間和其他負載參數，但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 （每個任務的虛擬使用者）、漸進測試持續時間和保留持續時間。

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

設定測試期間流量的分佈方式，包括多區域支援。

![\[流量形狀組態畫面\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/distributed-load-testing-on-aws/images/traffic-shape-overview.png)


 **多區域流量組態** 

選取一或多個 AWS 區域，以依地理分佈負載測試。針對每個選取的區域，設定：

 **任務計數**   
將在 Fargate 叢集中針對測試案例啟動的容器 （任務） 數量。一旦帳戶達到「遠的資源」限制，就不會建立其他任務。

 **並行數量**   
每個任務產生的並行虛擬使用者數量。建議的限制是根據每個任務 2 個 vCPUs的預設設定。並行受限於 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 Elastic Container Service (Amazon ECS) 叢集。

1. 監控時，請監看 CPU 和記憶體。如果 CPU 未超過 75% 或記憶體未超過 85% （忽略一次性峰值），您可以對更多使用者執行另一個測試。

如果測試未超過資源限制，請重複步驟 1-3。或者，您可以增加容器資源，以允許更多並行使用者。不過，這會產生較高的成本。如需詳細資訊，請參閱 開發人員指南。

**注意**  
為了獲得準確的結果，在確定並行使用者限制時，一次只執行一個測試。所有測試都使用相同的叢集，CloudWatch 容器洞察會根據叢集彙總效能資料。這會導致這兩個測試同時向 CloudWatch Container Insights 報告，這會導致單一測試的資源使用率指標不準確。

如需校正每個引擎使用者的詳細資訊，請參閱 BlazeMeter 文件中的[校正 Taurus 測試](https://guide.blazemeter.com/hc/en-us/articles/360000864389-Calibrating-a-Taurus-Test-Calibrating-a-Taurus-Test)。

**注意**  
解決方案會顯示每個區域的可用容量資訊，協助您在可用限制內規劃測試組態。

 **可用任務的資料表** 

**可用任務表**會顯示每個所選區域的資源可用性：
+  **區域** - AWS 區域名稱。
+  **每個任務vCPUs ** - 分配給每個任務CPUs 數量 （預設值：2)。
+  **DLT 任務限制** - 根據帳戶的 Fargate 限制可建立的任務數量上限 （預設值：2000)。
+  **可用的 DLT 任務** - 目前可在區域中使用的任務數量 （預設值：2000)。

![\[顯示每個區域可用任務的表格\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/distributed-load-testing-on-aws/images/traffic-shape-available-tasks.png)


若要增加每個任務的可用任務或 vCPUs 數量，請參閱 開發人員指南。

 **測試持續時間** 

定義您的負載測試執行的時間長度：

 **漸進測試**   
達到目標並行的時間。在此期間，負載會從 0 逐漸增加到設定的並行層級。

 **保留**   
維持目標負載的持續時間。測試會在此期間以完整並行繼續。

## 步驟 4：檢閱和建立
<a name="step-4-review-create"></a>

在建立測試案例之前，請先檢閱您的所有組態。驗證：
+ 一般設定 （名稱、描述、排程）。
+ 案例組態 （測試類型、端點或指令碼）。
+ 流量形狀 （任務、使用者、持續時間、區域）。

檢閱後，選擇**建立**以儲存您的測試案例。

 **管理測試案例** 

建立測試案例後，您可以：
+  **編輯** - 修改測試組態。常用案例包括：
  + 精簡流量形狀以達到所需的交易速率。
+  **複製** - 複製現有的測試案例以建立變化。常用案例包括：
  + 更新端點或新增標頭/內文參數。
  + 新增或修改測試指令碼。
+  **刪除** - 移除您不再需要的測試案例。