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)斷言持續時間:設定請求返回響應的最長時間,單位毫秒。
說明:這兩個斷言的用法和響應斷言的用法一樣,這裡就不做演示了。