本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS 上的分散式負載測試的運作方式
下列詳細明細顯示執行測試案例所涉及的步驟。
測試工作流程
-
您可以使用 Web 主控台,將包含組態詳細資訊的測試案例提交至解決方案的 API。
-
測試案例組態會以 JSON 檔案 () 的形式上傳至 Amazon Simple Storage Service (Amazon S3)
s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json
。 -
AWS Step Functions 狀態機器會使用測試 ID、任務計數、測試類型和檔案類型做為 AWS Step Functions 狀態機器輸入來執行。如果已排程測試,它會先建立 CloudWatch Events 規則,該規則會在指定的日期觸發 AWS Step Functions。如需排程工作流程的詳細資訊,請參閱本指南的測試排程工作流程一節。
-
組態詳細資訊會存放在案例 Amazon DynamoDB 資料表中。
-
在 AWS Step Functions 任務執行器工作流程中, task-status-checker AWS Lambda 函數會檢查 Amazon Elastic Container Service (Amazon ECS) 任務是否已針對相同的測試 ID 執行。如果發現具有相同測試 ID 的任務正在執行,則會導致錯誤。如果 AWS Fargate 叢集中沒有執行中的 Amazon ECS 任務,則函數會傳回測試 ID、任務計數和測試類型。
-
任務執行器 AWS Lambda 函數會從上一個步驟取得任務詳細資訊,並在 AWS Fargate 叢集中執行 Amazon ECS 工作者任務。Amazon ECS API 使用 RunTask 動作來執行工作者任務。這些工作者任務會啟動,然後等待領導者任務的開始訊息,以開始測試。RunTask 動作限制為每個定義 10 個任務。如果您的任務計數超過 10,任務定義會執行多次,直到所有工作者任務都啟動為止。函數也會產生字首,以區分結果剖析 AWS Lambda 函數中的目前測試。
-
task-status-checker AWS Lambda 函數會檢查所有 Amazon ECS 工作者任務是否以相同的測試 ID 執行。如果任務仍在佈建,它會等待一分鐘並再次檢查。執行所有 Amazon ECS 任務後,它會傳回測試 ID、任務計數、測試類型、所有任務 IDs和字首,並將其傳遞給任務執行器函數。
-
任務執行器 AWS Lambda 函數會再次執行,這次啟動單一 Amazon ECS 任務以做為領導節點。此 ECS 任務會將啟動測試訊息傳送至每個工作者任務,以同時啟動測試。
-
task-status-checker AWS Lambda 函數會再次檢查 Amazon ECS 任務是否以相同的測試 ID 執行。如果任務仍在執行中,它會等待一分鐘並再次檢查。一旦沒有執行中的 Amazon ECS 任務,它會傳回測試 ID、任務計數、測試類型和字首。
-
當任務執行器 AWS Lambda 函數在 AWS Fargate 叢集中執行 Amazon ECS 任務時,每個任務會從 Amazon S3 下載測試組態並開始測試。
-
測試執行後,Amazon CloudWatch 會記錄每個任務的平均回應時間、並行使用者數量、成功請求數量,以及失敗的請求數量,並且可以在 CloudWatch 儀表板中檢視。
-
如果您在測試中包含即時資料,解決方案會使用訂閱篩選條件在 CloudWatch 中篩選即時測試結果。然後,解決方案會將資料傳遞至 Lambda 函數。
-
Lambda 函數接著會建構收到的資料,並將其發佈至 AWS IoT Core 主題。
-
Web 主控台會訂閱測試的 AWS IoT Core 主題,並接收發佈至主題的資料,以在測試執行時繪製即時資料的圖表。
-
測試完成後,容器映像會將詳細報告匯出為 XML 檔案至 Amazon S3。每個檔案都會獲得檔案名稱的 UUID。例如,s3://dlte-bucket/test-scenarios/<$TEST_ID>/results/<$UUID>.json。
-
當 XML 檔案上傳至 Amazon S3 時,結果剖析器 AWS Lambda 函數會從字首開始讀取 XML 檔案中的結果,並剖析和彙總所有結果為一個摘要結果。
-
結果剖析器 AWS Lambda 函數會將彙總結果寫入 Amazon DynamoDB 資料表。