JMeter分散式負載測試(吞吐量控制器)


在本節中,我們將學習如何使用吞吐量控制器在JMeter中建立分散式負載測試計劃。

出於測試目的,我們將在我們網站 www.tw511.com 的URL下的某些網頁上建立分散式負載。這些網頁包括:

  • 主頁: www.tw511.com
  • 第1頁(Java): www.tw511.com/cplusplus/
  • 第2頁(C語言): www.tw511.com/cprogramming
  • 第3頁(Python): www.tw511.com/python

注意: 假設建立了10個虛擬使用者(執行緒)來在網站上執行分散式負載測試,然後所有其他網頁將由10個虛擬使用者的持續負載進行測試。 但是,這不是一個現實世界的場景。 在現實世界中,同一URL下不同網頁的負載可能存在差異。

讓我們首先建立一個分散式負載測試計劃,而不使用吞吐量控制器。 對於此測試,我們已將單個虛擬使用者分發到每個執行緒組。

建立JMeter測試計劃

  • 進入到JMeter/bin檔案夾並雙擊jmeter.bat檔案以啟動JMeter介面。
  • 單擊「測試計劃」節點。
  • 將此測試計劃節點重新命名為Distributed Test
  • 選擇Distributed Test節點,然後右鍵單擊所選專案。
  • 滑鼠懸停在「Add」選項上,然後將顯示元素列表。
  • 選擇Threads (Users) > Thread Group

新增取樣器

接下來在Thread Group中新增一個HTTP RequestSampler。

  • 選擇「Thread Group」,然後右鍵單擊所選項。
  • 滑鼠懸停在「Add」選項上,然後將顯示元素列表。
  • 選擇Sampler > HTTP request選項。
  • 它將新增一個空的HTTP請求取樣器。

將HTTP Request Sampler的欄位組態為:

  • Name - Home Page 。
  • 伺服器名稱或IP - 在這個範例中,Web伺服器名稱是 www.tw511.com 。

現在,將複製執行緒組並將其貼上到測試計劃中三次。 根據測試的網頁重新命名每個HTTP請求取樣器。每個HTTP請求取樣器的伺服器名稱都相同。

下圖顯示了「分散式測試計劃」下的目錄結構。

分別組態Java,C_Programming和Cpp取樣器的路徑名。

以下影象顯示了上述每個取樣器的相應路徑名。

主頁

Java

C_Programming

CPP

新增監聽器

  • 選擇「Distributed Test Plan」元素。
  • 滑鼠懸停在「Add」選項上,然後將顯示元素列表。
  • 選擇Listener -> Aggregate Report

儲存並執行測試計劃

  • 單擊File -> Save Test Plan as
  • 將整個測試計劃儲存為Distributed_test1.jmx

  • 單擊Run -> Start以執行測試計劃。

驗證輸出

可以在#Samples標籤中檢視每個網頁的載入分布。

現在,我們已經成功執行了分散式負載測試計劃,但是不使用吞吐量控制器。 但是,在應用程式的實際負載測試期間,我們無法確定實際使用者的數量。 在這種情況下,需要使用吞吐量控制器。

新增吞吐量控制器

首先,我們需要為測試計劃建立一個主執行緒組(「Distributed Test」)。

  • 選擇「Distributed Test」節點,然後右鍵單擊所選專案。
  • 滑鼠懸停在「Add」選項上,然後將顯示元素列表。
  • 選擇「Threads (Users)」 -> 「Thread Group」
  • 將此執行緒組重新命名為Master Thread Group
  • 選擇「Master Thread Group」節點,然後右鍵單擊所選項。
  • 滑鼠懸停在「新增」選項上,然後將顯示元素列表。
  • 選擇Logic Controller -> Throughput Controller

下圖顯示了吞吐量控制器的預設控制面板。

按照以下步驟在「Master Thread Group」節點下建立測試計劃:

  • 複製「主頁」取樣器並將其貼上到吞吐量控制器中。
  • 再建立三個吞吐量控制器並複製貼上其餘的網頁取樣器。
  • 禁用/刪除分散式測試計劃節點下的執行緒組。

下圖顯示了「Master Thread Group」節點下的目錄結構。

現在,已將主執行緒組中的使用者總數組態為「10」。 作為其結果,每個吞吐量控制器的「%」執行將根據主執行緒組中的使用者總數進行分配。

我們為每個吞吐量控制器分配了「%」執行:

  • 10%為主頁
  • 20%為Java
  • C_Programming為20%
  • Cpp為50%

注意:主執行緒組中的執行緒數(使用者)可以根據應用程式的實際預期負載而變化。

下圖顯示了Master Thread Group和整個吞吐量控制器的組態。

單擊Run -> Start,執行測試計劃。

驗證輸出

可以在#Samples標籤中檢視每個網頁的載入分布。