共用方式為


在 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 測試類型。 可能的值:
  • URL:URL 型負載測試
  • JMX:JMeter 型負載測試
  • Locust:以Locust為基礎的負載測試
testPlan 字串 Y 測試計劃檔案的參考。
  • 如果 testType: JMX:JMeter 測試指令碼的相對路徑。
  • 如果 testType: Locust為 :Locust 測試腳本的相對路徑。
  • 如果testType: URL為 :要求 JSON 檔案相對路徑。
engineInstances 整數 Y 用於執行測試計劃的平行測試引擎執行個體數目。 深入瞭解如何 設定大規模負載
configurationFiles 字串陣列 測試指令碼所需的外部檔案清單。 例如,CSV 資料檔案、映像或任何其他資料檔案。
Azure 負載測試會將位在測試指令碼同一個資料夾中的所有檔案上傳。 在 JMeter 腳稿或 Locust 腳本中,只參考使用檔名的外部檔案,並移除任何檔案路徑資訊。
failureCriteria object 負載測試失敗準則清單。 如需詳細資訊,請參閱 failureCriteria
autoStop 字串或物件 當錯誤百分比超過某個值時,即會自動停止負載測試。
可能的值:
- disable:不自動停止負載測試。
- 物件:如需詳細資訊,請參閱 自動停止 設定。
properties object
  • 如果 testType: JMX為 :JMeter 使用者屬性檔參考。
  • 如果 testType: Locust為 :Locust 組態檔參考。
如需詳細資訊,請參閱 屬性
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 字串 從回應輸出擷取值的機制。 支援的值為 XPathExtractorJSONExtractorRegularExpression
responseVariables.expression 字串 擷取回應輸出的表達式。 表達式取決於擷取器類型值。
responseVariables.variableName 字串 唯一回應變數名稱。 您可以使用語法,在後續的要求 {$variable-name} 中參考這個變數。
queryParameters 陣列 要傳遞至端點的查詢字串參數清單。
queryParameters.key 字串 查詢字串參數名稱。
queryParameters.value 字串 查詢字串參數值。
requestType 字串 要求的類型。 支援的值為: URLCURL
endpoint 字串 要測試的應用程式端點 URL。
headers 陣列 要傳遞至應用程式端點的 HTTP 標頭清單。 為每個標頭指定索引鍵/值組。
body 字串 HTTP 要求的本文文字。 您可以使用 requestBodyFormat 指定本文內容的格式。
requestBodyFormat 字串 本文內容的格式。 支援的值為:Text、、JSONJavaScriptHTML、 和 XML
method 字串 要叫用端點的 HTTP 方法。 支援的值為:GET、、、PUTPOSTDELETE、、PATCHHEADOPTIONS
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 字串 載入模式類型。 支援的值包括: linearstepspike
scenario 字串 屬性中指定的 scenarios 要求群組參考。
virtualUsersPerEngine 整數 全部 每個測試引擎實例的虛擬用戶數目。
durationInSeconds 整數 全部 負載測試的總持續時間,以秒為單位。
rampUpTimeInSeconds 整數 線性,步驟 持續時間以秒為單位,以增加虛擬用戶的目標數目。
rampUpSteps 整數 步驟 達到虛擬用戶目標數目的步驟數目。
spikeMultiplier 整數 尖峰 在尖峰期間,將目標用戶數目乘以的因數。
spikeHoldTimeInSeconds 整數 尖峰 維護尖峰負載的持續時間總計以秒為單位。

區域負載測試組態

您可以將負載分散到區域,以更妥善地模擬實際流量模式。 您可以指定要從中產生負載的區域,以及您想要從每個區域仿真的負載量。 您可以藉由指定區域名稱和您想要在該區域中的引擎實例數目來執行此動作。 深入瞭解 如何從多個區域產生負載。

機碼 類型 預設值 說明
region 字串 Azure 區域的名稱。
engineInstances 整數 該 Azure 區域的引擎實例數目。

區域負載測試組態範例

下列代碼段顯示負載測試組態,指定兩個 Azure 區域 eastuseastasia 每個區域的引擎實例數目。

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