前置環境安裝
首先我們需要知道如何下載Jmeter
這里貼上下載網站Apache JMeter - Download Apache JMeter
我們直接解壓,然后在bin目錄下找到jemter.bat即可啟動使用
成功打開之后就是這個界面
每次打開可以用這種方式切換成簡體中文
或者直接修改properties文件修改對應的語言包
接口測試自動化基礎
我們都知道接口測試可以使用postMan或者使用瀏覽器直接查看數據
那我們為啥使用Jmeter呢?
筆者認為是因為Jmeter可以實現自動化
可以實現循環接口測試??
假設a接口對登錄依賴 我們可以提取登錄的驗證信息以某種形式傳給a接口
首先得先添加一個線程組(先使用一個線程)
這里的線程組就可以模擬多個用戶訪問了
接著我們就可以創建對應的HTTP請求了
為了查看結果,我們得再創建一個查看結果樹來進行查看接口返回的結果
我們不妨試一下,請求個api試試
本地寫了一個最簡單的測試一下結果
如果a對b有依賴關系我們就將b寫成一個代碼片段?
可以保存下來使用一個include模塊控制器即可
我們都知道不同環境都需要測試
開發環境/測試環境/預發布環境/發布環境
不同的環境測試改來改去比較繁瑣
我們就可以使用自定義變量
這樣我們每次只需要實現對相同變量的修改即可
這也是自動化最基礎的應用
對一個接口使用多組數據輸入咋辦???
無所謂,循環和csv文件導入會出手
對應的txt文件/csv一樣
第一行是變量名稱,可以在很多地方引用
JSON斷言
我們對于返回的結果總要進行一定的驗證
這里的驗證可以放在csv文件中作為預期結果
當http請求失敗后 我們會實現
通常我們可以判斷code和對應的message
具體情況具體分析 實現自動化驗證
對核心數據都需要測試
使用公共數據咋辦,下一個接口對上一個接口有依賴關系
我們直接使用Json提取器提取上一個接口的返回信息
比如登錄的token....
Jmeter連接數據庫
我們知道開發的信息數據來源一定是數據庫
有些時候我們可以直接連接數據庫驗證信息
比如說我現在要驗證1w個用戶的登錄
這時候使用csv肯定不行啊
或者是抽查某些數據
這時候我們使用JDBC連接數據庫
在這里填入mysql的jar包或者是對應的jar包驅動即可
然后我們直接寫sql即可
這里獲取的數據庫變量也是可以直接進行斷言的
Jmeter調試
這里可以看到目標結果和實際結果
注:我們不知道數據庫會返回對應多少條數據
所以下面設置的變量會變成 變量_1? 變量_2.....對應查出來的數據
隨機查出一條數據
ORDER?BY?RAND()? limit 1?
問題
假設我現在需要搞10000條數據來驗證咋辦?
有人說循環?? 多線程??
都不ok?
循環多次訪問數據庫很容易就造成死鎖了
多線程也是不到萬不得已不去用的,因為出錯概率很高且不好處理
這里就得使用V函數來操作了
使用這樣的方式在變量中加入一個子變量
Jmeter 梯度壓測
開始的時候使用多少個線程來壓測??
不清楚,使用梯度壓測性價比更高,逐步加壓
這里需要下載對應的jar包解壓放到對應的bin目錄下
下載地址:Install :: JMeter-Plugins.org
首先我們說說負載測試壓力測試和性能測試的區別
首先性能測試包括壓力測試和負載測試
負載測試主要就是觀察一個系統性能的拐點,第一次也可以做為基準測試的標準
壓力測試主要就是給服務器一定的壓力(一般在40%以下),進行穩定性測試,持續長時間查看一個系統的穩定程度
主要的指標就是并發數/吞吐量/錯誤率這樣
但是我們如何知道需要引入多少個線程呢
這里梯度壓測就登場了
我們只需要查看這個接口需要多少的性能指標 找到對應的性能拐點
同一時間去觀察一下此刻的線程數 就可以知道使用多少線程去測試這個接口了
然后我們還可以看匯總報告
一個發送多少個請求以及響應時間? 吞吐量? 錯誤率等....
加上這個圖就能實現以上功能了
但是別以為這就是壓測了
真正的壓測是需要知道對應的分析原因的
JVM? mq 緩存? 哪里出現了問題 調優才是關鍵
因為光靠一張圖開發也能輕松知道啊
我直接創建幾個線程不是輕輕松松
OK本期分享就到這里?