1. 程式人生 > >使用Jmeter進行介面測試和壓力測試的配置和使用

使用Jmeter進行介面測試和壓力測試的配置和使用

1. Jmeter簡介

Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴充套件到其他測試領域。

JMeter 可以用於對伺服器、網路或物件模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體效能。

另外,JMeter能夠對應用程式做功能/迴歸測試,通過建立帶有斷言的指令碼來驗證你的程式返回了你期望的結果。

2. Jmeter的下載和安裝

Jmeter的使用需要java環境,需要先下載安裝jdk;

下載Jmeter工具包,解壓後進入bin資料夾,點選jmeter.bat即可執行;

可下載外掛,擁有更多專業元件。
http://jmeter-plugins.org/downloads/all/下載JmeterPlugins-Standard-1.1.3.zip,解壓後將JmeterPlugins-Standard.jar放在XXX\Apache\jmeter\lib\ext下即可

3. 介面測試方法

1.什麼是介面測試?

介面測試是測試系統元件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。

2.準備資料

獲得測試URL中需要用的引數名稱及值的獲取方式。

<p>獲得各請求的方法、IP、測試URL、測試header、測試body及判斷基準</p>

測試實施

將測試用例中的各項寫入軟體中。

(1)建立執行緒組

這裡寫圖片描述

(2)修改執行緒組名稱

這裡寫圖片描述

(3)為執行緒組新增元件

1.HTTP Cookie管理器
因為很多web網站都是需要登入後才可以進行操作,登入後產生的Cookie能夠驗證使用者身份,在用軟體進行測試時,需要通過驗證,所以我們需要新增此管理器管理Cookie,它的值被整個執行緒共享(也可以被整個測試計劃共享), Cookie在瀏覽器中取得。
這裡寫圖片描述
這裡寫圖片描述

2.HTTP 請求預設值
測試用例中每個介面的共同值可以用“HTTP 請求預設值”元件統計設定,省去每次請求都要填寫的麻煩,它的值被整個執行緒共享(也可以被整個測試計劃共享)。
這裡寫圖片描述


這裡寫圖片描述

3.使用者定義的變數
將後續用到的變數新增到“使用者定義的變數”,後續操作只需引用變數名稱即可,它的值被整個執行緒共享(也可以被整個測試計劃共享)。
這裡寫圖片描述
這裡寫圖片描述

4.HTTP請求
傳送http請求需要用的元件。
這裡寫圖片描述
這裡寫圖片描述

5.HTTP資訊頭管理器
傳送http請求需要加入資訊頭時用此元件,如執行緒組中的所有請求均需要資訊頭,則可將此管理器升級為整個執行緒組共享或者整個測試計劃共享。
這裡寫圖片描述
這裡寫圖片描述

6.響應斷言
傳送請求後,需要通過比對響應結果是夠符合判斷基準來判斷某條測試是否ok,通過人為判斷是可行的,但是當請求數量較大時,人為判斷效率低下,新增“響應斷言” 能夠提高效率(判斷基準有多個時,可以新增多個斷言)。

這裡寫圖片描述

這裡寫圖片描述

斷言也就是我們用來判斷請求是否成功的依據, 可以不配置,這樣jmeter就會根據響應狀態(200)來判斷是不是請求成功.
比如我們要測的介面,成功的話返回這樣的JSON字串:

{
"resultCode":1
}

失敗的話返回這樣的JSON字串

{
"resultCode":0,
"errCode":"xxx"
}

那我們就可以這樣設定:
在這裡插入圖片描述

如果想要根據響應碼200來判斷是否成功,按下面配置:
在這裡插入圖片描述

7.察看結果樹
用於檢視測試結果。
這裡寫圖片描述

8.其他元件
(1)正則表示式提取器
可將某次響應返回資料中某些資訊提取出來,用於後續操作。
(2)Debug Sampler
用於除錯整個測試
(3)CSV Data Set Config
通過檔案進行引數化的一個元件。

(4)開始測試

新增好各種元件及資料後,可進行測試,通過察看結果樹察看各請求測試結果。
這裡寫圖片描述

4. 壓力測試方法

(1)執行緒組

這裡寫圖片描述

(2)Constant Throughput Timer(固定吞吐量控制器)

這裡寫圖片描述

可以選擇下面這些監聽器來幫忙分析:
在這裡插入圖片描述

(3)用表格察看結果 View Results in Table

在這裡插入圖片描述

各個欄位的含義

Sample#——每個請求的ID;
StartTime——每個請求啟動時間;
SampleTime——響應每個請求的時間(以毫秒為單位);
Status——請求狀態,如果為勾則表示成功,如果為叉表示失敗;
Bytes——請求的位元組數;
Latency——延遲時間;
ConnectTime——請求連線用時。

(4)聚合報告 Aggregate Report

這裡寫圖片描述
這裡寫圖片描述

各個欄位的含義

Label——取樣器名稱;
Samples——發給被測試應用的請求總數;
Average——請求響應時間的平均值;
Median——請求響應時間中值,即50%的請求響應時間都小於該值(一個統計學的概念);
90%Line——請求響應時間90%線,即90%的請求響應時間都小於該值;
Min——最小響應時間;
Max——最大響應時間;
Error%——出錯率(出錯的請求數/所有的請求數);
Throughput——吞吐量,每秒/每分鐘(具體看“/”後面的單位)處理的請求數;
KB/sec——每秒從伺服器端接收到的資料量,相當於LoadRunner中的Throughput/Sec;
【注意】總體值並不是各列對應記錄的累加。是以所有Samples為樣本的統計值,如:總體Min=min{各個Samples的Min},總體Max=max{各個Samples的Max}。

(5)總結報告 Summary Report

在這裡插入圖片描述

各個欄位含義:

Label——取樣器名稱;
Samples——發給被測試應用的請求總數;
Average——請求響應時間的平均值;
Median——請求響應時間中值,即50%的請求響應時間都小於該值(一個統計學的概念);
90%Line——請求響應時間90%線,即90%的請求響應時間都小於該值;
Min:最小響應時間;
Max:最大響應時間;
Std.Dev——所有請求響應時間的標準差,即是“用表格檢視結果”中的偏離;
Error%——出錯率(出錯的請求數/所有的請求數);
Throughput——吞吐量,每秒/每分鐘(具體看“/”後面的單位)處理的請求數;
KB/sec——每秒從伺服器端接收到的資料量,相當於LoadRunner中的Throughput/Sec;
Avg.Bytes——服務端返回給Request資料的平均值(服務端返回所有資料/請求數)。

(6)聚合圖表 Aggregate Report

這個的話就是將聚合報告以圖表的形式展現出來了
在這裡插入圖片描述
在這裡插入圖片描述

縱軸是聚合報告中的欄位, 橫軸是請求響應時間

(7)察看結果樹 View Results Tree

可以看到每個執行緒執行的情況,請求資訊和響應資訊

在這裡插入圖片描述

(8)響應時間圖表 Response Time Graph

可以看出每個時間點,平均響應的時間

在這裡插入圖片描述
在這裡插入圖片描述

(9)圖形結果 Graph Results

在這裡插入圖片描述

橫軸是時間軸, 可以看出

No of Samples 樣本數目——樣本總數(執行緒數*迴圈次數),或者說是傳送給測試應用的請求總數;
Latest Sample 最新樣本——伺服器響應最後一個請求的時間;
Average 平均——請求響應時間的平均值;
Deviation 偏離——請求響應時間的標準差;
Throughput 吞吐量——每秒/每分鐘(具體看“/”後面的單位)處理的請求數;
Median 中值——請求響應時間中值,即50%的請求響應時間都小於該值。

(10)監聽器

使用外掛JMeter Plugins可以看到以下統計圖表:

這裡寫圖片描述

監聽器 [email protected] - Transactions per Second
這裡寫圖片描述

監聽器 [email protected] –PerfMon Metrics Collector
這裡寫圖片描述

(11)使用非GUI介面執行壓力測試

這裡寫圖片描述

非GUI壓力測試步驟:

在GUI介面設定併發數、測試時間等,新增各元件,儲存測試計劃,並關閉軟體;

使用非GUI介面,用指令啟動壓力測試;
指令例如:D:\Program Files\apache-jmeter-3.1\bin>jmeter -n -t testplan.jmx -l listener.jtl

開啟jmeter.bat,在聚合報告元件中載入“listener.jtl”,檢視聚合報告;

在監視器中中載入“listener.jtl”,檢視各曲線圖。