瞭解 Azure 負載測試的重要概念和元件。 這項資訊可協助您更有效地設定負載測試,以識別應用程式中的效能問題。
負載測試的一般概念
瞭解與執行負載測試相關的重要概念。
虛擬使用者
虛擬使用者會針對您的伺服器應用程式執行特定的測試案例,並獨立於其他虛擬使用者執行。 您可以使用多個虛擬使用者來模擬伺服器應用程式的並行連線。
Apache JMeter 也會將虛擬用戶稱為 線程。 在 JMeter 測試文稿中, 線程群組 元素可讓您指定虛擬使用者的集區。 瞭解 Apache JMeter 檔中的 線程群組 。
Locust 將虛擬使用者稱為 使用者。 您可以在 Web 介面中指定測試所需的使用者,做為命令行自變數、透過環境變數,或透過組態檔。 如需詳細資訊,請參閱 Locust 檔案中的設定選項。
負載測試的虛擬用戶總數取決於測試腳本中的虛擬用戶數目和 測試引擎實例數目。
針對以 JMeter 為基礎的負載測試,公式為:虛擬使用者總數 = (JMX 檔案中的虛擬使用者) * (測試引擎實例數目)。
您可以藉由 設定測試引擎實例數目、測試腳本中的虛擬用戶數目,或兩者的組合,來達成虛擬使用者的目標數目。
針對以 Locust 為基礎的負載測試,虛擬使用者總數是透過任何組態選項指定的用戶數目。 然後,您可以設定產生用戶總數所需的 測試引擎實例 數目。
上升時間
上升時間是取得負載測試虛擬使用者完整數目所需的時間量。 如果虛擬用戶數目為 20,且遞增時間為 120 秒,則需要 120 秒才能取得所有 20 個虛擬使用者。 每個虛擬使用者都會在上一個使用者啟動後的 6 (120/20) 秒啟動。
對於 Locust,您可以使用 繁衍率來設定加速。 繁衍率是每秒新增的用戶數目。 例如,如果用戶數目為 20,而繁衍速率為 2,則每秒會新增 2 個使用者,而且需要 10 秒才能取得所有 20 位使用者。
回覆時間
個別請求的回應時間,或 JMeter 中經過的時間,是從傳送請求之前到接收到最後一個回應之後的總時間。 回應時間不包含轉譯回應的時間。 負載測試期間不會處理任何用戶端程序代碼,例如 JavaScript。
延遲
個別要求的延遲是收到第一個回應之後,傳送要求到之前的總時間。 延遲包含組合請求以及組合回應的第一部分所需的所有處理。
每秒請求數 (RPS)
每秒的要求數(RPS)或 輸送量,是您負載測試每秒產生的伺服器應用程式要求總數。
公式為:RPS = (要求數目) / (以秒為單位的總時間)。
時間是從第一個樣本的開頭計算到最後一個樣本的結尾。 這個時間包含範例之間的任何間隔,例如,如果測試腳本包含 定時器。
另一種計算 RPS 的方式是以平均應用程式的 延遲 和 虛擬用戶數目為基礎。 若要使用負載測試模擬特定數目的 RPS,鑒於應用程式的延遲,您可以接著計算所需的 虛擬用戶數目。
公式為:虛擬使用者 = (RPS) * (延遲以秒為單位)。
例如,假設應用程式延遲為 20 毫秒(0.02 秒),以模擬 100,000 RPS,您應該使用 2,000 個虛擬使用者設定負載測試(100,000 * 0.02)。
Azure 負載測試元件
瞭解 Azure 負載測試的重要概念和元件。 下圖提供不同概念彼此關聯的概觀。
負載測試資源
Azure 負載測試資源是負載測試活動的最上層資源。 此資源提供集中的位置,可檢視及管理負載測試、測試結果和相關成品。
當您建立負載測試資源時,您可以指定其位置,以決定 測試引擎的位置。 Azure 負載測試會自動加密您資源中的所有工件。 您可以選擇Microsoft管理的金鑰,或使用您自己的客戶自控密鑰進行加密。
若要執行應用程式的負載測試,請將 測試 新增至負載測試資源。 資源可以包含零或多個測試。
您可以使用 Azure 角色型存取控制 來賦予您負載測試資源和相關項目的存取權。
Azure 負載測試可讓您針對各種用途 使用受控識別 ,例如存取 Azure Key Vault 來儲存 負載測試秘密參數或憑證、存取 Azure 監視器計量來設定 失敗準則,或模擬 受控識別型驗證流程。
測試
測試描述應用程式的負載測試組態。 您會將測試新增至現有的 Azure 負載測試資源。
測試包含測試計劃,其描述叫用應用程式端點的步驟。 您可以使用下列三種方式之一來定義測試計劃:
Azure 負載測試支援 JMeter 和 Locust 支援的所有通訊協定,而不只是 HTTP 型端點。 例如,您可能想要在測試腳本中讀取或寫入資料庫或消息佇列。
Azure 負載測試目前不支援 Apache JMeter 和 Locust 以外的其他測試架構。
測試也會指定執行負載測試的組態設定:
- 負載測試參數,例如環境變數、秘密和憑證。
- 負載組態可跨多個測試引擎執行個體相應放大負載測試。
- 失敗準則用來判斷測試應何時通過或失敗。
- 監視設定,以設定在測試回合期間 要監視的 Azure 應用程式元件和資源計量 清單。
此外,您可以將 CSV 輸入資料檔和測試組態檔上傳至負載測試。
當您開始測試時,Azure 負載測試會將測試腳本、相關檔案和組態部署到測試引擎實例。 然後測試引擎實例會起始測試腳本,以模擬應用程式負載。
每次開始測試時,Azure 負載測試都會建立 測試回合,並將它附加至測試。
測試執行
測試回合代表負載測試的一個執行。 當您執行測試時,測試回合會包含相關聯測試中的組態設定複本。
測試回合完成後,您可以在 Azure 入口網站的 Azure 負載測試儀錶板中檢視和分析負載測試結果 。
這很重要
當您更新測試時,現有的測試回合不會自動從測試繼承新的設定。 當您執行 測試時,新測試回合才會使用新的設定。 如果您重新執行現有的 測試回合,則會使用測試回合的原始設定。
測試引擎
測試引擎是計算基礎結構,由執行測試腳本Microsoft所管理。 測試引擎實例會以平行方式執行測試腳本。 您可以藉由設定測試引擎實例的數目來擴展負載測試。 瞭解如何設定 虛擬用戶數目,或模擬 每秒的目標要求數目。
測試引擎裝載於與 Azure 負載測試資源相同的位置。 您可以在建立 Azure 負載測試資源時設定 Azure 區域。
Azure 負載測試會使用 Standard_D4d_v4 方案大小的虛擬機器,其中具有四個 vCPU、16GB 記憶體和 Azure Linux 作業系統作為測試引擎。 針對 JMeter 型測試,測試引擎會使用 JDK 21 和 Apache JMeter 5.6.3 版。 針對以 Locust 為基礎的測試,測試引擎會使用 Python 3.9.19 和 Locust 2.33.2 版。
當測試腳本執行時,Azure 負載測試會收集並匯總所有測試引擎實例的測試架構記錄。 您可以 下載記錄,以在負載測試期間分析錯誤。
應用程式元件
當您針對 Azure 裝載的應用程式執行負載測試時,您可以監視不同 Azure 應用程式元件的資源計量(伺服器端計量)。 當負載測試執行時,以及在測試完成之後,您可以在 Azure 負載測試儀錶板中監視和分析資源計量。
當您建立或更新負載測試時,您可以設定 Azure 負載測試將監視的應用程式元件清單。 您可以修改每個應用程式元件的預設資源計量清單。
深入瞭解 Azure 負載測試支援 的 Azure 資源類型。
指標
在負載測試期間,Azure 負載測試會收集測試執行的相關計量。 計量有兩種類型:
測試引擎會報告用戶端計量。 這些計量包括虛擬用戶數目、要求回應時間、失敗要求數目,或每秒要求數目。 您可以根據這些用戶端計量 來定義測試失敗準則 。
伺服器端計量 適用於 Azure 裝載的應用程式,並提供 Azure 應用程式元件的相關信息。 Azure 負載測試會與 Azure 監視器整合,包括 Application Insights 和 Container Insights,以從 Azure 服務擷取詳細數據。 視服務類型而定,可以使用不同的計量。 例如,計量可以是資料庫讀取數目、HTTP 回應類型或容器資源耗用量。 您也可以根據這些伺服器端計量 來定義測試失敗準則 。
相關內容
您現在已知道 Azure 負載測試的重要概念,以開始建立負載測試。
- 瞭解 Azure 負載測試的運作方式。
- 瞭解如何 建立及執行網站的URL型負載測試。
- 瞭解如何 識別 Azure 應用程式中的效能瓶頸。
- 瞭解如何 使用 CI/CD 設定自動化回歸測試。
