使用jmeter進行api介面壓力測試(轉自某位大佬,感謝)
大佬的原文地址:https://blog.csdn.net/w88193363/article/details/80815718?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
前言
壓力測試的工具挺多的,但看了其他人的文章介紹,還是選了jmeter,開源、免費啊,
下載
下載地址:
https://jmeter.apache.org/download_jmeter.cgi
環境配置
下載後解壓zip到任意目錄,然後配置環境變數
變數名JMETER_HOME,變數值F:\apache-jmeter-4.0
在變數名CLASSPATH新增
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
%JMETER_HOME%\lib\jorphan.jar;
%JMETER_HOME%\lib\logkit-2.0.jar;
- 1
- 2
- 3
在Path新增
%JMETER_HOME%/bin
- 1
啟動
然後啟動cmd,輸入F:\apache-jmeter-4.0\bin\jmeter.bat
啟動後:
jmeter的主介面如下:
更改語言版本為中文
所需的api引數
我們現在準備對以太坊的jsonrpcapi介面進行測試
地址是:
http://192.168.10.131:8545
http請求頭部配置:
Content-Type:application/json
請求內容:
{
"jsonrpc":"2.0",
"id":1,
"method":"eth_getBlockByNumber",
"params":["0x331f75",true]
}
- 1
- 2
- 3
- 4
- 5
- 6
建立測試用例
建立執行緒組
在測試計劃中右鍵彈出選單,新增-》Threads(Users)-》執行緒組
執行緒組的引數配置
執行緒屬性中,Ramp-Up Period(in seconds),間隔多長時間啟動1個執行緒,直到建立100個執行緒,如果為0的話,則在開始測試後立刻建立100個執行緒
可以選中“排程器”,設定需要持續測試的時間,
設定http請求頭部
在通常編寫的api中,是需要配置http請求頭部的,在jmeter中也由相關的設定,
線上程組單擊右鍵出現選單欄,新增-》配置元件-》HTTP資訊頭管理器
新增api中需要的頭部配置資訊
設定http請求預設值
http請求預設值的設定,可以設定請求的伺服器,其他環境下的http請求只需新增對應的子路徑即可完成測試,
方便測試環境與生產環境之間的切換
一般設定好伺服器地址即可
設定http請求
右鍵點選“執行緒組”,出現選單,新增-》Sampler-》HTTP請求
HTTP請求的路徑,本次測試並未填寫,可根據實際情況新增
在BodyData,中填入需要請求的引數,這裡以太坊的jsonrpc-api,需要請求的引數是json格式的,
{
"jsonrpc":"2.0",
"id":1,
"method":"eth_getBlockByNumber",
"params":["0x331f75",true]
}
- 1
- 2
- 3
- 4
- 5
- 6
為http請求新增檢視結果樹
右鍵點選“http請求”(就是之前新增的http請求項),新增-》監聽器-》檢視結果樹
可在此頁面中檢視每次的api請求過程以及結果,方便後期分析
為http請求新增Summary Report
右鍵點選“http請求”,新增-》監聽器->Summary Report
可在此頁面中檢視報告
開始測試
右鍵點選”執行緒組“,start
測試完成之後,可以檢視每個api請求過程及結果
以及綜合報告
綜合報告各個引數指標說明
Label:取樣器/監聽器名稱
Samples :事務數量
Average:平均一個完成一個事務消耗的時間(平均響應時間)
Min:最小響應時間
Max:最大響應時間
以上單位都是ms
Std.Dev:偏離量,越小表示越穩定
Error %:錯誤事務率
Throughtput:每秒事務數,即tps
KB/sec:網路吞吐量