天天看點

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

平常為了保證營運促銷、抽獎活動能正常運作,我們一般都需要使用 Jmeter、LoadRunner 對接口進行壓力測試

使用它可以模拟一定量的使用者同時去參與促銷抽獎活動,最後生成測試報告,以此判系統接口的穩定性

本篇文章以搶購商品為例,包含:登入、搶購 2 個接口;使用 Jmeter 模拟 20 個使用者同步完成搶購操作

2-1  Mock 接口

為了友善文章講解,這裡使用 VirAPI Mock 了兩個接口:登入、搶購

https://virapi.com/

其中,

登入接口如下:

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

搶購接口如下:

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

2-2  準備使用者資料

我們使用 Jmeter 中的 CSV 資料檔案設定為例,在本地建立文本檔案,儲存 30 個使用者資料

每一條使用者資料包含:使用者手機号碼、密碼、使用者 ID

打開 Jmeter 軟體,我們完成下列操作

3-1  建立線程組,配置 CSV 資料檔案

首先,選中測試計劃,右鍵 - 添加 - 線程(使用者),并對線程組重新進行命名

線程數為:模拟 30 個使用者

啟動時長:5 秒鐘建立 30 個線程

循環次數:1 次

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

接着,在目前線程組下建立一個 CSV 資料檔案設定,用它導入本地使用者資料

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

在 CSV 檔案配置設定中,關聯本地準備好的使用者資料,并定義關聯變量名,其他保持預設即可

需要指出的是,這裡指定了 3 個變量,分别是:user、pwd、id,和資料檔案中的資料關聯上

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

3-2  HTTP 請求預設值和 HTTP 資訊頭管理器

線上程組下,添加 HTTP 請求預設值,設定公共的伺服器位址

步驟:線程組 - 右鍵 - 添加 - 配置元件 - HTTP 請求預設值 

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

接着,添加 HTTP 資訊頭管理器,用于設定公共的請求頭

步驟:線程組 - 右鍵 - 添加 - 配置元件 - HTTP 資訊頭管理器

比如,這裡可以添加 VirAPI 應用的 app-token 及 content-type

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

3-3  登入請求

線上程組下,添加一個 HTTP 請求:登入

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

然後根據 Mock 接口 - 登入,設定請求的方式、路徑及請求體資料

PS:這裡直接将第一步關聯的變量設定進去即可

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

3-4  同步定時器

為了真實地模拟并發去調用搶購接口,在搶購接口之前需要一個同步定時器

同步定時器,可以保證所有虛拟使用者互相等待,直到所有使用者集合之後,才開始後續的接口調用

步驟:線程組 - 右鍵 - 添加 - 定時器 - 固定定時器

這裡,設定模拟使用者組的數目和線程數保持一緻,這樣,如果虛拟使用者數達不到指定數目,則不會執行後面的操作

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

3-5  搶購請求

線上程組下,繼續添加一個搶購的 HTTP 請求

同樣根據接口 API,編輯 HTTP 請求的方式、路徑、請求體

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

3-6  添加請求結果樹、彙總報告、聚合報告

選中線程組,添加請求的結果樹、彙總報告、聚合報告

步驟:線程組 - 右鍵 - 添加 - 監聽器 - 察看結果樹/彙總報告/聚合報告

如此,Jmeter 的配置已完成!

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

4-1  直接運作

選中線程組,點選菜單欄的啟動按鈕,即可以模拟并發調用搶購的接口

運作完成後,點選察看結果樹,可以發現 30 個虛拟使用者調用搶購接口的開始時間是一緻的

另外,在彙總報告和聚合報告中,可以展示平均響應時間、最大/小響應時間、異常比率、吞吐量等結果資料

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

4-2  生成測試報告

除了直接運作,也可以使用 Jmeter 指令在本地生成測試報告

其中

-n

以非 GUI 的形式運作

-t

指定 Jmeter 配置檔案

-l

指定生成日志檔案模闆

-e

測試結束後,生成測試報告

-o

測試報告生成目錄

打開測試報告,發現測試結果資料通過圖表的形式詳細地展示出來了

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?

通過上面的步驟,完成了對接口的壓力測試,以此判斷接口的性能及穩定性!

實際項目中,由于單機的性能瓶頸,對于大量使用者的壓測,建議采用 分布式壓測 的方式來進行!

幹貨 | Jmeter 如何保證搶購、秒殺活動正常運作?