天天看點

Jmeter 壓測 http(s)

  上一篇文章 關于Jmeter 介紹了Jmeter入門相關的知識。本文是實戰篇,講講如何使用Jmeter對Http(s)進行壓力測試。

Http測試

測試一

  首先,添加 “線程組”,選擇 “添加” -> "Sampler" -> "HTTP請求"。其次,分别添加 “檢視結果樹”,“聚合報告”,“圖形結果”等,用于檢視測試結果。

Jmeter 壓測 http(s)

Jmeter測試1

  配置 "HTTP請求",對應上圖中的 “jmeter測試1”。這裡配置

Get

請求,測試本地

8080

端口下的

jmeter/test1

接口位址,具體的Http配置及測試代碼請參考如下。

Jmeter 壓測 http(s)

Http配置1

@RequestMapping("jmeter")
@RestController
public class HttpController {

    private AtomicInteger atomicInteger = new AtomicInteger(0);

    @GetMapping("test1")
    public Map<String, Object> test1() {
        Map<String, Object> map = new HashMap<>(1);
        int decrementAndGet = atomicInteger.incrementAndGet();
        System.out.println("decrementAndGet = " + decrementAndGet);
        map.put("atomicInteger", decrementAndGet);
        return map;
    }
    
}
           

  配置好後,點選綠色三角圖示即可啟動線程組,線程組的配置如下。

Jmeter 壓測 http(s)

線程組配置

  啟動測試請求後,響應結果如下,這是模拟1s内發起200次的請求。

Jmeter 壓測 http(s)

察看結果樹響應

Jmeter 壓測 http(s)

聚合報告響應

Jmeter 壓測 http(s)

圖形結果響應

測試二

  一般而言,測試都需要盡可能的模拟真實使用者。是以,通過傳遞不同的請求參數,來模拟不同的使用者進行請求是必不可少的。接下來使用 “函數助手的” 方式,告訴大家如何模拟不同的使用者進行壓力測試。

  案例場景:模拟10個使用者發起

POST

請求,請求位址

jmeter/test2

,要求在Http請求頭中自定義請求頭

Authorization

,不同使用者對應的自定義請求頭參數值不同。

1. 使用函數助手添加請求頭參數
CSV,即Comma Separate Values,這種檔案格式經常用來作為不同程式之間的資料互動格式。具體檔案格式:每條記錄占一行,以逗号為分隔符,逗号前後的空格會被忽略。字段中包含有逗号,該字段必須用雙引号括起來;字段中包含有換行符,該字段必須用雙引号括起來;字段前後包含有空格,該字段必須用雙引号括起來;字段中的雙引号用兩個雙引号表示;字段中如果有雙引号,該字段必須用雙引号括起來。

  在本地建立test2.cvs(如:G:\TEST\test2.cvs),添加10個使用者對應的Authorization值(假設是:1 ~ 10),使用函數助手進行添加。

Jmeter 壓測 http(s)

函數助手配置

2. 配置 “HTTP資訊頭管理器”
Jmeter 壓測 http(s)

配置HTTP資訊頭管理器

  如上圖所示,分别設定

Content-Type:application/json

Authorization:${__CSVRead(G:\TEST\test2.cvs,0)}

3. 模拟使用者請求進行測試
@RequestMapping("jmeter")
@RestController
public class HttpController {

    @PostMapping("test2")
    public Map<String, Object> test2(HttpServletRequest request) {
        Map<String, Object> map = new HashMap<>(1);
        String authorization = request.getHeader("Authorization");
        map.put("authorization", authorization);
        return map;
    }

}
           

  啟動測試後,響應結果如下。

Jmeter 壓測 http(s)
Jmeter 壓測 http(s)

測試三

  案例場景:使用配置元件 “CSV資料檔案” 的方式,模拟10個使用者發起

PUT

jmeter/test3

,要求不同使用者對應請求參數

reqId

的值不同。

1. 使用“CSV資料檔案”添加請求參數

  在本地建立test2.cvs(如:G:\TEST\test2.cvs),添加10個使用者對應的reqId值(假設是:1 ~ 10)。

Jmeter 壓測 http(s)

CSV資料檔案配置

Jmeter 壓測 http(s)

  如上圖所示,通過在請求路徑使用占位符

${}

來讀取“CSV資料檔案”中對應的配置參數和值。注意,占位符内的參數名稱要保持與配置一緻。

@RequestMapping("jmeter")
@RestController
public class HttpController {

    @PutMapping("test3")
    public Map<String, Object> test3(@RequestParam int reqId) {
        Map<String, Object> map = new HashMap<>(1);
        System.out.println("id = [" + reqId + "]");
        map.put("id", reqId);
        return map;
    }

}
           
Jmeter 壓測 http(s)

Https測試

  為了友善,關于https的測試将選取網上站點進行,如

我的簡書首頁

,參考如下。

Jmeter 壓測 http(s)

Https測試配置

寫在最後

  關于http(s)這塊的測試到這就介紹完了,本文重點部分就是學習兩種實作參數化的方式。JMeter作為一款壓測工具,我們隻需要熟悉之後再多加練習,便可以基本掌握。下來我将繼續梳理如何使用JMeter進行ws(s)測試,歡迎關注。

Jmeter系列

Jmeter 壓測 http(s) Jmeter壓測 ws(s)