『動善時』JMeter基礎 — 29、JMeter響應斷言詳解

繁華似錦Fighting發表於2021-06-01

1、JMeter斷言介紹

JMeter中有個元件叫做斷言(Assertion),它的作用和LoadRunner中的檢查點類似。用於檢查測試中得到的響應資料是否符合預期,用以保證效能測試過程中的資料互動與預期一致。

使用斷言的原理:在Request請求的返回層面增加一層判斷機制。因為Request請求成功了,並不代表結果一定正確。所以通過斷言,我們不再會被200狀態碼所迷惑,而是可以通過斷言,看到我們請求是否真正的成功!

解釋:狀態碼200僅表示,請求成功傳送,伺服器成功接收和處理,並返回處理後的結果的狀態。並不能確定返回給客戶端資料,是我們需要的資料。

2、響應斷言元件介面詳解

新增響應斷言元件操作:選中“取樣器”右鍵 —> 新增 —> 斷言 —> 響應斷言

介面如下圖所示:

image

響應斷言元件的詳細說明:

  • 名稱響應斷言元件的自定義名稱,見名知意最好。
  • 註釋:即新增一些備註資訊,對該響應斷言元件的簡短說明,以便後期回顧時檢視。

(1)Apply to:響應斷言的應用範圍

  • Main sample and sub-samples:作用於父節點的取樣器及對應子節點的取樣器。
  • Main sample only:僅作用於父節點的取樣器。(選預設的 main sample only 就行了)
  • Sub-samples only:僅作用於子節點的取樣器。
  • JMeter Variable Name to use:作用於JMeter變數(輸入框內可寫入正則提取的響應值),從指定變數中提取需要的值。

(2)測試欄位

  • 響應文字:請求的響應文字資訊,不包含響應頭資訊,最常用的斷言欄位。
  • 響應程式碼:HTTP請求返回的響應碼。
  • 響應資訊:響應資訊中匹配資料(Response message)。
  • Response Headers:從響應頭資訊中提取資料。
  • Request Headers:從請求頭資訊中提取資料。
  • URL樣本:從請求URL中提取資料,如果有重定向包含重定向URL。
  • Document (text):文件(文字),通過Apache Tika從各種型別的文件中,提取文字進行驗證,包括響應文字,pdf、word等等各種格式文字。
  • 忽略狀態(Ignore Status): 一個請求進行多項響應斷言時,忽略某一項斷言的響應結果,而繼續下一項斷言。
  • Request Data:從請求體包含的資訊中提取資料。

(3)模式匹配規則

  • 包括:響應的結果中,包含指定的文字或者欄位值,則為True,支援正規表示式。
  • 匹配:完全匹配,期望值與實際結果必須完全一致,則為True,一般結合正規表示式使用。
  • 相等(Equals):響應結果與指定的內容完全一致,則為True,不支援正規表示式。
  • 子字串(Substring):返回結果包含指定的字串,不需完全匹配,但大小寫敏感,則為True,不支援正規表示式。
  • 否:不包含或匹配給定文字,則為True。

(4)測試模式

  • 在測試模式輸入框中,輸入我們給定的匹配內容,之後響應斷言元件會獲取請求中響應的資料與之匹配。
    1)點選新增按鈕進行編輯資料。
    2)從剪貼簿新增,就是貼上已複製的內容到輸入框中。
    3)刪除按鈕,刪除輸入框中的全部內容。
  • Custom failure message:在輸入框中,可以自定義斷言失敗所顯示的訊息內容。

提示:響應斷言可新增多個,但是多個斷言之間是與的關係,不能滿足或的需求。

3、響應斷言元件的使用

我們以一個登陸介面,來演示響應斷言元件的應用。

(1)測試計劃內包含的元件

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組裡面,新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  4. 在取樣器下,新增斷言“響應斷言”元件:選中“取樣器”右鍵 —> 新增 —> 斷言 —> 響應斷言
  5. 在取樣器下,新增監聽器“斷言結果”元件:選中“取樣器”右鍵 —> 新增 —> 監聽器 —> 斷言結果
  6. 線上程組裡面,新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

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

image

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

(2)登陸介面請求介面內容

標準的Post請求,填寫請求的基本資訊和引數即可。

編寫內容如下:

image

(3)響應斷言介面內容

可根據要測試響應欄位,和模式匹配規則來設定斷言。

比如下方截圖是匹配,返回結果中的狀態碼是否是200,如果是則表示斷言成功,否則失敗。

image

(4)檢視執行結果

我們在察看結果樹元件中,觀察指令碼執行之後的結果。

如果斷言正確,和正常傳送請求一樣,如下圖:

image

如果斷言失敗,則會出現斷言失敗的提示,如下圖所示:

image

(5)斷言結果元件說明

也新增斷言結果監聽器,通過斷言結果元件來判斷斷言是否通過。

如下圖所示:

image

說明:

  • 已通過的斷言僅顯示取樣器名稱。
  • 未通過的,除了顯示取樣器的名稱,還顯示錯誤原因。

4、總結

響應斷言元件常用於斷言三個方面:

  1. 斷言HTTP請求的響應狀態碼。如上面的練習。
  2. 斷言響應資訊中的業務狀態碼。如下示例:
    響應結果:{"status":1,"code":"10001","data":null,"msg":"登入成功"}
    匹配業務狀態碼介面:
    image
  3. 斷言介面請求後服務端響應的資料。(和上面基本一樣)

5、補充兩個類似的斷言元件

(1)大小斷言元件

根據返回內容的大小(資料多少)進行斷言,作用於返回的響應報文。

新增大小斷言Size Assertion)元件操作:選中“取樣器”右鍵 —> 新增 —> 斷言 —> 大小斷言

介面如下圖所示:

image

說明:

1)Apply to:響應斷言的應用範圍

響應斷言元件。

2)Response Size Field to Test:要斷言哪部分內容的位元組大小。

  1. Full response:響應全部內容的位元組大小。
  2. Response Headers:響應頭內容的位元組大小。
  3. Response Body:響應體內容的位元組大小。
  4. 響應程式碼:響應碼位元組大小。
  5. 響應資訊:Response message部分資訊位元組大小。

3)Size to Assert:設定斷言位元組大小的範圍

自己輸入位元組數,然後選擇範圍:=、!=、>、<、>=、<=

(2)持續時間斷言元件

用於判斷伺服器的響應時間是否符合要求。

該斷言計算的時間為,從傳送請求到收到響應的這段時間,是否在我們設定的時間之內。

如果該時間小於設定時間,則成功;如果大於設定時間,則失敗。

新增持續時間斷言元件操作:選中“取樣器”右鍵 —> 新增 —> 斷言 —> 持續時間斷言

介面如下圖所示:

image

說明:

1)Apply to:響應斷言的應用範圍

響應斷言元件。

2)斷言持續時間:設定請求返回響應的最長時間,單位毫秒。

說明:這兩個斷言的用法和響應斷言的用法一樣,這裡就不做演示了。

相關文章