

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

# 設計考量
<a name="design-considerations"></a>

本節說明 AWS 上分散式負載測試解決方案的重要設計決策和組態選項，包括支援的應用程式、測試類型、排程選項和部署考量。

## 支援的應用程式
<a name="supported-applications"></a>

只要您有從 AWS 帳戶到應用程式的網路連線，此解決方案支援測試雲端型應用程式和內部部署應用程式。解決方案支援使用 HTTP 或 HTTPS 通訊協定APIs。

## 測試類型
<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 等），並選擇性地新增自訂請求標頭和內文承載。此組態可讓您使用自訂授權字符、內容類型，或應用程式所需的任何其他 HTTP 標頭和請求內文來測試 APIs。

### JMeter 測試
<a name="jmeter-script-support"></a>

使用 Web 主控台建立測試案例時，您可以上傳 JMeter 測試指令碼。解決方案會將指令碼上傳至案例 S3 儲存貯體。當 Amazon ECS 任務執行時，他們會從 S3 下載 JMeter 指令碼並執行測試。

**重要**  
雖然您的 JMeter 指令碼可能定義並行 （虛擬使用者）、交易速率 (TPS)、漸進測試時間和其他負載參數，但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 （每個任務的虛擬使用者）、漸進測試持續時間和保留持續時間。

如果您有 JMeter 輸入檔案，您可以將輸入檔案與 JMeter 指令碼一起壓縮。您可以在建立測試案例時選擇 zip 檔案。

如果您想要包含外掛程式，任何包含在綁定 zip 檔案中 /plugins 子目錄中的 .jar 檔案都會複製到 JMeter 擴充功能目錄，並可用於負載測試。

**注意**  
如果您在 JMeter 指令碼檔案中包含 JMeter 輸入檔案，則必須在 JMeter 指令碼檔案中包含輸入檔案的相對路徑。此外，輸入檔案必須位於相對路徑。例如，當您的 JMeter 輸入檔案和指令碼檔案位於 /home/user 目錄中，而您參考 JMeter 指令碼檔案中的輸入檔案時，輸入檔案的路徑必須為 。/INPUT\_FILES。如果您改為使用 /home/user/INPUT\_FILES，則測試將會失敗，因為它將無法找到輸入檔案。

如果您包含 JMeter 外掛程式，.jar 檔案必須封裝在 zip 檔案根目錄中名為 /plugins 的子目錄中。相對於 zip 檔案的根目錄，jar 檔案的路徑必須是 ./plugins/BUNDLED\_PLUGIN.jar。

如需如何使用 JMeter 指令碼的詳細資訊，請參閱 [JMeter 使用者手冊](https://jmeter.apache.org/usermanual/index.html)。

### K6 測試
<a name="k6-script-support"></a>

解決方案支援 K6 架構型測試。K6 是根據 [AGPL-3.0 授權發行。](https://github.com/grafana/k6/blob/master/LICENSE.md)解決方案會在建立新的 K6 測試時顯示授權確認訊息。您可以在封存檔案中上傳 K6 測試檔案以及任何必要的輸入檔案。

**重要**  
雖然 K6 指令碼可能會定義並行 （虛擬使用者）、階段、閾值和其他負載參數，但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 （每個任務的虛擬使用者）、漸進測試持續時間和保留持續時間。

### Locust 測試
<a name="locust-script-support"></a>

解決方案支援 Locust 架構型測試。您可以上傳 Locust 測試檔案，以及封存檔案中任何必要的輸入檔案。

**重要**  
雖然您的 Locust 指令碼可能會定義並行 （使用者計數）、產生率和其他負載參數，但解決方案會使用您在測試建立期間在流量形狀畫面中指定的值來覆寫這些組態。流量形狀組態可控制測試執行的任務計數、並行 （每個任務的虛擬使用者）、漸進測試持續時間和保留持續時間。

## 排程測試
<a name="scheduling-tests"></a>

解決方案提供三種執行負載測試的執行時間選項：
+  **立即執行** - 在建立後立即執行載入測試
+  **執行一次** - 在未來的特定日期和時間執行測試
+  **在排程上執行** - 使用 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 儀表板會顯示平均回應時間、並行使用者數、成功請求數和失敗請求數。解決方案會依秒彙總每個指標，並每分鐘更新儀表板。

## 使用者管理
<a name="user-management"></a>

在初始組態期間，您會提供 Amazon Cognito 用來授予您存取解決方案 Web 主控台的使用者名稱和電子郵件地址。主控台不提供使用者管理。若要新增其他使用者，您必須使用 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/)。