本文介紹了使用JMeter進行電商功能測試,包括登錄、加入購物車等操作的接口關聯和參數傳遞。重點講解了如何使用JMeter的JSON提取器、HTTP信息頭管理器等工具,以及處理token鑒權和JSON格式錯誤等常見問題。
聲明:本文所記錄的僅本次操作學習到的知識點,其中商城IP錯誤,請自行更改。
背景:電商的功能:登錄、加入購物車、提交訂單。問題:誰把什么商品加入了購物車?這時需要把上一個接口的響應數據(登錄成功后返回響應數據token值),作為下一個接口的請求數據(加入購物車時token值作為請求數據),這操作JMeter稱之為【接口關聯】。
思路:
1、登錄成功后,得到用戶標識--token值;
2、加入購物車--用token值來區分是誰操作;
3、運行后查看結果樹。
1.認識JMeter
(1)后置處理器【JSON提取器】
??JSON提取器是為了提取某個字段的值。這里是為了提取登錄成功后,響應數據返回的token值。
(2)配置元件【HTTP信息頭管理器】
??主要修改請求頭中content-type的類型,JMeter默認是表單類型。
2.【HTTP請求默認值】
??養成習慣,把多個接口訪問同一個服務器地址提取出來,設置http請求默認值。
![]()
3. HTTP請求【登錄】
(1)設置【HTTP請求】
![]()
(2)設置【JSON斷言】
![]()
4. 【JSON提取器】
??在【登錄】層級下添加【JSON提取器】。因為token具有時效性,每次登錄后token都不一樣,所以它并不是固定寫死的。這里通過【JSON提取器】獲取到token的值,傳參給下一個【加入購物車】接口。
(1)新建【JSON提取器】
【右擊】【添加】【后置處理器】【JSON提取器】
![]()
(2)設置【JSON提取器】
① Names of created variables:必傳,接收提取值的變量名,多個變量用;分隔。給個名“login_token”,后面【加入購物車】時傳參需要用到。
② JSON Path expression:必傳,用來提取某個值,多個表達式用;分隔。表達式:$.data.token或者$..token(這個比較靈活)。
③ Match No.(0 for Random):非必傳,取第幾個值,多個值用;分隔。0:隨機,默認;-1:所有;1:第一個值。這里可以為空或者填0。
![]()
補充:
![]()
5. HTTP請求【加入購物車】
(1)設置【HTTP請求】
① 名稱:加入購物車。
② 請求方法:選擇POST。
③ 路徑:?s=api/cart/save&application=app&application_client_type=weixin&token=${login_token}。這里先是參數s的值修改加入購物車的請求URL,其次再添加token的參數(接口文檔寫明了“token默認使用GET傳遞”),所以這里路徑需要添加參數token。前面【登錄】時已獲取到token的值,所以這里直接${login_token}引用獲取。
④ 參數:接口文檔中參數JSON形式,這里參數選擇【消息體數據】(加之參數太多,一個個添加太麻煩),數據如下:
{
"goods_id": "2",
"spec": [
{
"type": "套餐",
"value": "套餐二"
},
{
"type": "顏色",
"value": "銀色"
},
{
"type": "容量",
"value": "64G"
}
],
"stock": "5"
}
??注意:::“消息體數據”是JSON格式的,這里一定要注意格式沒有問題!?。?/span>
??如果是手動敲入的一般不會存在格式問題(數據少量時)。如果(數據較多)需要復制粘貼的一定要注意格式問題,最好是在文本編譯器里過一遍(例如記事本、notepad++等)。
??JMeter工具也有格式校驗功能,只是如果不熟悉的人很可能忽視。之前操作時有格式問題,JMeter工具在"goods_id":"2" 這一行的最前面顯示一塊紅色。只是第一次用工具不熟悉,不清楚紅色表示格式有誤,導致執行結果樹有報錯,一直找不到原因。后來又從頭到尾操作一遍,數據手動敲入的,執行結果就沒問題了。才知曉是格式問題導致執行失?。。?!自己找了將近3個小時的原因,才找到原因。
??補充知識:"goods_id":"2",商品id獲取的方式一:通過數據庫表【商品表】sxo_goods直接查看id字段值。方式二:通過登錄商城后點擊商品信息,進入商品信息頁面,url中最后的參數就是id.html。
![]()
![]()
(2)設置【JSON斷言】
![]()
6.【HTTP信息頭管理器】
??JMeter工具HTTP請求的請求頭Content-Type屬性的值默認是表單類型,而【加入購物車】接口的參數是【消息體數據】,是JSON格式,所以要在【注冊】層級下新增【HTTP信息頭管理器】。
(1)新建【HTTP消息頭管理器】
【右擊】【添加】【配置元件】【HTTP信息頭管理器】
![]()
(2)設置【HTTP消息頭管理器】
① 添加名稱:content-type,值:application/json
![]()
7.調試取樣器
![]()
8.查看結果樹
(1)【加入購物車】:失敗原因:token鑒權原因、參數JSON格式有誤。
(3)【調試取樣器】:排錯:排到參數的用戶名跟登錄商城的用戶名不一致。
![]()
![]()
![]()