如果您的JMeter測試計劃中包含多個線程組,本文可協助您瞭解如何結合JMeter和PTS配置參數,合理選擇多線程組並行或串列壓測。
背景資訊
Apache JMeter提供三種線程組:
Thread Group:(線程組)是測試計劃的核心組件之一,用於定義測試的使用者行為類比。線程組的主要功能是控制虛擬使用者(線程)的數量以及這些使用者的行為和生命週期。
Setup Thread Group:(設定線程組)是一種特殊的線程群組類型,主要用於在效能測試執行之前執行一些初始化操作。它通常用於準備測試環境或設定測試所需的前置條件。如開啟資料庫連接等。
Teardown Thread Group:(拆卸線程組)是一種特殊的線程群組類型,專用於在測試計劃執行完畢後進行清理操作。它通常用於恢複測試環境或收尾工作,以確保測試過程中對系統所做的任何更改都能被撤銷。如關閉資料庫連接等。

在PTS中配置的並發數、迴圈次數會覆蓋Thread Group(主線程組)在JMeter指令碼的配置。但不會影響Setup Thread Group和Teardown Thread Group。

設定多線程組並行或串列
如果JMeter指令碼中包含多個Thread Group(主線程組),您可以參照以下說明設定多線程組的並行和串列關係。
PTS施壓配置中的迴圈次數會覆蓋所有的線程組,而壓測時間長度如果到達,整個壓測都會停止。
多線程組並行
多個線程組並行時,執行的時間由迴圈次數和壓測時間長度中先完成的決定。例如,壓測時間長度設定為10分鐘,而迴圈次數設定為5次,假設迴圈5次只需要5分鐘,那麼壓測在5分鐘時就停止了。
多個線程組並行時,在本地JMeter指令碼中,請不要勾選Test Plan(測試計劃)屬性中的Run Thread Groups consecutively (i.e one at a time),即所有線程組將在測試計劃開始時同時啟動,獨立運行每個線程組。這種設定適合於以下情況:
並行負載測試:當你希望類比多個使用者群體同時訪問系統時,可以利用這種並存執行的方式。例如,你可以在不同的線程組中配置不同類型的使用者行為。
不同情境的同時測試:如果你的測試計劃需要同時測試不同的情境或功能模組,並存執行線程組是一個有效方式。
減少測試時間:並存執行可以減少測試所需的總時間,因為所有線程組會同時開始並運行。

多線程組串列
串列的情況會稍微複雜一點,操作如下:
在本地調試JMeter指令碼時,勾選Test Plan(測試計劃)屬性中的Run Thread Groups consecutively (i.e. one at a time),這將確保線程組按順序運行,即一個線程組完成後再執行下一個。這對於需要按階段執行的測試特別有用,比如先進行某些初始化任務,然後再進行負載測試。

在PTS上設定迴圈次數。該迴圈次數會作用於每個線程組。例如,測試計劃中有A、B、C三個線程組,在PTS施壓配置中,設定迴圈次數為5,那麼執行順序是先基於A的並發數迴圈5次,之後基於B的並發數迴圈5次,最後是C的並發數迴圈5次。
在PTS上設定的壓測時間長度需要足夠長,避免在壓測中多線程串列的過程中被中斷。
預估的壓測時間長度 = 業務請求的RT * 總請求數。您可以在預估的壓測時間長度基礎上適當延長。