jmeter做效能測試

2023-02-15 21:05:50

一、執行緒與程序

一個軟體/程式,是以程序的方式存在的,一個程序可含多個執行緒(一個軟體可以做多個事情,就是基於執行緒而實現的)

二、並行的基本概念

並行:

並行使用者數:同一時刻,伺服器/介面接收到的使用者量,例如同一時刻有22個同學同時點選登入按鈕,此時並行使用者數為22

並行請求數/qps/rps:同一時刻伺服器正在處理的請求數 (請求數一般理解為介面的請求數),例如點選登入按鈕後,會同時請求8個介面,則並行請求數為22*8

注意:通常意義上的並行指的是並行使用者數

jmeter效能測試原理:通過模擬高並行來測試伺服器在一段時間內的效能瓶頸/最大並行

三、設定並行

1、設定執行緒數(線上程屬性裡設定執行緒數,一個執行緒數即為一個人)

  •  Ramp-up Period(in seconds):決定多長時間啟動所有執行緒。如果使用10個執行緒,ramp-up period是100秒,那麼JMeter用100秒使所有10個執行緒啟動並執行。每個執行緒會在上一個執行緒啟動後10秒(100/10)啟動。Ramp-up需要要充足長以避免在啟動測試時有一個太大的工作負載,並且要充足小以至於最後一個執行緒在第一個完成前啟動。  一般設定ramp-up=執行緒數啟動,並上下調整到所需的。
  • 迴圈次數:通常使用迴圈次數增加測試時間,一般設定為100

也可以使用排程器設定時間,通常是5min、10min、30min這種比較短的

2、新增集合點(適用於順時並行較高的情景,在jmeter中不用設定所有的情況,在並行高的第一個介面設定)

應用場景:搶購/秒殺(等待執行緒數準備好了再衝)

例子:活動,大轉盤,每天九點開啟,獎品非常豐富,你做效能測試的時候,怎麼模擬這種情況?

設定集合點步驟:

①新增同步定時器

右鍵http請求--->新增---->定時器---->synchronizing timer

②設定定時器

 四、jmeter中的引數化

設定並行後,會發現登入介面有的能正常執行,有的報錯,這是因為多個人共用同一個賬號導致的,所以針對這個情況,需要對資料進行引數化

引數化含義:單個執行緒需要單獨的資料,比如登入的賬號和密碼

1、引數化步驟

4.1.1:明確哪些資料需要做引數,資料是從哪裡來的

4.1.2:準備測試賬號

web介面:呼叫介面準備

小程式:生成openID的演演算法來建立測試賬號的token,再把token按照規則插入到Redis和資料庫表中

4.1.3:使用CSV資料檔案設定參照資料檔案   

CVS資料檔案設定會自動取出單獨的資料,保證沒分執行緒資料是唯一的

①右鍵執行緒組--->新增---->設定元件---->CSV資料檔案設定

 

 ②選取已設定的檔案

 

 ③資訊頭管理器中,參照變數

 

 

 五、聚合報告

即效能測試結果/效能指標,在測試計劃中新增

右鍵測試計劃--->新增--->監聽器--->聚合報告

 

 指標判斷標準:

  • 響應時間--平均響應時間:
  • 響應時間-90%line、95%line、99%line:當前有多少人在這個時間點的響應時間(決定了絕大使用者的使用感受)

 

 不同行業和專案對響應時間會有不同的要求,例如,網際網路:500ms以下,例如淘寶業務10毫秒左右;

金融企業,1秒以下為佳,部分複雜業務3s以下

保險企業:3s以下為佳

製造業:5s以下為佳

 一般來說,響應時間都會遵循258原則,即2s以下優秀,2-5s可接受,5-8s良,8s差(不清楚就以8s作為依據)

  • 失敗率,即出錯的概率

專案給出的標準   200qps,失敗率不超過0.01%,一般的小公司系統,小於5%即可,比較簡單粗略

  • 伺服器上cpu使用率,即伺服器的繁忙程度,原則是不要持續100%,最好是在85%<x<90之間
  • tps:伺服器每秒返回的請求數,在jmeter中稱為吞吐量,評論伺服器效能的輔助指標

 

 tps最主要的作用是用來找效能瓶頸(一般來說,隨著並行數的增加,系統的效能會先穩定增加,之後一段時間系統效能趨於平穩,最後系統效能會下降,系統效能下降的那個點,稱為效能拐點,可得到最大並行)

 

 

 注:我們在專案中,一般是隻以響應時間、失敗率、CPU使用率來判斷效能指標就夠了