『動善時』JMeter基礎 — 16、JMeter配置元件【HTTP資訊頭管理器】
JMeter提供了豐富的配置元件,常用的包括參數化配置元件、HTTP請求默認值、HTTP資訊頭管理器、計數器等,這些配置元件用於設置默認值和變數,提供給後面的sampler(取樣器)使用。
提示:本文同時演示了,使用消息體數據選項頁,配置Post請求的參數。
1、用於演示的項目說明
我們使用JMeter發送Post請求,以學院管理系統項目為例。
介面文檔如下:
學院-新增
1) 請求方法:POST
2) 請求地址://127.0.0.1:8000/api/departments/
3) 請求JOSN報文:(需要Content-Type=application/json)
4) 調用傳入的json串如下(可新增多條,之間用,隔開):
{
"data": [
{
"dep_id":"T01",
"dep_name":"Test學院",
"master_name":"Test-Master",
"slogan":"Here is Slogan"
}
]
}
5) 新增成功返回報文:
{
"already_exist": {
"results": [],
"count": 0
},
"create_success": {
"results": [
{
"dep_id": "T02",
"dep_name": "Java學院",
"master_name": "Java-Master",
"slogan": "java"
}
],
"count": 1
}
}
6) 新增失敗id已存在-返回報文:
{
"already_exist": {
"results": [
{
"dep_id": "T01",
"dep_name": "Test學院",
"master_name": "Test-Master",
"slogan": "Here is Slogan"
}
],
"count": 1
},
"create_success": {
"results": [],
"count": 0
}
}
7) 新增失敗json格式錯誤:
{
"status_code": 400,
"detail": "請求體參數格式錯誤。"
}
2、測試計劃內包含的元件
添加元件操作步驟:
- 創建測試計劃。
- 創建執行緒組:
選中「測試計劃」右鍵 —> 添加 —> 執行緒(用戶) —> 執行緒組。 - 在執行緒組中添加配置元件"HTTP資訊頭管理器"組件:
選中「執行緒組」右鍵 —> 添加 —> 配置元件 —> HTTP資訊頭管理器。(稍後添加) - 在執行緒組裡面添加取樣器「HTTP請求」組件:
選中「執行緒組」右鍵 —> 添加 —> 取樣器 —> HTTP請求。 - 在執行緒組裡面添加監聽器「察看結果樹」組件:查看結果,
選中「執行緒組」右鍵 —> 添加 —> 監聽器 —> 察看結果樹。
最終測試計劃中的元件如下:

點擊運行按鈕,會提示你先保存該腳本,腳本保存完成後會直接自動運行該腳本。
3、HTTP請求介面內容
我們按照介面文檔中學院-新增介面的描述,編寫JMeter取樣器,如下圖所示:

4、查看腳本執行結果
學院-新增介面調用如下:

我們可以看到上圖中,顯示介面請求失敗,返回的結果說該介面不支援請求中媒體類型text/plain。
我們來查看請求頭中的資訊,如下:

發現請求頭中的Content-Type為text/plain。
因為我們之前說過,在JMeter 5.0以後的版本中發送POST請求時,將參數放在body data(消息體數據)中,且沒有設置Content-Type時,默認會將Content-Type的值設置為text/plain。
而介面文檔中學院-新增介面,明確寫出需要Content-Type的類型為application/json。
所以這時我們需要在請求頭資訊中,重新定義Content-Type屬性的值。
5、添加請求頭資訊(HTTP資訊頭管理器)
在JMeter中添加請求頭資訊和Postman是有區別的,需要在執行緒組中添加一個配置元件,名為HTTP資訊頭管理器(HTTP Header Manager)。也就是需要在HTTP資訊頭管理器組件中,為請求添加需要的請求頭資訊。
添加配置元件步驟:選中「執行緒組」右鍵 —> 添加 —> 配置元件 —> HTTP資訊頭管理器。
如下圖所示:

HTTP資訊頭管理器介面如下:

介面說明:
- 名稱:HTTP資訊頭管理器自定義名稱,見名知意最好。
- 注釋:即添加一些備註資訊,對該HTTP資訊頭管理器的簡短說明,以便後期回顧時查看。
- 請求頭中的資訊:可以幫助測試人員設定JMeter發送的HTTP請求中,請求頭所包含的資訊。HTTP資訊頭中包含有
User-Agent、Referer等屬性。儘可能放在執行緒組下,除非因為某些原因,測試人員希望不同的HTTP請求使用不同的HTTP資訊頭。
1)添加:可以添加一條請求頭配置資訊。
2)從剪貼板添加:添加來自於剪切板中的資訊;(使用key+製表符+value的形式,可以多行。)
3)刪除:選擇不需要的請求頭資訊,可以進行刪除;
4)載入:載入配置好的資訊頭文件。(我使用.txt文件,按上述格式配置,載入成功。工作中使用自己公司配置好的文件即可)
5)保存測試計劃:就是把該測試計劃保存。
如上圖,我們添加一條請求頭資訊:Content-Type=application/json。
此時測試計劃內包含的元件,如下圖所示:

再次發送請求,請求成功,如下圖:

我們再來看一下,該請求的請求頭資訊:

可以看到請求中的Content-Type屬性為application/json。
以上就是HTTP資訊頭管理器組件的使用方式,
6、優先順序說明
HTTP資訊頭管理器組件的優先順序:
- JMeter中支援添加多個HTTP資訊頭管理器組件,如果存在多個HTTP資訊頭管理器組件,其中的配置資訊會合併。
取樣器下HTTP資訊頭管理器組件的優先順序高於執行緒組下的HTTP資訊頭管理器組件。- 若有重名的資訊頭名稱,則優先
取樣器下的HTTP資訊頭管理器組件中的配置資訊。 - 同一作用域下,不論添加多少個HTTP資訊頭管理器組件,只會取第一個HTTP資訊頭管理器組件中的值,不合併。
提示:每個元件都有固定的圖標,我們多用就能區分出來。
7、補充:常見請求頭資訊
Accept:告訴伺服器,客戶機支援的數據類型。Accept-Encoding:告訴伺服器,客戶機支援的數據壓縮格式。Cache-Control:快取控制,伺服器通過控制瀏覽器要不要快取數據。Connection:處理完這次請求,是斷開連接還是保持連接。Cookie:客戶機通過這個可以向伺服器帶數據。Host:訪問的主機名。User-Agent:告訴伺服器,客戶機的軟體環境。Content-Type:用於指示資源的MIME類型。

