1. 程式人生 > >Jemeter效能測試

Jemeter效能測試

1.1.1.                       新增執行緒組

l  右鍵“測試計劃”->“新增”->“Threads(Users)”->“執行緒組”

 

1.1.2.                       新增“HTTP請求”

l  右鍵“執行緒組”->“新增”->“Sampler”->“HTTP請求”

 

l  開啟之後,填入訪問該介面所需要的引數,效果如下圖

 

Tips:

  1. 伺服器名或IP:這裡填寫服務IP地址(不帶埠),有域名的直接填寫域名
  2. 埠號:這裡填寫埠號,有域名的這裡為空就好。
  3. Timeouts(milliseconds):超時時間,單位是毫秒;Connect:連線超時;Response:響應超時。二者都可以不填
  4. Implementa:採用什麼例項來執行這次HTTP請求(HttpClient4/HttpClient3.1/Java),這裡我們不用選擇,直接預設就好。

協議:該介面採用什麼協議(http/https),這裡不填預設是http,根據情況填寫

方法:請求該介面的方法(GET/POST等),根據介面請求型別選擇。

Content encoding:這裡是返回報文的編碼格式(如‘utf-8’),採用預設值就好

  1. 同請求一起傳送引數:介面的引數,可以通過下方“新增”按鈕,新增引數,左邊為“key”,右邊填“value”,如上圖。(這裡只適用於傳引數的介面,傳Json和檔案等介面使用這種方式不支援,暫不做介紹)

1.1.3.                       新增監聽器

完成上述3.2.1和3.2.2步,一個介面的簡單指令碼已經編寫完成了;但是此時我們還不知道在哪裡檢視指令碼執行的結果,這裡我們需要新增一個監聽器。

 

l  右鍵“執行緒組”->“新增”->“監聽器”,選擇“察看結果樹”

 

Tips:Jmeter提供了需要監聽器,有興趣的可以去一一新增,察看效果。

1.1.4.                       執行指令碼

l  點選按鈕,執行指令碼,察看結果

 

在“響應資料”下,我們看到了與使用瀏覽器一樣的返回結果(報文中headers有差異,這部分可以忽略,想知道為什麼不一樣的可以去學學http協議,在這裡不影響結果)。

 

到這裡,一個http介面測試的Jmeter指令碼已經完成。“Ctrl+S”儲存一下吧,下次就可以直接拿來使用了(Jmeter指令碼預設儲存在bin目錄下)

1.2. 壓力測試

在上面指令碼配置上執行緒數,即可對該介面進行壓力測試啦。

l  點選“執行緒組”

 

  1. 執行緒數:需要採用多少個併發。
  2. Ramp-Up Period(in seconds):設定到達最大併發所需時間(如上圖,從0增加到5個併發,花費1秒鐘)
  3. 迴圈次數:每個併發執行幾遍指令碼(如上圖,每個執行緒執行100遍)。勾選永遠,則指令碼會被無限迴圈執行下去。
  4. 排程器:勾選則啟用排程器

持續時間(秒):設定指令碼跑多久(如需要讓指令碼跑一分鐘,則填入60)

啟動延遲(秒):延遲多少秒才開始執行指令碼

 

l  新增“聚合報告”

聚合報告是一個監聽器,作用是,為本次壓力測試整理出一份“報表”

 

l  點選按鈕讓我們來看看5併發迴圈100次的結果

 

l  點選按鈕,清除上次測試結果,然後來看看10併發迴圈100次結果

 

可以看到5併發時,Throughput為13.0/sec;10併發時:Throughput為22.6/sec。

理論上,併發數與吞吐量成正比,併發越多,吞吐量越大。

實際上,伺服器的處理能力和網路頻寬是有限的,當併發數達到一定數量之後,吞吐量不隨併發數增加而增長,出現響應時間變長,甚至伺服器宕機等狀況,稱之為伺服器的效能“瓶頸”。

簡單來說,效能測試就是根據伺服器的“瓶頸”,來評估服務的效能是否能夠達到期望。

 

附:表頭說明

Label - 如圖,在不勾選"Include group name in label?"複選框的情況下,為請求取樣器的名稱,否則為請求取樣器所線上程組:請求取樣器名稱

# Samples - 用同一個請求取樣器,傳送請求的數量(注意:該值是不斷累計的)。比如,10個執行緒數設定為10,迭代10次,那麼每執行一次測試,該值就增加10*10=100

Average - 預設情況下是單個Request的平均響應時間,當使用了Transaction Controller 時,也可以以Transaction為單位顯示平均響應時間

Median - 中位數。表示響應時間本不大於該時間值的請求樣本數佔總數的50%

90% Line - 表示響應時間不大於該時間值的請求樣本數佔總數的90%

Min - 針對同一請求取樣器,請求樣本的最小響應時間

Max - 針對同一請求取樣器,請求樣本的最大響應時間

Error % - 出現錯誤的請求樣本的百分比

Throughput - 吞吐量以“requests/secondrequests /minuterequests /hour”來衡量。 時間單位已經被選取為second,所以,顯示速率至少是1.0,即每秒1個請求。 當吞吐量被儲存到CVS檔案時,採用的是requests/second,所以30.0 requests/second CVS中被儲存為0.5Kb/sec - Kilobytes/seond來衡量的吞吐量