『動善時』JMeter基礎 — 16、JMeter配置元件【HTTP資訊頭管理器】

繁華似錦Fighting發表於2021-05-22

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、測試計劃內包含的元件

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組中新增配置元件"HTTP資訊頭管理器"元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> HTTP資訊頭管理器。(稍後新增)
  4. 線上程組裡面新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  5. 線上程組裡面新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

最終測試計劃中的元件如下:

image

點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。

3、HTTP請求介面內容

我們按照介面文件中學院-新增介面的描述,編寫JMeter取樣器,如下圖所示:

image

4、檢視指令碼執行結果

學院-新增介面呼叫如下:

image

我們可以看到上圖中,顯示介面請求失敗,返回的結果說該介面不支援請求中媒體型別text/plain

我們來檢視請求頭中的資訊,如下:

image

發現請求頭中的Content-Typetext/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資訊頭管理器

如下圖所示:

image

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

image

介面說明

  • 名稱:HTTP資訊頭管理器自定義名稱,見名知意最好。
  • 註釋:即新增一些備註資訊,對該HTTP資訊頭管理器的簡短說明,以便後期回顧時檢視。
  • 請求頭中的資訊:可以幫助測試人員設定JMeter傳送的HTTP請求中,請求頭所包含的資訊。HTTP資訊頭中包含有User-AgentReferer等屬性。儘可能放線上程組下,除非因為某些原因,測試人員希望不同的HTTP請求使用不同的HTTP資訊頭。
    1)新增:可以新增一條請求頭配置資訊。
    2)從剪貼簿新增:新增來自於剪下板中的資訊;(使用key+製表符+value的形式,可以多行。)
    3)刪除:選擇不需要的請求頭資訊,可以進行刪除;
    4)載入:載入配置好的資訊標頭檔案。(我使用.txt檔案,按上述格式配置,載入成功。工作中使用自己公司配置好的檔案即可)
    5)儲存測試計劃:就是把該測試計劃儲存。

如上圖,我們新增一條請求頭資訊:Content-Type=application/json

此時測試計劃內包含的元件,如下圖所示:

image

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

image

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

image

可以看到請求中的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型別。

相關文章