JMeter提供了豐富的配置元件,常用的包括引數化配置元件、HTTP請求預設值、HTTP資訊頭管理器、計數器等,這些配置元件用於設定預設值和變數,提供給後面的sampler
(取樣器)使用。
提示:本文同時演示了,使用訊息體資料選項頁,配置Post請求的引數。
1、用於演示的專案說明
我們使用JMeter傳送Post請求,以學院管理系統專案為例。
介面文件如下:
學院-新增
1) 請求方法:POST
2) 請求地址:http://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型別。