如果您的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 * 總請求數
。您可以在預估的壓測時長基礎上適當延長。