View a markdown version of this page

AWS 上的分散式負載測試如何運作 - AWS 上的分散式負載測試

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

AWS 上的分散式負載測試如何運作

下列詳細明細顯示執行測試案例所涉及的步驟。

測試工作流程

image3

  1. 您可以使用 Web 主控台,將包含組態詳細資訊的測試案例提交至解決方案的 API。

  2. 測試案例組態會以 JSON 檔案 () 的形式上傳至 Amazon Simple Storage Service (Amazon S3)s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json

  3. AWS Step Functions 狀態機器會使用測試 ID、任務計數、測試類型和檔案類型做為 AWS Step Functions 狀態機器輸入來執行。如果已排程測試,它會先建立 CloudWatch Events 規則,該規則會在指定的日期觸發 AWS Step Functions。如需排程工作流程的詳細資訊,請參閱本指南的測試排程工作流程一節。

  4. 組態詳細資訊會存放在案例 Amazon DynamoDB 資料表中。

  5. 在 AWS Step Functions 任務執行器工作流程中, task-status-checker AWS Lambda 函數會檢查 Amazon Elastic Container Service (Amazon ECS) 任務是否已針對相同的測試 ID 執行。如果發現具有相同測試 ID 的任務正在執行,則會導致錯誤。如果 AWS Fargate 叢集中沒有執行中的 Amazon ECS 任務,則函數會傳回測試 ID、任務計數和測試類型。

  6. 任務執行器 AWS Lambda 函數會從上一個步驟取得任務詳細資訊,並在 AWS Fargate 叢集中執行 Amazon ECS 工作者任務。Amazon ECS API 使用 RunTask 動作來執行工作者任務。這些工作者任務會啟動,然後等待領導者任務的開始訊息,以開始測試。RunTask 動作限制為每個定義 10 個任務。如果您的任務計數超過 10,任務定義將執行多次,直到所有工作者任務都已啟動為止。函數也會產生字首,以區分結果剖析 AWS Lambda 函數中的目前測試。

  7. task-status-checker AWS Lambda 函數會檢查所有 Amazon ECS 工作者任務是否以相同的測試 ID 執行。如果任務仍在佈建,它會等待一分鐘並再次檢查。執行所有 Amazon ECS 任務後,它會傳回測試 ID、任務計數、測試類型、所有任務 IDs和字首,並將其傳遞給任務執行器函數。

  8. 任務執行器 AWS Lambda 函數會再次執行,這次啟動單一 Amazon ECS 任務以做為領導節點。此 ECS 任務會將啟動測試訊息傳送至每個工作者任務,以同時啟動測試。

  9. task-status-checker AWS Lambda 函數會再次檢查 Amazon ECS 任務是否以相同的測試 ID 執行。如果任務仍在執行中,它會等待一分鐘並再次檢查。一旦沒有執行中的 Amazon ECS 任務,它會傳回測試 ID、任務計數、測試類型和字首。

  10. 當任務執行器 AWS Lambda 函數在 AWS Fargate 叢集中執行 Amazon ECS 任務時,每個任務會從 Amazon S3 下載測試組態並開始測試。

  11. 測試執行後,Amazon CloudWatch 會記錄每個任務的平均回應時間、並行使用者數量、成功請求數量,以及失敗的請求數量,並且可以在 CloudWatch 儀表板中檢視。

  12. 如果您在測試中包含即時資料,解決方案會使用訂閱篩選條件在 CloudWatch 中篩選即時測試結果。然後,解決方案會將資料傳遞至 Lambda 函數。

  13. Lambda 函數接著會建構收到的資料,並將其發佈至 AWS IoT Core 主題。

  14. Web 主控台會訂閱測試的 AWS IoT Core 主題,並接收發佈至主題的資料,以在測試執行時繪製即時資料的圖表。

  15. 測試完成後,容器映像會將詳細報告匯出為 XML 檔案至 Amazon S3。每個檔案都會獲得檔案名稱的 UUID。例如,s3://dlte-bucket/test-scenarios/<$TEST_ID>/results/<$UUID>.json。

  16. 當 XML 檔案上傳到 Amazon S3 時,結果剖析器 AWS Lambda 函數會從字首開始讀取 XML 檔案中的結果,並剖析和彙總所有結果為一個摘要結果。

  17. 結果剖析器 AWS Lambda 函數會將彙總結果寫入 Amazon DynamoDB 資料表。

MCP 伺服器工作流程 (選用)

如果您部署選用的 MCP Server 整合,AI 代理器可以透過下列工作流程存取和分析負載測試資料:

MCP 伺服器架構

MCP 伺服器架構顯示與 DLT 元件的整合
  1. 客戶互動 - 客戶透過 AWS AgentCore Gateway 託管的 MCP 端點與 DLT 的 MCP 互動。AI 代理器會連線至此端點,請求存取以載入測試資料。

  2. 授權 - AgentCore Gateway 會對 Solution Cognito 使用者集區應用程式用戶端處理授權。閘道會驗證使用者的 Cognito 權杖,以確保他們具有存取 DLT MCP 伺服器的許可。授權使用者可透過僅限唯讀操作的代理工具存取獲得存取權。

  3. 工具規格 - AgentCore Gateway 連接到 DLT MCP Server Lambda 函數。工具規格定義 AI 代理器可用來與負載測試資料互動的可用工具。

  4. 唯讀 API 存取 - Lambda 函數的範圍限定為透過現有 DLT API Gateway 端點的唯讀 API 存取。函數提供四個主要操作:

    • 列出案例 - 從 DynamoDB 案例資料表擷取測試案例的清單

    • 取得案例測試結果 - 從 DynamoDB 和 S3 存取特定案例的詳細測試結果

    • 取得 Fargate 負載測試執行器 - 查詢在 ECS 叢集中執行 Fargate 任務的相關資訊

    • 取得可用的區域堆疊 - 從 CloudFormation 擷取已部署區域基礎設施的相關資訊

MCP Server 整合利用現有的 DLT 基礎設施 (API Gateway、Cognito、DynamoDB、S3),提供安全、唯讀的存取權,以測試 AI 驅動的分析和洞察資料。