前提(需安裝的插件):
- JMeter Manager
- Custom Thread Groups
- Basic Graphs
術語解釋
1.線程屬性的解讀
①線程數:代表模擬的用戶數量
注意線程數不宜一開始設置的太大,然后根據線程數設置啟動時間100以內1-2s,1000個2-3秒。
設置1個線程數,循環次數設置多次,這種不算是性能測試;需要設置多線程數,模擬多用戶向服務器發起請求,才算性能測試。
②Ramp-Up時間:代表的是線程數准備時間(設定的時間內,線程數向服務器發送請求,例如:設置30個線程數,Ramp-Up時間設置為2,那么2秒結束后30個線程數已經向服務器發送請求,並不等於每秒啟動15個線程數,有可能前面一秒啟動n個線程數,第二秒啟動30-n個線程數,總之2秒結束設置的線程數都會發送完請求),那么設置這個時間有什么意義呢?舉例說明吧,比如設置了1000個線程數,啟動時間設置為1秒,那么服務器在這1秒鍾承受的壓力會很大,有可能服務器還沒時間分配足夠的資源導致報錯(這種報錯原因是因為場景設置的原因導致的);如果設置時間增加一點,那么請求在這段時間內持續發送,服務器有緩沖時間,服務器壓力會小一些,就不會出現抖動的現象。
③循環次數:代表的是線程組需要向接口發送多少次重復的請求,如果選擇“永遠”,那么線程數會一直發送請求,直到強行停止才會停止stop(有可能后面的發送的請求會報錯);不過一般“永遠”會和調度器一起使用,在調度器中設置持續時間,到了時間循環就會停止(這種情況因為不是強行停止,就不會出現報錯的情況)
測試插件安裝
插件下載地址:https://jmeter-plugins.org/install/Install/ ,如圖

插件下載到本地后放在jmeter對應的安裝目錄lib/ext 如圖

安裝后重啟jmeter后,打開在選項中可以看到對應的插件如圖:

圖2:插件安裝界面:

在此界面中可以選擇需要安裝的插件:Custom Thread Groups和Basic Graphs
然后在測試計划-->線程組中可以看到出現的新線程組,如圖

測試場景設計和插件使用
基准測試
一般情況下,基准測試也是單用戶測試,測試環境確定以后,對業務模型中的重要業務做單獨的測試,獲取單用戶運行時的各項性能指標,為多用戶並發測試和綜合場景測試等性能分析提供參考依據,這里設計一個Thread Group 線程組線程的測試,如圖

這里設計了立即啟動2個線程(用戶)查看對應的接口結果信息:

負載測試
負載測試:逐步增加用戶並發數,有兩種場景;階梯場景和波浪式場景
階梯場景
測試計划-->添加-->線程-->Stepping Thread Group(說明:Concurrency Thread Group和Stepping Thread Group都可用於階梯式加壓測試,但是由於Stepping Thread Group已經不再被官方推薦使用了,我們對Concurrency Thread Group進行簡單介紹),如圖

解釋:
target concurrency:目標並發數
ramp up time(min):加速時間
ramp-up steps count:加速步驟計數
hold target rate time(min):保持目標費率時間
thread iterations limit:線程迭代次數限制
log threads status into file:將線程狀態記錄到文件
以上,以圖形的方式展示了線程加壓的過程。
例如:
50個線程組,加速時間為5分鍾,10個加速步驟,保持目標費率3分鍾:
10個加速步驟,每步5個線程組;
5分鍾/10步=0.5,每步0.5分鍾;即每1分鍾加載10個線程組,直到達到50個;
達到50個線程組之后,所有這些線程組將繼續運行,加壓3分鍾。
通過添加監聽器來跑一例子看看結果圖並分析,如圖
Transactions per Second:TPS每秒請求事物數
Response Times Over Time:隨着時間變化的響應時間
Active Threads Over Time:活躍的線程數

波浪式場景
測試計划-->添加-->線程-->Ultimate Thread Group

解釋:
Start Threads Count:最大啟動線程數50個
Initial Delay,sec:初始化等待0秒
Start up Time,sec:增加到最大線程數,花費30秒
Hold Load For,sec:保持最大線程數,運行60秒
Shutdown Time:減少到0個線程,花費10秒適用場景:訂餐系統,用餐時間點時,系統訪問量很大,用餐時間為波浪的波峰
其他幾種測試插件場景說明
Arrivals Thread Group & Free-Form Arrivals Thread Group
跟Concurrency Thread Group線程組功能作用大同小異
target rate:目標費率,每秒鍾多少個請求數
ramp up time(sec):達到目標費率需要的時間
ramp-up steps count:達到目標費率需要多少步
hold target rate time(sec):保持目標費率時間
thread iterations limit:線程迭代次數限制,如果我們只需運行每個用戶一次以模擬用戶的實際行為,則設置為1;設置為空,表示每個用戶將運行不確定的迭代,直到調度結束。
log threads status into file:將線程狀態記錄到文件
concurrency limit:最大並發數限制
舉例:
目標費率為100,加速時間為10秒鍾,5個加速步驟,保持目標費率10秒鍾:
5個加速步驟,每步20增加個費率;
10s/5步=2,每步2秒鍾;即每2秒鍾加載20個費率,直到達到100;
達到100個費率之后,按照這個標准進行加壓10秒鍾;
以上,前十秒鍾按照設置不斷增加費率,請求數為(20+40+60+80+100)*2=600個;后十秒鍾,按照每秒100個費率計算,請求數為100*10=1000個;共計1600個請求數。
————————————————
測試場景設計說明

參考信息:
