接口壓測工具--jmeter
jmeter
jmeter是apache公司基於java開發的一款開源壓力測試工具,是一個較輕量的測試工具。運行需要安裝jdk環境,jmeter為免安裝軟件,
解壓後直接運行jmeter執行腳本即可。它也是跨平臺的,支持在windows、linux、macos上使用。
1 jmeter-http接口腳本基本流程
添加線程組
添加http請求
在http請求中寫入url、路徑、請求方式、參數
添加查看結果樹
調用接口、查看返回值
具體操作見下圖示:
有時還需添加cookie和header,只需在【配置元件】裏添加【HTTPCookie管理器】和【HTTP信息頭管理器】即可,其配置如圖示:
cookie的名稱、值依據接口文檔填寫,域需要填寫HTTP請求頁裏的【服務器名稱或ip】。
header的名稱、值依據接口文檔填寫。
添加【查看結果樹】
【添加】-【監聽器】-【查看結果樹】,具體界面如下圖示:
通過【查看結果樹】可以查看請求數據,也可查看服務器的響應數據,以此來判斷測試結果。
2 jmeter-參數化
jmeter參數化有三種方式:
用戶定義的變量
這種是為了方便管理參數,只能有一個值,比如ip地址。
在線程組中添加一個用戶定義的變量,然後寫key、value就可以,key是參數名,value是具體值,調用時使用${key},其中key就是變量名稱。
如下圖中變量名稱是ip:
函數生成器
可參照一定規則生成數據,比如生成隨機數、時間等。
函數助手可按照規則生成一些參數,常用的參數有隨機數__Random、獲取當前時間__time、唯一值__UUID。
隨機數__Random,可在指定範圍內取隨機數
獲取當前時間__time,獲取當前系統時間,具體格式為:yyyy-MM-dd HH:mm:ss
唯一值__UUID,每次生成一個隨機的uuid,都是唯一值
從文件中讀取
事先寫好數據,然後從文件中讀取數據,比如登錄接口的賬號、密碼。
從文件中讀取,需要三個步驟:讀取文件、取文件內容裏的參數,賦予一個名字、使用值
從文件讀取的話,需要在線程組裏添加【CSV Data Set Config】,如下圖示:
3 jmeter斷言
斷言是用來檢查返回接貨對不對的,如果對,就代表請求返回正確;如果沒有的話,就代表請求結果與預期不一致,並以此來作驗證測試是否通過。
添加方法:【添加】-【斷言】-【響應斷言】,添加後的界面如下圖示:
4 jmeter-關聯
關聯是獲取到服務器返回的值,保存起來,給別的請求使用,做一些其他處理。
jmeter關聯是通過正則表達式提取器來完成的添加方式為:
【添加】-【後置處理器】-【正則表達式提取器】,字段詳解見下圖示:
通過上面的關聯,其他請求使用時,調用${code}就可以獲取到關聯數據。
另可通過加載第三方插件來做關聯:[email protected] - JSON Path Extractor
【添加】-【後置處理器】-【正則表達式提取器】,字段詳解見下圖示:
此種關聯方式適用於響應數據為json串的方式,操作上更簡單一點。
5 jmeter-mysql操作
要操作mysql需要引入第三方jar包,因為jmeter本身不能直接連接mysql,操作mysql需要如下步驟:
在測試計劃裏導入jdbc的jar包
創建數據庫連接配置(mysql的url、端口號、賬號、密碼等)
寫sql語句,執行sql
查看結果
具體操作見下圖示:
【測試計劃】-【Add directory or jar to classpath】下導入jdbc的jar包
【添加】-【配置元件】-【JDBC Connection Configuration】
配置mysql連接池名稱,要與後面sql請求的【Variable Name】一致
數據庫的url:
jdbc:mysql://192.168.1.116:3307/bugfree?allowMultiQueries=true
數據庫驅動:
指定數據庫類型是mysql、orcle、sqlserver等,驅動列表如下:
賬號密碼:
所連接數據庫的賬號、密碼。
6 測試結果查看
【添加】-【監聽器】-【聚合報告】,具體參數解釋見下圖示:
查看結果需關註的幾個指標:
tps,每秒處理的請求數,tps越高說明服務器處理能力越好
響應時間,每個請求的處理時間
並發用戶數,即並發量
7 jmeter-linux下運行
linux下運行jmeter是在jmeter的bin目錄下執行jmeter.sh腳本,命令如下:
sh jmeter.sh -n –t a.jmx -l res.jtl
-n 代表以沒有圖形化界面啟動
-t 代表後面是測試腳本
a.jmx 就是做好的測試腳本
-l 代表後面是測試結果
res.jtl 就是測試結果文件
若要在查看結果樹中查看測試結果,只需在【查看結果樹】視圖中導入這個res.jtl文件即可。
8 jmeter 添加負載機
壓測過程中,當並發較大,一臺機器已經啟動不了那麽多並發時,需要添加負載機。
首先在做壓力機的機器上啟動jmeter的代理:
jmeter的bin目錄下有一個jmeter-server,啟動它即可,此文件就是jmeter代理。
然後在控制機上添加壓力機ip:
jmeter的bin目錄下有一個jmeter.properties,打開後找到remote_hosts模塊,添加ip後重新啟動jmeter,就可以在jmeter裏看到壓力機了。
接口壓測工具--jmeter