作用:一個HTTP請求發(fā)出去,怎么判斷執(zhí)行的任務是否成功呢?通過檢查服務器響應數(shù)據(jù),是否返回預期想要的數(shù)據(jù),如果是,判斷任務成功,反之任務失敗。
1、添加方式
選中一個取樣器,右鍵->添加->斷言->選中“響應斷言”

頁面相關參數(shù)

關于應用范圍,我們大多數(shù)勾選“main sample only” 就足夠了,因為我們一個請求,實質上只有一個請求。但是當我們發(fā)一個請求時,可以觸發(fā)多個服務器請求,類似于ajax那種,那么就有main sample ?和 sub-sample之分了。
此外,對于有重定向的請求,并且勾選了“跟隨重定向”, 那么這兩個請求都是 sub-sample,重定向后的請求(第二個請求)就是main-sample。
Main Samples and Sub Samples:?JMeter will check for the 'expected text' to be present in both main and sub samples and if any of the samplers do no have the text, it fails.
Main Sample Only:?- JMeter will check for the 'expected text' only in the main sample. It fails if it is not found.
Sub Sample only:?- JMeter will check for the 'expected text' only in all the sub samples. All the sub samplers are expected to have the text. Otherwise it fails.
2、響應字段

響應文本:服務器響應文本,一般普通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
lgnore Status:忽略狀態(tài)
3、模式匹配規(guī)則

包括:返回結果包括你指定的內容,支持正則匹配
例如:
響應字段為:響應文本
模式匹配規(guī)則:匹配
斷言為:1、invalid ? ?2、[a-z]+
當返回值為:{"msg":"channel invalid."}, 這兩個斷言都是ok的,返回true
匹配:
(1)相當于 equals 。當返回值固定時,可以返回值做斷言,效果和equals相同
(2)正則匹配 。 用正則表達式匹配返回結果,但必須全部匹配。 即正則表達式必須能匹配整個返回值,而不是返回值的一部分。
例如:
響應字段為:響應文本
模式匹配規(guī)則:匹配
斷言為:1、{"msg":"channel invalid."} ? 2、\{"msg":"[a-z]+ invalid\."\} ?, 3、[a-z]+
當返回值為:{"msg":"channel invalid."},斷言1 2 是ok的, 斷言3是false
當返回值為:{"msg":"channel invalid."}, 斷言1 3是false, 斷言2才是ok的。
原因是,斷言1只能用于equals,而斷言3 只匹配了返回值部分,而不是全部匹配。
Equals : 返回結果與你指定斷言完全一致
SubString:與“包括”差不多,都是指返回結果包括你指定的內容,但是SubString不支持正則字符串
例如:
響應字段為:響應文本
模式匹配規(guī)則:匹配
斷言為:1、invalid ? ?2、[a-z]+
當返回值為:{"msg":"channel invalid."}, 斷言1返回true, 但斷言2返回false
否:就相當于取反。如果上面斷言結果為true,勾選“否”后,最終斷言結果為false。如果上面斷言結果為false,勾選“否”后,則最終斷言結果為 true。
4、示例
1)、根據(jù)接口響應的結果,判斷接口請求是否成功
結果樹查看,可以看到響應的數(shù)據(jù)

2)、添加斷言
判斷請求的接口響應是否有【"code":200,"msg":"成功"】

3)、添加斷言結果
添加斷言結果,右鍵點擊我們的“登錄”頁面---->添加---->監(jiān)聽器---->斷言結果

4)、查看相關結果
斷言判斷,不匹配時,結果樹可以看到相應的失敗

聚合報告,異常率也會統(tǒng)計到相關數(shù)據(jù)
