Jemeter–獨立不變參接口壓測
Jemeter–獨立變參接口壓測
Jemeter–關聯接口壓測
案例分析
比如:有個波次復核接口很慢,優化后需要壓測。但是波次復核接口數據是由另外兩個接口(配單詳情、內盒信息)的數據組合而來,而內盒信息又依賴于配單中返回的數據cardCode來查詢。那應該如何壓測呢?
接口關系:
波次復核接口數據 依賴 配單詳情數據 +內盒信息數據 組合
內盒信息數據 依賴 配單詳情數據
兩種方法
1、如果數據庫有足夠數據,將關聯符合的訂單的配單的id查詢出來,導出csv,先執行配單詳情接口查詢并把返回的數據作為變量,再根據變量數據執行內盒信息接口并把返回需要用到的數據作為變量。
最后從變量信息中組合數據調用波次復核接口。
2、如果數據庫沒有什么數據,就需要再添加前置生成數據的接口,比如生成訂單接口、組波接口、生成配單接口,然后把配單id保存為變量,再執行配單詳情接口查詢并把返回的數據作為變量,再根據變量數據執行內盒信息接口并把返回需要用到的數據作為變量。最后從變量信息中組合數據調用波次復核接口。
(PS: 如果要保持測試庫數據干凈,可以把生成訂單接口、組波接口、生成配單接口放到setUp線程組,然后把配單id保存為全局變量。然后在業務線程組執行配單詳情接口、內盒信息接口、波次復核接口等業務接口,最后在TearDown線程組里執行刪除生成的業務的所有數據邏輯,嗯,有點自動化測試的味道)
注意因為有依賴關系注意接口運行的順序性,保證先執行的接口在前面。
下面選擇第一種方案,第二種對業務來說多了很多接口過于麻煩了
CSV方案實現
1、創建公共組件
線程組、頭部管理器、數據庫篩選過的csv數據文件、結果樹等監聽器
2、創建http1配單詳情接口
配置csv文件中的 bill_code 變量去查詢配單詳情,可以加個http1標志,方便知道這個接口是第一個需要執行的
3、提取配單詳情返回Json數據變量
右擊http1添加json提取器(接口交互是json的方式)
配置需要提取的變量
- 有多少個變量,這四行的數量是一樣的
- $.是根據你接口的返回json層級來的
我的接口返回是直接{}里面就是數據,所以直接 $.字段
如果返回的形式這樣
對應的配置
4、添加調試取樣器
右擊線程組,添加Debug Sampler 取樣器,用來檢測、獲取變量的屬性值
可以先執行這個接口,察看結果樹,可以看到自定義的變量值都可以獲取到了(可以沒有獲取到證明接口中哪里設置的有問題)
5、創建http2內盒信息接口
使用接口http1中的變量${cardCode} 獲取內盒信息接口
6、提取內盒信息接口Json數據變量
添加http2的json提取器,內盒變量設置
注意: 返回數據套了兩層[{}]括號,對應變量 $. . 兩個點 屬性值
7、創建http3復核接口
在body體中,使$引用對應的變量充當參數
8、調整整體接口、組件如下順序
9、執行壓測
察看結果樹
匯總報告
聚合報告
TPS
10、總結
可以發現,接口http1、http2、http3是并發依次調用的,即在不同線程里是依次調用的,而且csv數據由線程共享的,不同線程不會取同一行的數據。