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

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


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

1.4 POST/order/generateConfirmOrder


GET /cart/list


1.4.1 接口分析
實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(二)

上述是一個確認訂單的post請求接口,但是從接口文檔中看到的是沒有需要傳入的請求參數,具體原因可以來看一下源碼:

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

找到對應的方法實現:

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

通過源碼可以看到,程序會去回去當前用戶的購物車信息、地址信息、優惠券信息等來計算生成訂單;這也就是為什麼購物車相關接口要放在整個鏈路靠前執行(本例中目前只涉及購物車,未涉及優惠券積分等信息)。

1.4.2 Jmeter腳本編寫
實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(二)

1.5 POST/order/generateOrder

1.5.1 接口分析
實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(二)

有接口文檔可以看到這是一個傳入購物車信息然後生成訂單的接口,這裡傳入的有優惠券id,收貨地址,付款類型和積分信息,查看部分源碼如下:

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

從源碼中可以看到會先對優惠券和積分的null值進行判斷,而在剛才介紹過當前的場景中不涉及優惠券和積分,因此在接口傳參時我們就不傳入couponId和useIntegration了。

1.5.2 Jmeter 腳本編寫
實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(二)

運行調試腳本,我們發現瞭如下失敗:

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

我們查看日誌,發現在OmsPortalOrderServiceImpl.generateOrder方法的第189行報了空指針異常的錯誤:

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

以此我們找到源碼的位置處,發現原來是缺少收貨地址信息:


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

因此到這裡我們需要添加收貨地址信息,那就利用相關接口,通過Jmeter去構建我們需要的數據。


1.6 POST/member/address/add


1.6.1 接口分析
實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(二)

按照請求參數填入請求信息即可。

1.6.2 Jmeter腳本編寫


因為只是為了構造數據,所以我們單獨在線程組下面創建一個線程,其餘的都暫時Disable:


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


另外,id和MemberId也同樣是通過鑑權信息獲取到,不需要傳入:


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


一個用戶生成一個地址信息即可,所以在鑑權的CSV Data中將循環設為false


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


調試驗證腳本通過,創造線程構造數據即可:


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

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


1.7 獲取 memberReceiveAddressID

在確認訂單的接口返回值中,我們可以看到 memberReceiveAddressId

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

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

這樣的話直接通過JSON Extractor獲取即可:

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

下單成功:

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

1.8 POST/order /paySuccess

訂單總算是完成了,到了最後一步支付了。

1.8.1 接口分析


從接口文檔中可以看到支付接口需要傳入訂單的orderId,這裡有個坑要注意的是它的參數傳遞是類似get請求形式的在URL後面接參數:

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

orderId自然是要從確認的訂單返回值中,因此還是老方法,JSON Extractor獲取即可:

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

1.8.2 Jmeter 腳本編寫
實戰 | JMeter 典型電商場景(下單/支付)的性能壓測(二)

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

調試驗證:

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


2. 階段總結

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

到這裡,整個電商模式的典型購物下單場景腳本已經幾乎完成,整體概覽如下:

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

上面說幾乎完成,也就是還差一點,我們還需要對實際的發壓場景做最後的調整,因為目前的線程數是一次性發起的,沒有一個梯度的概念,而實際的場景中是呈現一種遞增的形式。

所以為了測試的更真實性,我們要藉助插件來完成需求,具體在下篇文章談 Ultimate Thread Group 插件的應用。


分享到:


相關文章: