您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
Jmeter筆記:響應(yīng)斷言詳解
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2015/4/13 14:46:13 ] 推薦標(biāo)簽:Jmeter 響應(yīng) 斷言

  平時(shí)我們使用jmeter進(jìn)行性能測(cè)試時(shí),經(jīng)常會(huì)用到斷言。jmeter提供了很多種斷言,本來(lái)想全都寫一下,但發(fā)現(xiàn)每一個(gè)斷言里面的東西都很多,所以先寫一下我們經(jīng)常使用的響應(yīng)斷言。
  第一次在cnblog上寫東西,不會(huì)排版,希望達(dá)人指點(diǎn)。

  響應(yīng)斷言 :對(duì)服務(wù)器的響應(yīng)進(jìn)行斷言校驗(yàn)
  (1)應(yīng)用范圍: main sample and sub sample, main sample only , sub-sample only , jmeter variable
  關(guān)于應(yīng)用范圍,我們大多數(shù)勾選“main sample only” 足夠了,因?yàn)槲覀円粋(gè)請(qǐng)求,實(shí)質(zhì)上只有一個(gè)請(qǐng)求。但是當(dāng)我們發(fā)一個(gè)請(qǐng)求時(shí),可以觸發(fā)多個(gè)服務(wù)器請(qǐng)求,類似于ajax那種,那么有main sample  和 sub-sample之分了。
  此外,對(duì)于有重定向的請(qǐng)求,并且勾選了“跟隨重定向”, 那么這兩個(gè)請(qǐng)求都是 sub-sample,重定向后的請(qǐng)求(第二個(gè)請(qǐng)求)是main-sample
  關(guān)于main sample and sub sample,有興趣的可以看看這個(gè)帖子
  http://stackoverflow.com/questions/28214936/jmeter-in-which-scenario-i-can-use-main-sample-or-sub-sample-or-both-for-te
 。2)響應(yīng)字段: 響應(yīng)文本,Document(Text),url樣本,響應(yīng)代碼,響應(yīng)信息,Response Header,ignore status
  響應(yīng)文本: 服務(wù)器響應(yīng)文本,一般普通http響應(yīng),都勾選這個(gè)。
  Document(Text):一切Apache Tika 支持服務(wù)器響應(yīng),包括文本響應(yīng),還支持 PDF, Office, Audio, Video formats。jmeter會(huì)用Apache Tika 去解析服務(wù)器響應(yīng)內(nèi)容,會(huì)很耗內(nèi)存,而且也很容易解析失敗。所以一般普通http請(qǐng)求,不要選擇這個(gè)。
  url樣本:是對(duì)sample的url進(jìn)行斷言。如果請(qǐng)求沒(méi)有重定向(302),那么是這個(gè)是請(qǐng)求url。 如果有重定向(且跟隨重定向),那么url包含請(qǐng)求url 和 重定向url
  響應(yīng)代碼:http響應(yīng)代碼,如101,200,302,404,501等。但當(dāng)我們要驗(yàn)證404,501等http響應(yīng)代碼時(shí),需要勾選“ ignore status”。因?yàn)楫?dāng)http 響應(yīng)代碼為400,500時(shí),jmeter默認(rèn)這個(gè)請(qǐng)求時(shí)失敗的。
  響應(yīng)信息:http響應(yīng)代碼對(duì)應(yīng)的響應(yīng)信息,例如:OK, Found
  HTTP/1.1 200 Ok
  HTTP/1.1 302 Found
  Response Header : 響應(yīng)頭信息,例如
  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)模式匹配規(guī)則
  包括:返回結(jié)果包括你指定的內(nèi)容,支持正則匹配
  例如:
  響應(yīng)字段為: 響應(yīng)文本
  模式匹配規(guī)則:匹配
  斷言為:1、invalid    2、[a-z]+
  當(dāng)返回值為:{"msg":"channel invalid."} , 這兩個(gè)斷言都是ok的,返回true
  匹配:
  (1) 相當(dāng)于 equals 。當(dāng)返回值固定時(shí),可以返回值做斷言,效果和equals相同
  (2) 正則匹配 。 用正則表達(dá)式匹配返回結(jié)果,但必須全部匹配。 即正則表達(dá)式必須能匹配整個(gè)返回值,而不是返回值的一部分。
  例如:
  響應(yīng)字段為: 響應(yīng)文本
  模式匹配規(guī)則:匹配
  斷言為:1、{"msg":"channel invalid."}   2、{"msg":"[a-z]+ invalid."}  , 3、[a-z]+
  當(dāng)返回值為:{"msg":"channel invalid."}   ,斷言1 2 是ok的, 斷言3是false
  當(dāng)返回值為:{"msg":"channel invalid."} , 斷言1 3是false, 斷言2才是ok的。
  原因是,斷言1 只能用于equals,而斷言3 只匹配了返回值部分,而不是全部匹配。
  Equals : 返回結(jié)果與你指定斷言完全一致
  SubString:與 “包括”差不多,都是指返回結(jié)果包括你指定的內(nèi)容,但是subString不支持正則字符串
  例如:
  響應(yīng)字段為: 響應(yīng)文本
  模式匹配規(guī)則:匹配
  斷言為:1、invalid    2、[a-z]+
  當(dāng)返回值為:{"msg":"channel invalid."} , 斷言1返回true, 但斷言2返回false
  否:相當(dāng)于取反。 如果上面斷言結(jié)果為true,勾選“否”后,終斷言結(jié)果為false。如果上面斷言結(jié)果為false,勾選“否”后,則終斷言結(jié)果為 true。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd