天天看點

JMeter自動化測試工具

在進行網頁或應用程式背景接口開發時,一般要及時測試開發的接口能否正确接收和傳回資料,對于單次測試,Postman插件是個不錯的Http請求模拟工具。

image

但是Postman隻能模拟單用戶端的單次請求,而對于模拟多使用者并發等性能測試,就必須借助其他的工具了,這裡推薦功能強大的JMeter自動化測試工具

​​Apache JMeter - Apache JMeter™​​

Apache JMeter是Apache組織開發的基于Java的壓力測試工具。用于對軟體做壓力測試,它最初被設計用于Web應用測試但後來擴充到其他測試領域。 它可以用于測試靜态和動态資源例如靜态檔案、Java 小服務程式、CGI 腳本、Java 對象、資料庫, FTP 伺服器, 等等。JMeter 可以用于對伺服器、網絡或對象模拟巨大的負載,來自不同壓力類别下測試它們的強度和分析整體性能。

下面就以上圖的Restful類型的接口為例簡單介紹使用Jmeter進行接口測試的方法。

擷取某個具體網關裝置的基本資訊。

請求

方法:GET

URI:/api/gateway/<gateway_id>

參數:

在HTTP請求(http request)的頭部(header)添加Userid和Token字段作為使用者驗證字段

參數名 必需 類型 說明
gateway_id true int 網關ID,置于URL内

響應

傳回值:JSON格式的網關資訊

參數:

參數名 類型 說明
id int 網關id
name string 網關的名稱
mac string 網關的mac位址
fw_ver string 網關的固件版本号
sub_dev unsigned int 子裝置數
did string 網關的did
pscode string 網關pscode

1.啟動jmeter:在bin下以管理者身份運作jmeter.bat,啟動jmeter

JMeter自動化測試工具

image

2. 建立測試計劃:

預設啟動jmeter時會加載一個測試技術模闆,儲存測試計劃:修改名稱為Apitest,點選儲存,選擇儲存路徑,後面的步驟,每次添加或修改了了一些選項,軟體并不會自動儲存到jmx檔案中,是以進行測試後,如果需要儲存本次測試選項,要手動到“檔案”菜單中儲存一下。

image

3. 添加線程組

右鍵左邊樹中的測試計劃“Apitest”節點,“添 加”→”Threads”→”線程組”

image

添加成功後,“Apitest”節點下多了“線程組” 節點,當然這個線程組的名稱是可以自己設定的。

JMeter自動化測試工具

image

4. 添加http預設請求:(用來配置公共參數,不是http請求)

右鍵線程組,選擇“添加”→ “配置元件”→“HTTP請求預設值”,點選“HTTP請求預設值”後

添加成功後,線程組”節點下多了“HTTP請求預設值”節點

JMeter自動化測試工具

image

這裡可以設定主機位址等一下公共參數,比如我們的例子中請求路徑前面都是主機位址+index.php,就可以統一在"http請求預設值"裡設定

填寫預設請求名、伺服器、預設請求路徑,儲存測試計劃。

5.添加http請求資訊頭

這一項并不是必須的,隻不過我們的例子中使用了Userid和Token放在HTTP請求頭中用作使用者驗證

右鍵“Apitest”,選擇“添加”→ “配置元件”→“HTTP資訊頭管理器”

JMeter自動化測試工具

image

6. 添加http請求

右鍵“Apitest”,選擇“添加”→ “Sampler”→“HTTP請求”

JMeter自動化測試工具

image

添加成功後,出現新的節點“HTTP請求”,就可以填寫具體的請求參數了。

JMeter自動化測試工具

image

填寫完成,儲存測試計劃

7. 添加監聽器:

右鍵線程組,選擇“添加”→“監聽器”→“XXXXXXXXX”

可以添加的監聽器有很多種,可以添加多個監聽器,這裡我們添加幾個常用的“圖形結果”、“察看結果樹”、“聚合報告”

JMeter自動化測試工具

image

添加成功後,“線程組”下增加了幾個節點

JMeter自動化測試工具

image

8. 試運作

點選執行

JMeter自動化測試工具

image

可以檢視各個“監聽器”的結果

JMeter自動化測試工具

image

Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裡顯示的就是 Name 屬性的值

Samples:表示你這次測試中一共發出了多少個請求,如果模拟10個使用者,每個使用者疊代10次,那麼這裡顯示100

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

Median:中位數,也就是 50% 使用者的響應時間

90% Line:90% 使用者的響應時間

Note:關于 50% 和 90% 并發使用者數的含義,請參考下文

Min:最小響應時間

Max:最大響應時間

Error%:本次測試中出現錯誤的請求的數量/請求的總數

Throughput:吞吐量——預設情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數

KB/Sec:每秒從伺服器端接收到的資料量,相當于LoadRunner中的Throughput/Sec

9. 修改線程組的線程數等參數,用于壓力測試

點選左側樹形導航中的“線程組”

JMeter自動化測試工具

image

設定上面幾個參數,模拟的總的請求數是:線程數*循環次數。執行一下,用“圖形結果”監聽器檢視一下

繼續閱讀