乾貨 | Jmeter 如何保證搶購、秒殺活動正常運行? - 知乎

公衆號:AirPythonapi

來源:星安果服務器

1. 前言

日常爲了保證運營促銷、抽獎活動能正常運行,咱們通常都須要使用 Jmeter、LoadRunner 對接口進行壓力測試併發

使用它能夠模擬必定量的用戶同時去參與促銷抽獎活動,最後生成測試報告,以此判系統接口的穩定性app

本篇文章以搶購商品爲例,包含:登陸、搶購 2 個接口;使用 Jmeter 模擬 20 個用戶同步完成搶購操做分佈式

2. 準備

2-1 Mock 接口性能

爲了方便文章講解,這裏使用 VirAPI Mock 了兩個接口:登陸、搶購測試

https://virapi.com/spa

其中,線程

登陸接口以下:3d

搶購接口以下:

2-2 準備用戶數據

咱們使用 Jmeter 中的 CSV 數據文件設置爲例,在本地建立文本文件,保存 30 個用戶數據

每一條用戶數據包含:用戶手機號碼、密碼、用戶 ID

3. 操做步驟

打開 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. 運行

4-1 直接運行

選中線程組,點擊菜單欄的啓動按鈕,便可以模擬併發調用搶購的接口

運行完成後,點擊察看結果樹,能夠發現 30 個虛擬用戶調用搶購接口的開始時間是一致的

另外,在彙總報告和聚合報告中,能夠展現平均響應時間、最大/小響應時間、異常比率、吞吐量等結果數據

4-2 生成測試報告

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

# -o jmeter_report/ 測試報告生成目錄
jmeter -n -t 搶購-併發測試.jmx -l test.jt1 -e -o jmeter_report/

其中

  • -n以非 GUI 的形式運行
  • -t指定 Jmeter 配置文件
  • -l指定生成日誌文件模板
  • -e測試結束後,生成測試報告
  • -o測試報告生成目錄

打開測試報告,發現測試結果數據經過圖表的形式詳細地展現出來了

5. 最後

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

實際項目中,因爲單機的性能瓶頸,對於大量用戶的壓測,建議採用 分佈式壓測 的方式來進行!

若是你以爲文章還不錯,請你們 點贊、分享、留言 下,由於這將是我持續輸出更多優質文章的最強動力!

相關文章
相關標籤/搜索