JMeter是Apache出的一款用JAVA開發的性能測試工具,可以友善的對各種接口進行測試。下面就來看一下,使用JMeter對HTTP接口進行測試的方法。
1、添加線程組,用來控制執行過程。右鍵“測試計劃”→“添加”→“Threads(Users)”→“線程組”。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1EzMygTM5IjNtYTO1kzM2MjNxYDM2ADMyAjMtMjMyETM38CX2ADMyAjMvw1MyITMxczLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
線程組有三個屬性:
線程數:啟動的線程數量。
Ramp-Up Period:指定時間啟動所有線程。會用相等間隔啟動所有線程。
循環次數:線程循環執行的次數。
舉個栗子:設定線程數=2、Ramp-Up Reriod=10、循環次數=3,那麼流程就是,啟動1個線程,隔5秒再啟動第2個線程,每個線程啟動後執行3次。
2、添加HTTP請求,用來設定具體HTTP請求的内容。右鍵“線程組”→“添加”→“Sampler”→“HTTP請求”。
以這個請求位址為例:http://127.0.0.1:18080/getUserInfo
最簡單的參數設定方法,是直接将請求位址填在路徑裡,如下:
3、添加檢視結果頁面,用來檢視HTTP請求的結果。右鍵“線程組”→“添加”→“監聽器”→“察看結果樹”。
請求過後,可以在取樣器結果、請求、響應資料三個頁面中看到請求的所有資訊,包括請求位址、參數、傳回值、耗時等等。如下:
4、請求參數的設定。
剛的HTTP請求,并沒有傳參,但通常的接口請求都會帶有參數,那麼在哪裡添加呢?就是在第2步的HTTP請求頁面中的Parameters、BodyData。
接口參數接收方式通常有2種,對應傳參方式如下:
(1)鍵值對的方式。
1 public Map<String, Object> getUserInfo(@RequestParam String userId) {
2 return getUserInfo(userId);
3 }
對應JMeter的傳參方式Parameters。如下:
(2)Json的方式。
1 public Map<String, Object> getUserInfo(@RequestBody UserInfo userInfo) {
2 return getUserInfo(userId);
3 }
4
5 @Data
6 public class UserInfo {
7 private String userId;
8 }
對應JMeter傳參方式Body Data。如下:
傳參時,還需要指定傳參格式,即請求頭中的參數Content-Type。
(1)使用Parameters時,Content-Type傳:application/x-www-from-urlencoded。
(2)使用Body Data時,Content-Type傳:application/json。
Content-Type的預設值為application/x-www-from-urlencoded,是以當使用Parameters時可以不傳。
設定Content-Type的方法。右鍵“HTTP請求”→“添加”→“配置元件”→“HTTP資訊頭管理”。添加一對健值。如下圖:
這樣設定的參數值固定的,有時候我們可能希望參數是動态的,可以通過下面這種方式。
5、動态請求參數的設定。
(1)動态參數使用到Bean Shell PreProcessor。右鍵“HTTP請求”→“添加”→“前置處理”→“Bean Shell PreProcessor”。
在Script裡,根據你需要的規則生成參數的值,并使用vars.put(String key,String value)把資料存到JMeter變量中。如上圖。
(2)然後在HTTP請求頁中以 ${key} 的格式,引用對應的變量。如下圖:
以上就是JMeter調用接口的方法,是不是很簡單,很友善。當然還有很多進階的用法,有興趣,可以慢慢探索。
本文來自部落格園,作者:PC君,轉載請注明原文連結:https://www.cnblogs.com/pcheng/p/13055234.html