『動善時』JMeter基礎 — 29、JMeter響應斷言詳解
1、JMeter斷言介紹
JMeter中有個元件叫做斷言(Assertion),它的作用和LoadRunner中的檢查點類似。用於檢查測試中得到的響應數據是否符合預期,用以保證性能測試過程中的數據交互與預期一致。
使用斷言的原理:在Request請求的返回層面增加一層判斷機制。因為Request請求成功了,並不代表結果一定正確。所以通過斷言,我們不再會被200狀態碼所迷惑,而是可以通過斷言,看到我們請求是否真正的成功!
解釋:狀態碼200僅表示,請求成功發送,服務器成功接收和處理,並返回處理後的結果的狀態。並不能確定返回給客戶端數據,是我們需要的數據。
2、響應斷言組件界面詳解
添加響應斷言組件操作:選中「取樣器」右鍵 —> 添加 —> 斷言 —> 響應斷言
。
界面如下圖所示:
響應斷言組件的詳細說明:
- 名稱:響應斷言組件的自定義名稱,見名知意最好。
- 注釋:即添加一些備註信息,對該響應斷言組件的簡短說明,以便後期回顧時查看。
(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)測試計劃內包含的元件
添加元件操作步驟:
- 創建測試計劃。
- 創建線程組:
選中「測試計劃」右鍵 —> 添加 —> 線程(用戶) —> 線程組
。 - 在線程組裏面,添加取樣器「HTTP請求」組件:
選中「線程組」右鍵 —> 添加 —> 取樣器 —> HTTP請求
。 - 在取樣器下,添加斷言「響應斷言」組件:
選中「取樣器」右鍵 —> 添加 —> 斷言 —> 響應斷言
。 - 在取樣器下,添加監聽器「斷言結果」組件:
選中「取樣器」右鍵 —> 添加 —> 監聽器 —> 斷言結果
。 - 在線程組裏面,添加監聽器「察看結果樹」組件:查看結果,
選中「線程組」右鍵 —> 添加 —> 監聽器 —> 察看結果樹
。
最終測試計劃中的元件如下:
點擊運行按鈕,會提示你先保存該腳本,腳本保存完成後會直接自動運行該腳本。
(2)登陸接口請求界面內容
標準的Post請求,填寫請求的基本信息和參數即可。
編寫內容如下:
(3)響應斷言界面內容
可根據要測試響應字段,和模式匹配規則來設置斷言。
比如下方截圖是匹配,返回結果中的狀態碼是否是200,如果是則表示斷言成功,否則失敗。
(4)查看運行結果
我們在察看結果樹組件中,觀察腳本運行之後的結果。
如果斷言正確,和正常發送請求一樣,如下圖:
如果斷言失敗,則會出現斷言失敗的提示,如下圖所示:
(5)斷言結果組件說明
也添加斷言結果監聽器,通過斷言結果組件來判斷斷言是否通過。
如下圖所示:
說明:
- 已通過的斷言僅顯示取樣器名稱。
- 未通過的,除了顯示取樣器的名稱,還顯示錯誤原因。
4、總結
響應斷言組件常用於斷言三個方面:
- 斷言HTTP請求的響應狀態碼。如上面的練習。
- 斷言響應信息中的業務狀態碼。如下示例:
響應結果:{"status":1,"code":"10001","data":null,"msg":"登錄成功"}
匹配業務狀態碼界面:
- 斷言接口請求後服務端響應的數據。(和上面基本一樣)
5、補充兩個類似的斷言組件
(1)大小斷言組件
根據返回內容的大小(數據多少)進行斷言,作用於返回的響應報文。
添加大小斷言(Size Assertion
)組件操作:選中「取樣器」右鍵 —> 添加 —> 斷言 —> 大小斷言
。
界面如下圖所示:
說明:
1)Apply to
:響應斷言的應用範圍
同響應斷言組件。
2)Response Size Field to Test
:要斷言哪部分內容的位元組大小。
Full response
:響應全部內容的位元組大小。Response Headers
:響應頭內容的位元組大小。Response Body
:響應體內容的位元組大小。- 響應代碼:響應碼位元組大小。
- 響應信息:
Response message
部分信息位元組大小。
3)Size to Assert
:設置斷言位元組大小的範圍
自己輸入位元組數,然後選擇範圍:=、!=、>、<、>=、<=
。
(2)持續時間斷言組件
用於判斷服務器的響應時間是否符合要求。
該斷言計算的時間為,從發送請求到收到響應的這段時間,是否在我們設置的時間之內。
如果該時間小於設置時間,則成功;如果大於設置時間,則失敗。
添加持續時間斷言組件操作:選中「取樣器」右鍵 —> 添加 —> 斷言 —> 持續時間斷言
。
界面如下圖所示:
說明:
1)Apply to
:響應斷言的應用範圍
同響應斷言組件。
2)斷言持續時間:設置請求返迴響應的最長時間,單位毫秒。
說明:這兩個斷言的用法和響應斷言的用法一樣,這裡就不做演示了。