JMeter 典型電商場景(下單/支付)的性能壓測(一)


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)

本文為霍格沃茲測試學院優秀學員課程學習系列筆記,希望大家可以從中學到想了解的知識。

在上一篇文章完成首頁瀏覽壓測任務後,我們開始下單-支付場景的壓測實踐。

1. 分步拆解

實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)

1.1 POST /cart/add

1.1.1 接口分析

在電商購物場景中,最為常見和典型的就是添加購物車了,按照之前選定的接口,來看看添加購物車接口

POST /cart/add

的情況。


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


從接口文檔中我們可以知道添加購物車需要例如價格、品牌、分類id、商品id、商品sku等信息,相對還是比較多的,這個時候再到源碼中分析查看一下:

找到添加購物車的實現方法:可以看到首先需要獲取到當前的 Member,再通過 UmsMember 對象來獲取對應的Member 信息,其中

CurrentMember

中就包含了

id

nickName

deleteStatus

信息,可以依此自動獲取到,其實是無需我們填寫的參數。

實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


那我們需要填寫的參數是什麼,可以得到這個

CurrentMember

信息呢?


再找到

getCurrentMember()

的實現方法:

實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


從這裡就可以看到它需要獲取一個鑑權信息去解密,然後獲取當前的Member信息,也就是我們最開始需要在請求

Header

中帶入的

Authorization:${token}

:

實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


最終如果購物車不存在就新增一個購物車,如果購物車已經存在就更新購物車信息;


1.1.2 接口數據構造

購物車數據構造注意事項:到這裡,我們看似已經知道了購物車如何添加,調用接口傳參隨意插入數據即可,但是要注意的是:

如果我們隨意的插入數據,可能接口會通過,數據也能插入成功,但是很可能會影響其他相關一系列業務的接口;例如我們可能插入了某個sku的商品,而這個商品已經庫存不足了,那麼接下來下單的業務就必然會失敗。因此我們需要添加符合真實邏輯的購物車數據。

通過梳理傳參可以知道了購物車的數據來源於兩張表

pms_sku_stock

pms_sku_stock


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


pms_sku_stock

表中構建

sku

數據時,需要注意的是

stock

數,下單一定要有庫存的概念,

Real_stock真實庫存

+

lock_stock鎖定庫存

一定不能大於固定的總庫存值,否則就會下單失敗,這是構造數據的限制。從源碼中也可以看到

realStock

=

stock

-

lockStock


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


購物車數據構造:現在我們開始構造數據,通過MySQL的join多表查詢,將

pms_sku_stock

pms_sku_stock

表中涉及到的請求字段且庫存數大於50的商品都查找出來:


<code>select p1.id, p1.product_category_id, p1.product_sn, p1.brand_name, p1.price, p1.name, p1.pic, p1.sub_title, p2.sku_code, p2.id/<code><code>as product_sku_id, p2.sp1, p2.sp2 from mall.pms_product as p1 join mall.pms_sku_stock as p2 on p1.id = p2.product_id/<code><code>where p1.stock gt=50 and p2.stock gt 50;/<code>


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)

將數據保存:

實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


1.1.3 Jmeter 腳本編寫


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


1.1.4 Jmeter 腳本調試

經過上面一通分析與操作,還要考實踐來驗證腳本的正確性:


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)

OK,順利通過了!(其實沒有那麼順利,只是我踩過坑了,在嘗試了各種失敗後將成功的一次展現到了這裡而已~)

在去數據庫中看一下,沒問題,成功插入:


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


補充說明:調試過程中出了可以看Jmeter的結果樹中的數據,還可以查看對應容器的spring.log,進入容器,在目錄/var/logs/下:

實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


1.2 GET /cart/list

GET /cart/list


1.2.1 接口分析


由於日常我們添加完購物車的時候都會去刷新一下購物車信息,並且通過cart/list也可以驗證購物車是否添加成功,所以對於

/cart/list

接口的測試是很有意義的

此接口比較簡單,只是一個get請求來獲取當前用戶的購物車信息:

實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


1.2.2 Jmeter腳本編寫


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


1.3 GET/cart/list/promotion

GET /cart/list/promotion


1.3.1 接口分析


訂單信息是通過購物車去生成,在生成訂單的同時可能還會涉及到優惠券,積分等信息,因此在生成訂單的時候需要check一下會員的各種優惠促銷信息。

此接口也是個比較簡單的get接口:


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


1.3.2 Jmeter腳本編寫


實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(一)


分享到:


相關文章: