本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立測試案例
建立測試案例包含四個主要步驟:設定一般設定、定義案例、塑造流量模式,以及檢閱您的組態。
步驟 1:一般設定
為您的負載測試設定基本參數,包括測試名稱、描述和一般組態選項。
測試識別
-
測試名稱 (必要) - 測試案例的描述性名稱
-
測試描述 (必要) - 測試用途和組態的其他詳細資訊
-
標籤 (選用) - 新增最多 5 個標籤來分類和組織您的測試案例
排程選項
設定測試應執行的時間:
-
立即執行 - 建立後立即執行測試。
-
執行一次 - 排定在特定日期和時間執行測試。
-
在排程上執行 - 使用以 Cron 為基礎的排程,定期自動執行測試。您可以從常見模式 (每小時、每日、每週) 中選取,或定義自訂 Cron 表達式。如需接受 Cron 格式、支援模式和限制條件的詳細資訊,請參閱《 開發人員指南》中的 Cron 表達式參考。
排程工作流程
當您排程測試時,會發生下列工作流程:
-
排程參數會透過 Amazon API Gateway 傳送至解決方案的 API。
-
API 會將參數傳遞至 Lambda 函數,該函數會建立設定為在指定日期執行的 Amazon EventBridge 排程器排程。
-
對於一次性測試 (執行一次),EventBridge 排程器排程會在指定的日期和時間叫用
api-servicesLambda 函數,以執行測試。 -
對於週期性測試 (在排程上執行),EventBridge 排程器排程會立即根據 Cron 或 Rate 表達式定義的節奏叫用
api-servicesLambda 函數,直到過期日期為止。
即時資料
選取包含即時資料核取方塊,以在測試執行時檢視即時指標。啟用時,您可以監控:
-
平均回應時間。
-
虛擬使用者計數。
-
成功的請求計數。
-
失敗的請求計數。
即時資料功能提供即時圖表,並以一秒的間隔彙總資料。如需詳細資訊,請參閱使用即時資料進行監控。
步驟 2:案例組態
定義特定測試案例,然後選取您偏好的測試架構。
測試類型選擇
選擇您要執行的負載測試類型:
-
簡易 HTTP 端點 - 使用簡易組態測試單一 API 端點或網頁。
-
JMeter - 上傳 JMeter 測試指令碼 (.jmx 檔案或 .zip 封存檔)。
-
k6 - 上傳 k6 測試指令碼 (.js 檔案或 .zip 封存檔)。
-
Locust - 上傳 Locust 測試指令碼 (.py 檔案或 .zip 封存檔)。
注意
這四種測試類型都依賴第三方元件。解決方案會透過 Taurus 測試自動化架構執行測試,該架構會根據測試類型執行 JMeter、k6 或 Locust;Simple HTTP 端點測試會轉換為 JMeter 測試計劃,並由綁定的 Apache JMeter 執行。建立測試之前,請檢閱第三方測試架構,了解安全性考量、授權資訊和修補選項。
流量形狀模式
選擇測試產生的負載控制端。您選取的模式會變更主控台在步驟 3:流量形狀中顯示的欄位。
-
標準 - 解決方案控制負載。您可以設定虛擬使用者、漸進測試期間和保留持續時間。標準是預設值,是唯一支援 Simple HTTP 端點測試的模式。
-
原生 - 您的指令碼控制負載。解決方案會在測試架構自己的命令列下執行指令碼,並只設定每個區域的任務計數和安全性持續時間。
原生 需要上傳的指令碼,因此您無法在選擇 Simple HTTP 端點測試類型時選取它。如需選擇何種模式的完整定義和指引,請參閱流量形狀模式。
HTTP 端點組態
選取「簡單 HTTP 端點」時,解決方案會從組態產生 JMeter 測試計畫,並使用綁定的 Apache JMeter 二進位檔執行。設定下列設定:
- 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資料夾中包含自訂外掛程式。
對於 Locust,.zip 封存中的測試指令碼必須命名為 locustfile.py。若要在執行時間將第三方 Python 套件安裝到容器中,請在封存中包含 requirements.txt 檔案,以及選擇性的 wheel 檔案packages子目錄,以在沒有網際網路存取的情況下安裝它們。如需詳細資訊,請參閱 Locust 測試。
重要
在標準模式中, 解決方案會控制載入並覆寫指令碼宣告的內容。您的測試指令碼 (JMeter、k6 或 Locust) 可以定義並行 (虛擬使用者)、交易速率 (TPS)、漸進測試時間和其他負載參數。解決方案會改為套用您在流量形狀畫面中指定的值。該組態控制測試執行的任務計數、並行 (每個任務的虛擬使用者)、漸進測試持續時間和保留持續時間。
在原生模式中,您的指令碼會控制負載,且解決方案不會將負載參數傳遞至架構。如需這兩種模式之間的差異,請參閱流量形狀模式。
安全持續時間 (原生模式)
當您選取原生模式時,主控台會在指令碼上傳的同時顯示安全持續時間欄位。預設值為 4 小時,上限為 24 小時。
在原生模式中,安全持續時間會結束執行時間超過您預期的測試,因為您的指令碼會決定執行完成的時間。它是護衛,而不是排程。如果測試在持續時間過後仍在執行,解決方案會停止測試架構。它會保留執行部分的結果,並將執行記錄為完成而非失敗。將其設定為您預期指令碼需要的最長執行。
步驟 3:流量形狀
設定測試期間流量的分佈方式,包括多區域支援。
流量形狀模式
解決方案提供兩種流量形狀模式:標準和原生。它們在哪個端控制負載不同:解決方案或您上傳的指令碼。您可以在步驟 2:案例組態中選取 模式,並決定下列哪些欄位適用。
注意
原生模式是 4.3.0 版的預覽功能。標準模式是預設值,也是解決方案一直使用的行為。
標準
標準模式可讓解決方案控制負載。您可以設定每個區域的 Fargate 任務數量、每個任務的並行虛擬使用者、漸進測試期間和保留持續時間。解決方案會透過 Taurus 自動化架構執行您的測試,這些架構會將這些值轉譯為基礎架構本身的負載控制。Taurus 優先於指令碼宣告的任何載入,因此會重寫或忽略 k6 選項區塊LoadTestShape、Locust 或 JMeter 執行緒群組。區域的虛擬使用者是任務計數乘以每個任務的並行,形狀與您選擇的任何架構相同。這是每個測試在 4.3.0 版之前執行的方式,因此先前建立的案例會保持完全的行為,而且不需要變更。
當載入形狀屬於指令碼之外、從主控台、CLI 或代理程式設定時,選擇標準。標準是唯一一種模式,可讓您設定確切的虛擬使用者計數,並在不接觸指令碼的情況下變更漸進和保持形狀。只有標準支援 Simple HTTP 端點類型,其中解決方案會為您產生測試計劃。典型用途:容量檢查步進 500 到 5,000 個虛擬使用者、夜間迴歸保留 1,000 個使用者 10 分鐘,或任何需要相同漸進測試的比較。其限制為表達性。任何 Taurus 不能代表的項目都在此處不可用,包括多個加權案例、每個階段閾值和到達率執行器。
原生
原生模式可讓您的指令碼控制載入。解決方案會在架構自己的命令列下執行您上傳的檔案:k6 run、 jmeter -n -t或 locust --headless。它不會傳遞載入旗標,因此您的指令碼是它產生的流量的唯一授權,而且解決方案永遠不會將其重寫。剩下兩個控制項:每個區域要啟動的 Fargate 任務數量,以及長達 24 小時的必要安全持續時間。安全持續時間是防範從未結束的指令碼,而不是排程。如果測試在持續時間過後仍在執行中,解決方案會停止架構、收集執行部分的結果,並將執行記錄為完成而非失敗。每個任務會以獨立架構程序執行,任務之間沒有協調,因此區域會為每個任務產生指令碼宣告負載的完整副本。例如,擁有 200 個虛擬使用者的 k6 指令碼,在 5 個任務上執行,將 1,000 個虛擬使用者放在目標上。因此,任務計數是 Native 為您提供的唯一負載控制,而且它會以指令碼宣告的所有倍數移動。變更漸進測試、保留時間或虛擬使用者計數本身意味著編輯指令碼。
當您想要完全依照撰寫的方式執行指令碼時,請選擇原生。已在本機或 CI 中執行的指令碼在解決方案上執行不變,這是原生連線的主要原因。原生會保留架構可表達的所有內容:k6 案例、階段和閾值;Locust LoadTestShape類別和加權任務集;JMeter 計時器和執行緒群組。當負載形狀是測試意義的一部分時,請挑選它,而重製它比從外部轉向它更重要。典型用途:從管道重複使用 k6 指令碼而不重寫、spike-then-recover 設定檔,或單一並行號碼無法表達的加權案例。遵循兩個限制條件,以撰寫的方式執行架構。原生 需要上傳的指令碼,因此無法使用 Simple HTTP 端點。Locust 指令碼不得設定 processes,因為只有在 Locust 作為單一程序執行時,解決方案才會計算請求。
選擇模式
| 如果您需要 | 選擇 |
|---|---|
|
確切的虛擬使用者計數,從指令碼外部設定 |
標準 |
|
若要變更漸進測試或保留時間而不編輯指令碼 |
標準 |
|
完全沒有指令碼的單一 URL |
標準 |
|
無論架構為何,相同的負載形狀 |
標準 |
|
重複使用 CI 或本機指令碼不變 |
原生 |
|
指令碼自己的階段、閾值或遵守的形狀 |
原生 |
|
k6 案例、閾值或到達率執行器 |
原生 |
|
Locust |
原生 |
|
JMeter 計時器和執行緒群組的執行完全相同 |
原生 |
|
僅在指令碼自身負載的整個倍數中擴展負載 |
原生 |
多區域流量組態
選取一或多個 AWS 區域,以依地理分佈負載測試。針對每個選取的區域,設定:
- 任務計數
-
針對測試案例,將在 Fargate 叢集中啟動的容器 (任務) 數量。一旦帳戶達到「遠的資源」限制,就不會建立其他任務。任務計數適用於這兩種流量形狀模式。在原生模式下,它是主控台提供的唯一負載控制,因為每個任務都會執行指令碼的完整副本。
- 並行數量
-
每個任務產生的並行虛擬使用者數量。建議的限制是根據每個任務 2 個 vCPUs的預設設定。並行受限於 CPU 和記憶體資源。此欄位僅適用於標準模式。在原生模式中,主控台會為每個區域顯示「由指令碼定義」的唯讀值,因為您的指令碼會設定自己的虛擬使用者計數。
判斷使用者數量
透過逐漸增加使用者數量並在 Amazon CloudWatch 中監控效能,可以判斷容器可支援用於測試的使用者數量。一旦發現 CPU 和記憶體效能接近其限制,您已達到容器在其預設組態 (2 個 vCPU 和 4 GB 記憶體) 中可支援該測試的最大使用者數量。
此校正會設定並行值,因此會套用至標準模式。其建立的容器限制也適用於原生模式。您可以在此提高或降低指令碼宣告的負載,而不是設定並行欄位。
校正程序
您可以使用下列範例,開始判斷測試的並行使用者限制:
-
建立不超過 200 個使用者的測試。
-
測試執行時,請使用 CloudWatch 主控台
監控 CPU 和記憶體: -
在導覽窗格中的容器洞見下,選取效能監控。
-
在效能監控頁面的左側下拉式選單中,選取 ECS 叢集。
-
從右側下拉式選單中,選取您的 Amazon Elastic Container Service (Amazon ECS) 叢集。
-
-
監控時,請監看 CPU 和記憶體。如果 CPU 未超過 75% 或記憶體未超過 85% (忽略一次性峰值),您可以對更多使用者執行另一個測試。
如果測試未超過資源限制,請重複步驟 1-3。或者,您可以增加容器資源,以允許更多並行使用者。不過,這會產生較高的成本。如需詳細資訊,請參閱 開發人員指南。
注意
為了獲得準確的結果,在確定並行使用者限制時,一次只執行一個測試。所有測試都使用相同的叢集,CloudWatch 容器洞察會根據叢集彙總效能資料。這會導致這兩個測試同時向 CloudWatch Container Insights 報告,這會導致單一測試的資源使用率指標不準確。
如需校正每個引擎使用者的詳細資訊,請參閱 BlazeMeter 文件中的校正 Taurus 測試
注意
解決方案會顯示每個區域的可用容量資訊,協助您在可用限制內規劃測試組態。
可用任務的資料表
可用任務表會顯示每個所選區域的資源可用性:
-
區域 - AWS 區域名稱。
-
每個任務vCPUs - 分配給每個任務CPUs 數量 (預設值:2)。
-
DLT 任務限制 - 根據帳戶的 Fargate 隨需 vCPU 配額可建立的任務數量上限。新帳戶的配額通常較低;請在 Service Quotas 主控台中驗證您目前的限制,並視需要請求提高配額。
-
可用的 DLT 任務 - 區域中目前可用的任務數量,計算方式為您的 DLT 任務限制減去執行 Fargate 任務已在使用的 vCPUs。
若要增加每個任務的可用任務或 vCPUs 數量,請參閱 開發人員指南。
測試持續時間
定義您的負載測試將執行多久。主控台只會以標準模式顯示本節。在原生模式中,您的指令碼會決定測試執行的時間長度,以您在步驟 2:案例組態中設定的安全持續時間為限。
- 漸進測試
-
達到目標並行的時間。在此期間,負載會從 0 逐漸增加到設定的並行層級。
- 保留
-
維持目標負載的持續時間。測試會在此期間以完整並行狀態繼續。
步驟 4:檢閱和建立
在建立測試案例之前,請先檢閱您的所有組態。驗證:
-
一般設定 (名稱、描述、排程)。
-
案例組態 (測試類型、端點或指令碼)。
-
流量形狀 (模式、任務、使用者、持續時間、區域)。
檢閱後,選擇建立以儲存您的測試案例。
管理測試案例
建立測試案例後,您可以:
-
編輯 - 修改測試組態。常用案例包括:
-
精簡流量形狀以達到所需的交易速率。
-
-
複製 - 複製現有的測試案例以建立變化。常用案例包括:
-
更新端點或新增標頭/內文參數。
-
新增或修改測試指令碼。
-
-
刪除 - 移除您不再需要的測試案例。