平常為了保證營運促銷、抽獎活動能正常運作,我們一般都需要使用 Jmeter、LoadRunner 對接口進行壓力測試
使用它可以模拟一定量的使用者同時去參與促銷抽獎活動,最後生成測試報告,以此判系統接口的穩定性
本篇文章以搶購商品為例,包含:登入、搶購 2 個接口;使用 Jmeter 模拟 20 個使用者同步完成搶購操作
2-1 Mock 接口
為了友善文章講解,這裡使用 VirAPI Mock 了兩個接口:登入、搶購
https://virapi.com/
其中,
登入接口如下:
搶購接口如下:
2-2 準備使用者資料
我們使用 Jmeter 中的 CSV 資料檔案設定為例,在本地建立文本檔案,儲存 30 個使用者資料
每一條使用者資料包含:使用者手機号碼、密碼、使用者 ID
打開 Jmeter 軟體,我們完成下列操作
3-1 建立線程組,配置 CSV 資料檔案
首先,選中測試計劃,右鍵 - 添加 - 線程(使用者),并對線程組重新進行命名
線程數為:模拟 30 個使用者
啟動時長:5 秒鐘建立 30 個線程
循環次數:1 次
接着,在目前線程組下建立一個 CSV 資料檔案設定,用它導入本地使用者資料
在 CSV 檔案配置設定中,關聯本地準備好的使用者資料,并定義關聯變量名,其他保持預設即可
需要指出的是,這裡指定了 3 個變量,分别是:user、pwd、id,和資料檔案中的資料關聯上
3-2 HTTP 請求預設值和 HTTP 資訊頭管理器
線上程組下,添加 HTTP 請求預設值,設定公共的伺服器位址
步驟:線程組 - 右鍵 - 添加 - 配置元件 - HTTP 請求預設值
接着,添加 HTTP 資訊頭管理器,用于設定公共的請求頭
步驟:線程組 - 右鍵 - 添加 - 配置元件 - HTTP 資訊頭管理器
比如,這裡可以添加 VirAPI 應用的 app-token 及 content-type
3-3 登入請求
線上程組下,添加一個 HTTP 請求:登入
然後根據 Mock 接口 - 登入,設定請求的方式、路徑及請求體資料
PS:這裡直接将第一步關聯的變量設定進去即可
3-4 同步定時器
為了真實地模拟并發去調用搶購接口,在搶購接口之前需要一個同步定時器
同步定時器,可以保證所有虛拟使用者互相等待,直到所有使用者集合之後,才開始後續的接口調用
步驟:線程組 - 右鍵 - 添加 - 定時器 - 固定定時器
這裡,設定模拟使用者組的數目和線程數保持一緻,這樣,如果虛拟使用者數達不到指定數目,則不會執行後面的操作
3-5 搶購請求
線上程組下,繼續添加一個搶購的 HTTP 請求
同樣根據接口 API,編輯 HTTP 請求的方式、路徑、請求體
3-6 添加請求結果樹、彙總報告、聚合報告
選中線程組,添加請求的結果樹、彙總報告、聚合報告
步驟:線程組 - 右鍵 - 添加 - 監聽器 - 察看結果樹/彙總報告/聚合報告
如此,Jmeter 的配置已完成!
4-1 直接運作
選中線程組,點選菜單欄的啟動按鈕,即可以模拟并發調用搶購的接口
運作完成後,點選察看結果樹,可以發現 30 個虛拟使用者調用搶購接口的開始時間是一緻的
另外,在彙總報告和聚合報告中,可以展示平均響應時間、最大/小響應時間、異常比率、吞吐量等結果資料
4-2 生成測試報告
除了直接運作,也可以使用 Jmeter 指令在本地生成測試報告
其中
-n
以非 GUI 的形式運作
-t
指定 Jmeter 配置檔案
-l
指定生成日志檔案模闆
-e
測試結束後,生成測試報告
-o
測試報告生成目錄
打開測試報告,發現測試結果資料通過圖表的形式詳細地展示出來了
通過上面的步驟,完成了對接口的壓力測試,以此判斷接口的性能及穩定性!
實際項目中,由于單機的性能瓶頸,對于大量使用者的壓測,建議采用 分布式壓測 的方式來進行!