1. 程式人生 > >Jmeter--響應斷言

Jmeter--響應斷言

一、 響應斷言
定義:官網給出的定義是:The response assertion control panel lets you add pattern strings to be compared against various fields of the response.對伺服器的響應進行斷言校驗
這裡寫圖片描述
二、 應用範圍
範圍:
main sample and sub sample, main sample only , sub-sample only , jmeter variable
解釋:
一般預設為main sample only,因為我們一個請求,實質上只有一個請求。但是當我們發一個請求時,可以觸發多個伺服器請求,類似於ajax,所以就有了main sample 和sub-sample之分。
官網給出的解釋是:
Main sample only - assertion only applies to the main sample
Sub-samples only - assertion only applies to the sub-samples
Main sample and sub-samples - assertion applies to both.
JMeter Variable - assertion is to be applied to the contents of the named variable
三、 響應欄位
對應欄位:
響應文字,Document(Text),url樣本,響應程式碼,響應資訊,Response Header,ignore status
詳細內容:
響應文字: 伺服器響應文字,一般普通http響應,都勾選這個。
Document(Text):一切Apache Tika 支援伺服器響應,包括文字響應,還支援 PDF, Office, Audio, Video formats。jmeter會用Apache Tika 去解析伺服器響應內容,會很耗記憶體,而且也很容易解析失敗。所以一般普通http請求,不要選擇這個。
url樣本:是對sample的url進行斷言。如果請求沒有重定向(302),那麼就是這個就是請求url。 如果有重定向(且跟隨重定向),那麼url就包含請求url 和 重定向url
響應程式碼:http響應程式碼,如101,200,302,404,501等。但當我們要驗證404,501等http響應程式碼時,需要勾選“ ignore status”。因為當http 響應程式碼為400,500時,jmeter預設這個請求時失敗的。
響應資訊:http響應程式碼對應的響應資訊,例如:OK, Found
       HTTP/1.1 200 Ok
       HTTP/1.1 302 Found
Response Header : 響應頭資訊,例如   
      Server: Tengine
      Date: Thu, 12 Mar 2015 09:43:52 GMT
      Content-Type: text/html
      Content-Length: 260
      Connection: close
      Location:

http://www.baidu.com/404.html
ignore status:設定jmeter初始狀態為成功,預設取樣結果的成功與否按照響應狀態的斷言結果來確定,如果勾選ignore status則在斷言之前,強制設定響應狀態為成功。例如我想測試4XX,5XX狀態,但是jmeter預設是認為失敗的,如果我們想要測試,那麼就要勾選此選項,以便讓jmeter設定狀態為成功,在方便你自己做斷言
四、 模式匹配規則
匹配規則:
包括、匹配、Equals、Substring、否
詳細內容:
包括:返回結果包括你指定的內容,支援正則匹配
例如:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
分別對應以上兩個斷言設定的判定結果
匹配:
(1) 相當於 equals 。當返回值固定時,可以返回值做斷言,效果和equals相同
(2) 正則匹配 。 用正則表示式匹配返回結果,但必須全部匹配。 即正則表示式必須能匹配整個返回值,而不是返回值的一部分。
例如:
  響應欄位為: 響應文字
模式匹配規則:匹配
斷言為:1、{“msg”:”channel invalid.”} 2、{“msg”:”[a-z]+ invalid.”} , 3、[a-z]+
當返回值為:{“msg”:”channel invalid.”} ,斷言1,2 是ok的, 斷言3是false
當返回值為:{“msg”:”channel is invalid.”} , 斷言1 ,3是false, 斷言2才是ok的。
原因是,斷言1 只能用於equals,而斷言3 只匹配了返回值部分,而不是全部匹配。
Equals : 返回結果與你指定斷言完全一致
SubString:與 “包括”差不多,都是指返回結果包括你指定的內容,但是subString不支援正則字串
例如:
  響應欄位為: 響應文字
模式匹配規則:匹配
斷言為:1、invalid 2、[a-z]+
當返回值為:{“msg”:”channel invalid.”} , 斷言1返回true, 但斷言2返回false
否:就相當於取反。 如果上面斷言結果為true,勾選“否”後,最終斷言結果為false。如果上面斷言結果為false,勾選“否”後,則最終斷言結果為 true。