使用 Azure 負載測試,定義負載測試的失敗準則

在本文中,您會了解如何使用 Azure 負載測試,定義負載測試的失敗準則或自動停止準則。 失敗準則讓您定義應用程式在負載下的效能和品質期望。 Azure 負載測試支援用於定義失敗準則的各種用戶端和伺服器計量,例如 Azure 資源的錯誤率或 CPU 百分比。 自動停止準則可讓您在錯誤率超過指定的閾值時自動停止負載測試。

先決條件

  • 具有有效訂閱的 Azure 帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
  • Azure 負載測試資源。 如果您需要建立 Azure 負載測試資源,請參閱快速入門「建立和執行負載測試」。

負載測試失敗準則

負載測試失敗準則是計量的條件,您的測試應符合條件。 您可在 Azure 負載測試中定義負載測試層級的測試準則。 負載測試可有一或多個測試準則。 當至少有一個測試準則評估為 true 時,負載測試舊會得到失敗的狀態。

您可以針對負載測試定義最多 50 個測試準則。 如果相同計量有多個準則,即使用最低閾值的準則。

用戶端計量的失敗準則結構

Azure 負載測試中的失敗準則格式,遵循支援計量的條件陳述式格式。 例如,確保每秒的平均要求數目大於 500。

對於用戶端計量,您可以在兩個層級定義測試準則。 負載測試可以結合不同層級的準則。

  • 在負載測試層級。 例如,為確保總錯誤百分比不超過閾值。 準則的結構為:Aggregate_function (client_metric) condition threshold。
  • 在要求層級。 例如,您可以指定 getProducts 要求的回應時間閾值,但忽略「登入」要求的回應時間。 準則的結構為:Request: Aggregate_function (client_metric) condition threshold。

下表描述不同的元件:

參數 說明
Client metric 必須的。 應套用該條件的用戶端計量。
Aggregate function 必須的。 要套用於用戶端計量的彙總函式。
Condition 必須的。 比較運算子,例如 greater than 或 less than。
Threshold 必須的。 要與用戶端計量比較的數值。
Request 選擇性。 JMeter 指令碼中的取樣器名稱,或套用準則之 Locust 指令碼中的要求。 如果您未指定要求名稱,準則會套用至指令碼中所有要求的彙總。
請勿在測試指令碼的要求名稱中包含任何個人資料。 要求名稱會出現在 Azure 負載測試結果儀表板中。

支援失敗準則的用戶端計量

Azure 負載測試支援下列用戶端計量:

計量 聚合函數 門檻 狀況 說明
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 整數值。 > (大於)
< (小於)
要求的總數。

定義用戶端計量的負載測試失敗準則

在本節中,您會在 Azure 入口網站中設定負載測試用戶端計量的測試準則。

  1. 在 Azure 入口網站中,移至您的 Azure 負載測試資源。

  2. 在左窗格中,選取 [測試] 檢視負載測試的清單。

  3. 從清單選取您的負載測試,然後選取 [編輯]。

    顯示 Azure 入口網站中 Azure 負載測試資源的測試清單,並強調顯示 [編輯] 按鈕的螢幕擷取畫面。

  4. 在 [測試準則] 窗格上,填入測試的 [計量]、[彙總函式]、[條件] 和 [閾值] 值。

    Azure 入口網站中負載測試的 [測試準則] 窗格的螢幕擷取畫面,並強調顯示用於新增測試準則的欄位。

    選擇性輸入要求名稱資訊,新增特定要求的測試準則。 值應符合測試指令碼中取樣器或要求的名稱。

    JMeter 使用者介面的螢幕擷取畫面,強調顯示要求名稱。

  5. 選取 [套用] 以儲存變更。

    現在當您執行負載測試時,Azure 負載測試會使用測試準則來判斷負載測試回合的狀態。

  6. 執行測試,並在負載測試儀表板中檢視狀態。

    儀表板會顯示每個測試準則和其狀態。 如果至少有一項準則符合,則整體測試狀態為失敗。

    顯示負載測試儀表板上測試準則的螢幕擷取畫面。

存取伺服器計量上測試準則的應用程式元件

當您在應用程式元件中的計量上設定失敗準則時,負載測試資源會使用受控識別來存取該元件。 在設定受控識別之後,您必須授與負載測試資源的受控識別從應用程式元件讀取這些值的權限。

若要授與 Azure 負載測試資源權限,以從您的應用程式元件讀取計量:

  1. 在 Azure 入口網站中,前往您的應用程式元件。

  2. 在左窗格上,選取 [存取控制 (IAM)],選取 [+新增],然後選取 [新增角色指派]。

    要設定失敗準則的應用程式元件中存取控制 (IAM) 的螢幕擷取畫面。

  3. 在 [角色] 索引標籤上的 [職能角色] 底下,搜尋 [監視讀取者] 或 [監視參與者]。

  4. 在 [成員] 索引標籤上的 [指派存取權的對象] 底下,選取 [受控識別]。

  5. 按一下 [選取成員],搜尋並選取負載測試資源的受控識別,然後選取 [下一步]。 如果您使用系統指派的受控識別,則受控識別名稱會符合 Azure 負載測試資源的名稱。

  6. 選取 [檢閱 + 指派] 以指派身份的權限。

    將讀取計量權限指派給負載測試資源的螢幕擷取畫面。

當您的測試執行時,與負載測試資源相關聯的受控識別現在可以從應用程式元件讀取負載測試的計量。

定義伺服器計量的負載測試失敗準則

這很重要

Azure 負載測試不支援從 Azure Pipelines/GitHub Actions 在伺服器端計量上設定失敗準則。

在本節中,您可以在 Azure 入口網站中為負載測試的伺服器端計量設定測試失敗準則。

  1. 在 Azure 入口網站中,移至您的 Azure 負載測試資源。

  2. 選取 [建立測試]。

  3. 在 [監視] 索引標籤下,設定您要在測試期間監視的應用程式元件。

  4. 設定計量參考身分識別。 身分識別可以是負載測試資源的系統指派身分識別,或任一使用者指派的身分識別。 請確定您是使用先前已授權存取的相同身分識別。

    設定計量參考身分識別的螢幕擷取畫面。

  5. 在 [測試準則] 窗格中,填入測試的資源識別碼、命名空間、計量、彙總、條件、閾值。 您僅可以針對在測試期間監視的資源/應用程式元件設定失敗準則。

    在伺服器計量上設定失敗準則的螢幕擷取畫面。

  6. 選取 [套用] 以儲存變更。 現在當您執行負載測試時,Azure 負載測試會使用測試準則來判斷負載測試回合的狀態。

  7. 執行測試,並在負載測試儀表板中檢視狀態。 儀表板會顯示每個測試準則和其狀態。 如果至少有一項準則符合,則整體測試狀態為失敗。

    顯示測試結果的儀表板的螢幕擷取畫面。

自動停止組態

如果錯誤百分比超過特定時間範圍的指定閾值,Azure 負載測試會自動停止負載測試。 自動停止可保護您免受失敗測試進一步產生成本,例如,因為設定不正確的端點 URL。

在負載測試組態中,您可以啟用或停用自動停止功能,並設定錯誤百分比閾值和時間範圍。 根據預設,Azure 負載測試會自動停止錯誤百分比在任何 60 秒時間範圍期間至少為 90% 的負載測試。

您可以使用 Azure 負載測試自動停止功能搭配 JMeter 指令碼中的 AutoStop 接聽程式。 當自動停止組態或 JMeter AutoStop 接聽程式中的其中一個準則符合時,負載測試會自動停止。

謹慎

如果您停用負載測試的自動停止,即使負載測試設定不正確,也可能會產生成本。

在 Azure 入口網站中設定負載測試的自動停止:

  1. 在 Azure 入口網站中,移至您的 Azure 負載測試資源。

  2. 在左窗格中,選取 [測試] 檢視負載測試的清單。

  3. 從清單選取您的負載測試,然後選取 [編輯]。 或者,選取 [建立]> [上傳指令碼] 以建立新的測試。

  4. 移至 [測試準則] 索引標籤,設定自動停止功能。

    • 使用 [自動停止測試] 控制項,啟用或停用自動停止負載測試。

    • 如果啟用自動停止,您可以填入 [錯誤百分比] 和 [時間範圍] 欄位。 指定時間範圍 (秒)。

      Azure 入口網站中負載測試的 [測試準則] 窗格的螢幕擷取畫面,強調顯示自動停止功能。

  5. 選取 [套用],或 [檢閱 + 建立] (如果您要建立新的負載測試) 儲存變更。

後續步驟