JMeter執行性能測試如何快速確定拐點

  • 2019 年 10 月 30 日
  • 筆記

機會只留給那些有準備的人

改變能改變的,接受不能改變的,就是進步

 最近性能壓測執行過程中,經常看到很多測試人員執行性能測試,要尋找拐點,但是效率太低,本文就介紹下,如何高效確定性能測試拐點 所謂性能測試拐點,就是指並發用戶達到一定數量,平均響應時間遞增,TPS不增反降,報錯率遞增,當前並發用戶就是該測試案例的拐點

 尋找拐點的意義就是當前並發用戶下,系統的平均響應時間、TPS、報錯率是否滿足性能要求,如果滿足,該並發用戶就是滿足用戶需求下所能承受的最大並發用戶數,在去考慮並發用戶是否滿足系統用戶需求,可以結合系統總用戶數、在線用戶數去判斷,他們的關係大致如下: 在線用戶數=系統總用戶數*20% 並發用戶數=在線用戶數*30% 比如系統總用戶數是10000,則在線用戶數就是2000,並發用戶數就是600

一、腳本開發

1. 首先給大家介紹如何開發高效執行的性能測試腳本,目前多數用戶都是分不同並發用戶單次執行,該方法執行效率低,並且不方便數據比對,如下

2. 首先在一個執行緒組下開發好測試案例,需要壓測幾次不同的並發用戶下的性能,就複製多少筆執行緒,每個執行緒修改執行緒數、用例名稱即可,如下所示,修改用例名稱和執行緒數對應,這樣生成的測試結果就會區分不同並發下同一個案例的響應時間,方便比對

3. 如果有多個介面實現了一個用例,則需要把所有介面放置在事務控制器下即可,這樣就能生成一個匯總結果(統計多個請求的響應時間、tps等值)

4. 最後在測試計劃記得勾選獨立運行每個執行緒組選項,勾選該選項的意義就是依次並發執行10、20、30、50執行緒,直到壓測結束

二、執行性能測試

1. 性能測試都是通過命令執行,不建議使用介面壓測,命令如下:

jmeter -n -t rps.jmx -l summary.jtl -e -o report
2. 命令解析,summary.jtl生成的是聚合報告,report生成的是jmeter自帶的html報告,裡面有多種圖形報表

三、執行結果分析

1. 執行完畢,雙擊index.html即可打開測試報告

2. 匯總結果如下,隨著並發用戶增加,平均響應時間在遞增,報錯率也在遞增,TPS也隨著用戶數的增加而遞增,到了500用戶為最高點,1000並發用戶反而降低

3. 查看Response Times Over Time圖表可以看到響應時間隨著並發用戶數遞增,平均響應時間一直遞增,當從500並發改成1000並發時,響應時間增加幅度最大

4. 查看Transactions Per Second,從圖表可以看出當並發用戶從10遞增到400,每秒處理的事務數一直是遞增趨勢,然後500-1000,開始慢慢降低

5. 查看Response Time Percentiles,由圖可見,1000並發用戶只有2.5%的事物響應時間小於5秒,其它都大於5秒,並且50%大於7秒,對於一個簡單查詢,該響應時間用戶已經不能接受

6. 查看 Hits Per Second,從圖表可以看出當並發用戶從10遞增到400的時間段,每秒請求數一直是遞增趨勢,然後500-1000,請求數開始不增反降

綜上所述,本文測試案例執行的不同用戶並發場景,拐點就是500並發用戶左右,具體案例還需要結合測試結果具體分析