在 JMeter 中運行多個線程組
一、概述
使用 JMeter,我們可以對場景進行分組並以不同的方式運行它們以復制真實世界的流量。
在本教程中,我們將學習如何以及何時使用多個線程組複製真實場景,以及如何使用簡單的測試計劃順序或併行運行它們。
2.創建多個線程組
線程組是 JMeter 的一個元素,它控制執行測試的線程數。
JMeter 測試計劃中的每個線程組都模擬了一個特定的真實應用場景。
大多數基於服務器的應用程序通常有多個場景,因此創建一個單獨的線程組映射到每個用例可以讓我們更靈活地在測試期間正確分配此負載。
有兩種運行多線程組的方法:順序或併行。
3.順序運行線程組
這主要在我們要一個接一個地執行應用場景時有用,尤其是當各個場景之間存在依賴關係時。
3.1.用例
假設我們有一個電子商務應用程序,用戶可以在其中瀏覽產品、將特定產品(他們喜歡的)添加到他們的購物車,最後開始結帳,然後下最終訂單。
對於此類應用程序,當我們想要模擬用戶旅程時,我們希望我們的腳本遵循特定的順序。例如,我們的腳本可能首先執行瀏覽產品,然後將產品添加到購物車,最後下訂單。
3.2.配置
從測試計劃中,您可以通過選中復選框Run Thread Groups consecutively (ie one at a time):
4.並行運行線程組
這主要在各種場景之間沒有依賴關係時有用。
測試操作同時執行,模擬被測系統的混合負載。
4.1.用例
例如,假設一個網站的新聞分為技術新聞、市場新聞、體育新聞等類別。
本網站的主頁將始終顯示所有不同類別的最新頭條新聞。
對於此類應用程序,我們仍然可以創建多個線程組以在不同頁面上具有不同的用戶負載分佈。
但是,可以同時執行這些線程組,因為它們是互斥的。
4.2.配置
JMeter中的Test Plans默認配置為並行運行Multiple Thread Groups,所以我們不需要勾選Run Thread Groups consecutively
。
5. 測試用例設置
要試用測試計劃,我們需要一個 API。我們可以使用JSON Placeholder站點公開的一個。該站點提供了假 API 供我們進行試驗。
我們將為我們的測試計劃使用兩個場景
場景 1:閱讀特定帖子。
場景 2:創建新帖子。
由於大多數最終用戶將對閱讀帖子而不是撰寫新帖子感興趣,因此我們希望將它們保留為兩個單獨的線程組的一部分。
6. 將線程組添加到測試計劃
6.1.創建基本測試計劃
我們將運行 JMeter 開始。
默認情況下,JMeter 創建一個名為Test Plan
的默認測試計劃。讓我們將此名稱更新為My Test Plan:
6.2.添加多個線程組
要創建線程組,我們將右鍵單擊Test Plan
並選擇Add -> Threads (Users) -> Thread Group:
現在我們將創建兩個線程組,從 GET 請求線程組開始:
該線程組將用於閱讀特定的帖子。
我們在這裡指定了一些關鍵參數:
-
Name
:GET 請求線程組(
我們要給這個線程組起的名字) -
Number of Threads
:5(我們將模擬的虛擬用戶數作為負載的一部分) -
Ramp up Period
:10(啟動和運行配置的線程數所需的時間) -
Loop Count
:1(JMeter 應執行特定場景的次數)
接下來,我們將創建 POST 請求線程組:
該線程組將用於創建新帖子。
在這裡,我們指定了:
-
Name
:POST 請求線程組(
我們要給這個線程組起的名字) -
Number of Threads
:5(我們將模擬的虛擬用戶數作為負載的一部分)。 -
Ramp-up Period
:10(為特定線程組啟動和運行配置的線程數所需的時間) -
Loop Count
:1(JMeter 應執行在單個線程組中定義的特定場景的次數)
6.3.添加請求
現在,對於每個線程組,我們將添加一個新的 HTTP 請求。
要創建請求,我們右鍵單擊Test Group
並選擇Add -> Sampler -> HTTP Request
:
現在我們在 GET Request Thread Group 下創建一個請求:
在這裡,我們指定:
-
Name
:Read Post(我們要給這個 HTTP 請求的名稱) - 評論:閱讀 ID = 1 的特定帖子
-
Server Name or IP
:my-json-server.typicode.com
-
HTTP Request Type
:GET(HTTP 請求方法) -
Path
:/typicode/demo/posts - 隨請求發送參數:在這裡,我們使用了 1 個參數,即 id(這是檢索具有特定 id 的帖子所必需的)
現在我們將在 POST 請求線程組下創建另一個請求:
![在 JMeter 中運行多個線程組](https://asset.1ju.org/cmsstatic/running-multiple-thread-groups-in-jmeter-6.jpg)
在這裡,我們指定了:
-
Name
:創建帖子(我們要為此 HTTP 請求提供的名稱) -
Comments
:創建 ID =p1 的新帖子(通過將其發佈到服務器) -
Server Name or IP
:my-json-server.typicode.com
-
Path
:/typicode/demo/posts -
Send Parameters with the request
:在這裡,我們使用了兩個參數,即 id 和 title(這些是創建新帖子所需的屬性)
6.4.添加匯總報告
JMeter 使我們能夠以多種格式查看結果。
要查看執行結果,我們將在表監聽器中添加一個查看結果。
要創建請求,我們右鍵單擊“Test Plan”
並選擇Add -> Listener -> View Results in Table:
6.5.運行測試(並行)
現在我們按下工具欄上the Run
按鈕 (Ctrl + R) 以啟動 JMeter 性能測試。
測試結果實時顯示:
這表明 Read Post 和 Create Post 針對配置的線程數一個接一個(並行)運行。
此測試結果是並行運行多個線程組的結果。這是測試計劃的默認設置(未選中復選框):
6.6.運行測試(按順序)
現在我們從我們的測試計劃中選擇連續運行線程組(即一次一個)複選框:
現在我們再次按下工具欄上the Run
按鈕 (Ctrl + R) 以啟動 JMeter 性能測試。
測試結果實時顯示:
這表明映射到 Read Post 的所有線程首先執行,然後是 Create Post 線程。
七、結論
在本教程中,我們了解瞭如何創建多個線程組並使用它們來模擬真實的應用程序用戶負載。
我們還了解了有關如何按順序或併行配置多個線程組的場景。