轉:Jmeter筆記:回應斷言詳解
平時我們使用jmeter進行性能測驗時,經常會用到斷言。jmeter提供了很多種斷言,本來想全都寫一下,但發現每一個斷言里面的東西都很多,所以就先寫一下我們經常使用的回應斷言。
第一次在cnblog上寫東西,不會排版,希望達人指點。 如轉載,請注明出處

回應斷言 :對服務器的回應進行斷言校驗
(1)應用范圍: main sample and sub sample, main sample only , sub-sample only , jmeter variable
關于應用范圍,我們大多數勾選“main sample only” 就足夠了,因為我們一個請求,實質上只有一個請求。但是當我們發一個請求時,可以觸發多個服務器請求,類似于ajax那種,那么就有main sample 和 sub-sample之分了。
此外,對于有重定向的請求,并且勾選了“跟隨重定向”, 那么這兩個請求都是 sub-sample,重定向后的請求(第二個請求)就是main-sample
關于main sample and sub sample,有興趣的可以看看這個帖子
http://stackoverflow.com/questions/28214936/jmeter-in-which-scenario-i-can-use-main-sample-or-sub-sample-or-both-for-te
(2)回應欄位: 回應文本,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
(3)模式匹配規則
包括:回傳結果包括你指定的內容,支持正則匹配
例如:
回應欄位為: 回應文本
模式匹配規則:匹配
斷言為:1、invalid 2、[a-z]+
當回傳值為:{"msg":"channel invalid."} , 這兩個斷言都是ok的,回傳true
匹配:
(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 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。
uj5u.com熱心網友回復:
https://edu.csdn.net/course/detail/22948uj5u.com熱心網友回復:
[face]qq:79.gif[/face
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63720.html
標籤:軟件測試
下一篇:驍龍處理器都采用的哪些架構?
