在 YAML 中設定負載測試
瞭解如何使用 YAML在 Azure 負載測試中設定負載測試。 您可以使用測試組態 YAML 檔案,從持續整合和持續傳遞 (CI/CD) 工作流程建立和執行負載測試。
負載測試 YAML 語法
負載測試設定使用下列金鑰:
機碼 | 類型 | 必要 | 預設值 | 說明 |
---|---|---|---|---|
version |
字串 | Y | 負載測試規格版本。 唯一支援的值為 v0.1 。 |
|
testId |
字串 | Y | 負載測試的唯一識別碼。 此值長度必須介於 2 到 50 個字元之間 ([a-z0-9_-])。 對於現有測試,您可以從 Azure 入口網站的測試詳細資料頁面取得 testId 。 |
|
testName |
字串 | 否 | 已取代。 負載測試的唯一識別碼。 這個設定會取代為 testId 。 您仍然可以使用 testName 欄位執行現有測試。 |
|
displayName |
字串 | 否 | 測試的顯示名稱。 此值會顯示在 Azure 入口網站的測試清單中。 如果未提供,則會使用 testId 作為顯示名稱。 |
|
description |
字串 | 否 | 測試的簡短說明。 值的長度上限為 100 個字元。 | |
testType |
字串 | Y | 測試類型。 可能的值:
|
|
testPlan |
字串 | Y | 測試計劃檔案的參考。
|
|
engineInstances |
整數 | Y | 用於執行測試計劃的平行測試引擎執行個體數目。 深入瞭解如何 設定大規模負載。 | |
configurationFiles |
字串陣列 | 否 | 測試指令碼所需的外部檔案清單。 例如,CSV 資料檔案、映像或任何其他資料檔案。 Azure 負載測試會將位在測試指令碼同一個資料夾中的所有檔案上傳。 在 JMeter 腳稿或 Locust 腳本中,只參考使用檔名的外部檔案,並移除任何檔案路徑資訊。 |
|
failureCriteria |
object | 否 | 負載測試失敗準則清單。 如需詳細資訊,請參閱 failureCriteria 。 | |
autoStop |
字串或物件 | 否 | 當錯誤百分比超過某個值時,即會自動停止負載測試。 可能的值: - disable :不自動停止負載測試。- 物件:如需詳細資訊,請參閱 自動停止 設定。 |
|
properties |
object | 否 |
|
|
zipArtifacts |
字串陣列 | 否 | 指定 zip 成品檔案清單。 對於 JMeter 腳本和 JMeter 型測試的使用者屬性以外的檔案,以及以 Locust 為基礎的測試的 Locust 腳本和組態檔,如果檔案大小超過 50 MB,請將檔案壓縮成 ZIP 檔案。 確定 ZIP 檔案的大小維持在 50 MB 以下。 每個檔案最多只能有 1000 個 ZIP 成品,且未壓縮的大小為 1 GB。 testType: JMX 只適用於與 testType: Locust 。 |
|
splitAllCSVs |
boolean | 否 | False | 分割輸入 CSV 檔並平均分散到所有測試引擎執行個體。 如需詳細資訊,請參閱 在負載測試中讀取 CSV 檔案。 |
secrets |
object | 否 | Apache JMeter 或 Locust 腳本所參考的秘密清單。 如需詳細資訊,請參閱秘密。 | |
env |
object | 否 | Apache JMeter 腳本或 Locust 參考的環境變數清單。 如需詳細資訊,請參閱 環境變數 。 | |
certificates |
object | 否 | 在 JMeter 或 Locust 腳本中使用應用程式端點進行驗證的用戶端憑證清單。 如需詳細資訊,請參閱 憑證 。 | |
keyVaultReferenceIdentity |
字串 | 否 | 使用者指派受控識別的資源識別碼,用來從 Azure Key Vault 存取秘密。 如果您使用系統受控識別,則不需要此資訊。 請務必將此使用者指派的身分識別存取權授與 Azure Key Vault。 深入瞭解 Azure 負載測試中的受控識別。 | |
subnetId |
字串 | 否 | 虛擬網路子網路的資源識別碼,用於測試私人裝載端點。 此子網路裝載插入的測試引擎 VM。 如需詳細資訊,請參閱 如何載入測試私人裝載端點。 | |
publicIPDisabled |
boolean | 否 | 測試私人端點時,停用部署公用 IP 位址、負載平衡器和網路安全性群組。 如需詳細資訊,請參閱 如何載入測試私人裝載端點。 | |
regionalLoadTestConfig |
object | 否 | 跨區域分散負載,以模擬來自多個區域的使用者流量。 如需詳細資訊,請參閱 區域負載測試組態 以取得詳細數據。 |
負載測試組態範例
下列 YAML 程式碼片段包含範例負載測試設定。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Network/virtualNetworks/load-testing-vnet/subnets/load-testing
configurationFiles:
- 'sampledata.csv'
zipArtifacts:
- bigdata.zip
splitAllCSVs: True
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop:
errorPercentage: 80
timeWindow: 60
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
keyVaultReferenceIdentity: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity
failureCriteria
設定
測試失敗準則可讓您定義條件,以判斷負載測試回合是否成功。 如果符合一或多個失敗準則,測試就會取得失敗的測試結果。 深入瞭解 如何使用負載測試失敗準則。
您可以定義套用至整個負載測試或套用至特定要求的失敗準則。 失敗準則包含下列結構:
- 負載測試層級的測試準則:
Aggregate_function (client_metric) condition threshold
。 - 適用於特定 JMeter 要求的測試準則:
Request: Aggregate_function (client_metric) condition threshold
。
支援的用戶端計量
Azure 負載測試支援下列用戶端計量:
計量 | 彙總函式 | 臨界值 | Condition | 描述 |
---|---|---|---|---|
response_time_ms |
avg (平均值)min (最小值)max (最大值)pxx (百分位數),xx 可以是 50、75、90、95、96、97、98、99、999 和 9999 |
整數值,表示毫秒數 (ms)。 | > (大於)< (小於) |
回應時間或已耗用時間 (以毫秒為單位)。 透過 Apache JMeter 文件深入了解已耗用時間。 |
latency |
avg (平均值)min (最小值)max (最大值)pxx (百分位數),xx 可以是 50、90、95、99 |
整數值,表示毫秒數 (ms)。 | > (大於)< (小於) |
延遲 (以毫秒為單位)。 透過 Apache JMeter 文件深入了解延遲。 |
error |
percentage |
範圍 0-100 的數值,表示百分比。 | > (大於) |
失敗要求的百分比。 |
requests_per_sec |
avg (平均值) |
最多取到小數點後兩位的數值。 | > (大於) < (小於) |
每秒的要求數目。 |
requests |
count |
整數值。 | > (大於) < (小於) |
要求的總數。 |
失敗準則組態範例
下列代碼段顯示負載測試組態,其中包含三個負載測試失敗準則。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
- avg(response_time_ms) > 300
- percentage(error) > 50
- GetCustomerDetails: avg(latency) >200
autoStop
設定
負載測試自動停止功能可讓您在指定的時間範圍期間,當錯誤百分比超過特定臨界值時,自動停止負載測試。 深入瞭解 負載測試自動停止功能。
機碼 | 類型 | 預設值 | 說明 |
---|---|---|---|
errorPercentage |
整數 | 90 | 錯誤百分比的臨界值,在 timeWindow 期間。 如果錯誤百分比在任何指定的時間範圍中超過這個百分比,測試回合就會自動停止。 |
timeWindow |
整數 | 60 | 計算 errorPercentage 的時間範圍,以秒為單位。 |
自動停止設定範例
下列代碼段顯示負載測試組態,其中包含三個負載測試失敗準則。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
autoStop:
errorPercentage: 80
timeWindow: 60
properties
設定
您可以指定負載測試的 JMeter 使用者屬性檔案。 使用者屬性檔案會與測試計劃和其他檔案一起上傳。 深入瞭解如何在 Azure 負載測試中使用 JMeter 用戶屬性。
機碼 | 類型 | 預設值 | 說明 |
---|---|---|---|
userPropertyFile |
字串 | 要作為Apache JMeter 使用者屬性檔案 或Locust 組態檔使用的檔案。 針對 Locust,擴展名為 .conf、.ini 和 .toml 的檔案支援為組態檔。 檔案會連同測試腳本和其他組態檔一起上傳至 Azure 負載測試資源。 如果檔案位於本機電腦上的子資料夾中,請使用相對於測試腳本位置的路徑。 |
使用者屬性檔組態範例
下列代碼段顯示負載測試組態,指定使用者屬性檔案。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
properties:
userPropertyFile: 'user.properties'
下列代碼段顯示負載測試組態,指定 Locust 組態檔。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.py
testType: Locust
engineInstances: 1
properties:
userPropertyFile: 'locust.conf'
secrets
設定
您可以在 Azure 金鑰保存庫 中儲存秘密值,並在測試計劃中參考這些值。 深入瞭解如何 搭配 Azure 負載測試使用秘密。
機碼 | 類型 | 預設值 | 說明 |
---|---|---|---|
name |
字串 | 秘密的名稱。 此名稱應該符合您在測試計劃要求中使用的秘密名稱。 | |
value |
字串 | Azure 金鑰保存庫 秘密的 URI(秘密標識符)。 |
秘密組態範例
下列代碼段顯示負載測試組態,其會參考 Azure 金鑰保存庫 中的秘密my-secret
。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
secrets:
- name: my-secret
value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
env
設定
您可以指定環境變數,並在測試計劃中參考它們。 深入瞭解如何 搭配 Azure 負載測試使用環境變數。
機碼 | 類型 | 預設值 | 說明 |
---|---|---|---|
name |
字串 | 環境變數的名稱。 此名稱應該符合您在測試計劃要求中使用的變數名稱。 | |
value |
字串 | 環境變數的值。 |
環境變數組態範例
下列代碼段顯示負載測試組態,其會指定環境變數 my-variable
和值 my-value
。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
env:
- name: my-variable
value: my-value
certificates
設定
您可以將客戶端憑證傳遞至負載測試。 憑證會儲存在 Azure 金鑰保存庫 中。 深入瞭解如何 搭配 Azure 負載測試使用客戶端憑證。
機碼 | 類型 | 預設值 | 說明 |
---|---|---|---|
name |
字串 | 憑證的名稱。 | |
value |
字串 | Azure 金鑰保存庫 中憑證的 URI(秘密標識符)。 |
憑證組態範例
下列代碼段顯示負載測試組態,其會參考 Azure 金鑰保存庫 中的用戶端憑證。
version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
certificates:
- name: my-certificate
value: https://akv-contoso.vault.azure.net/certificates/MyCertificate/abc1234567890def12345
要求 JSON 檔案
如果您使用 URL 型測試,您可以在 JSON 檔案中指定 HTTP 要求,而不是使用 JMeter 測試腳本。 請務必在測試組態 YAML 檔案中將 設定為 testType
URL
,並參考要求 JSON 檔案。
HTTP 要求
要求 JSON 檔案會使用下列屬性來定義 屬性中的 requests
要求:
屬性 | 類型 | 描述 |
---|---|---|
requestName |
字串 | 唯一要求名稱。 您可以在設定測試失敗準則時參考要求名稱。 |
responseVariables |
陣列 | 回應變數的清單。 使用響應變數從要求擷取值,並在後續的要求中參考該值。 深入了解 回應變數。 |
responseVariables.extractorType |
字串 | 從回應輸出擷取值的機制。 支援的值為 XPathExtractor 、JSONExtractor 和 RegularExpression 。 |
responseVariables.expression |
字串 | 擷取回應輸出的表達式。 表達式取決於擷取器類型值。 |
responseVariables.variableName |
字串 | 唯一回應變數名稱。 您可以使用語法,在後續的要求 {$variable-name} 中參考這個變數。 |
queryParameters |
陣列 | 要傳遞至端點的查詢字串參數清單。 |
queryParameters.key |
字串 | 查詢字串參數名稱。 |
queryParameters.value |
字串 | 查詢字串參數值。 |
requestType |
字串 | 要求的類型。 支援的值為: URL 或 CURL 。 |
endpoint |
字串 | 要測試的應用程式端點 URL。 |
headers |
陣列 | 要傳遞至應用程式端點的 HTTP 標頭清單。 為每個標頭指定索引鍵/值組。 |
body |
字串 | HTTP 要求的本文文字。 您可以使用 requestBodyFormat 指定本文內容的格式。 |
requestBodyFormat |
字串 | 本文內容的格式。 支援的值為:Text 、、JSON JavaScript 、HTML 、 和 XML 。 |
method |
字串 | 要叫用端點的 HTTP 方法。 支援的值為:GET 、、、PUT POST DELETE 、、PATCH 、 HEAD 和 OPTIONS 。 |
curlCommand |
字串 | 要執行的 cURL 命令。 requestType 需要 是 CURL 。 |
下列 JSON 代碼段包含要求 JSON 檔案的範例:
{
"version": "1.0",
"scenarios": {
"requestGroup1": {
"requests": [
{
"requestName": "add",
"responseVariables": [],
"queryParameters": [
{
"key": "param1",
"value": "value1"
}
],
"requestType": "URL",
"endpoint": "https://www.contoso.com/orders",
"headers": {
"api-token": "my-token"
},
"body": "{\r\n \"customer\": \"Contoso\",\r\n \"items\": {\r\n\t \"product_id\": 321,\r\n\t \"count\": 50,\r\n\t \"amount\": 245.95\r\n }\r\n}",
"method": "POST",
"requestBodyFormat": "JSON"
},
{
"requestName": "get",
"responseVariables": [],
"requestType": "CURL",
"curlCommand": "curl --request GET 'https://www.contoso.com/orders'"
},
],
"csvDataSetConfigList": []
}
},
"testSetup": [
{
"virtualUsersPerEngine": 1,
"durationInSeconds": 600,
"loadType": "Linear",
"scenario": "requestGroup1",
"rampUpTimeInSeconds": 30
}
]
}
載入組態
要求 JSON 檔案會使用下列屬性來定義 屬性中的 testSetup
載入組態:
屬性 | 類型 | 負載類型 | 描述 |
---|---|---|---|
loadType |
字串 | 載入模式類型。 支援的值包括: linear 、 step 和 spike 。 |
|
scenario |
字串 | 屬性中指定的 scenarios 要求群組參考。 |
|
virtualUsersPerEngine |
整數 | 全部 | 每個測試引擎實例的虛擬用戶數目。 |
durationInSeconds |
整數 | 全部 | 負載測試的總持續時間,以秒為單位。 |
rampUpTimeInSeconds |
整數 | 線性,步驟 | 持續時間以秒為單位,以增加虛擬用戶的目標數目。 |
rampUpSteps |
整數 | 步驟 | 達到虛擬用戶目標數目的步驟數目。 |
spikeMultiplier |
整數 | 尖峰 | 在尖峰期間,將目標用戶數目乘以的因數。 |
spikeHoldTimeInSeconds |
整數 | 尖峰 | 維護尖峰負載的持續時間總計以秒為單位。 |
區域負載測試組態
您可以將負載分散到區域,以更妥善地模擬實際流量模式。 您可以指定要從中產生負載的區域,以及您想要從每個區域仿真的負載量。 您可以藉由指定區域名稱和您想要在該區域中的引擎實例數目來執行此動作。 深入瞭解 如何從多個區域產生負載。
機碼 | 類型 | 預設值 | 說明 |
---|---|---|---|
region |
字串 | Azure 區域的名稱。 | |
engineInstances |
整數 | 該 Azure 區域的引擎實例數目。 |
區域負載測試組態範例
下列代碼段顯示負載測試組態,指定兩個 Azure 區域 eastus
和 eastasia
每個區域的引擎實例數目。
displayName: Sample Test
testPlan: sampleScript.jmx
description: 'Load test website home page'
engineInstances: 4
testId: SampleTest
testType: Locust
splitAllCSVs: False
regionalLoadTestConfig:
- region: eastus
engineInstances: 2
- region: eastasia
engineInstances: 2
failureCriteria:
- p90(response_time_ms) > 10000
autoStop:
errorPercentage: 90
timeWindow: 60
相關內容
- 瞭解如何在 CI/CD 工作流程中建置自動化回歸測試。
- 瞭解如何 使用秘密和環境變數來參數化負載測試。
- 瞭解如何 載入測試受保護的端點。