Jmeter(六):斷言

目錄

JMeter(一):基礎(chǔ)概念
JMeter(二):配置元件
JMeter(三):變量參數(shù)化
JMeter(四):監(jiān)聽(tīng)器
JMeter(五):腳本錄制

斷言:驗(yàn)證服務(wù)器返回的數(shù)據(jù)是否滿(mǎn)足我們的要求
即LR中的檢查點(diǎn)途乃,是對(duì)響應(yīng)結(jié)果做一個(gè)判斷啃奴,我們?cè)谡?qǐng)求一個(gè)網(wǎng)址時(shí)會(huì)有返回?cái)?shù)據(jù)资昧,那怎么判斷請(qǐng)求是正確的呢震嫉,就需要對(duì)某一字段或內(nèi)容進(jìn)行匹配砸王,如果跟預(yù)想的一樣就認(rèn)為請(qǐng)求是正確的攻旦,否則是失敗的

使用斷言的目的:在request的返回層面增加一層判斷機(jī)制(因?yàn)閞equest成功了抖格,并不代表結(jié)果一定正確)

針對(duì)何時(shí)使用JMeter斷言乃正,下面給出了一些建議:
(1)請(qǐng)求使用的是來(lái)自“CSV數(shù)據(jù)集配置”的數(shù)據(jù)
(2)使用的HTTP的POST住册、PUT、PATCH方法
(3)登錄和注銷(xiāo)后
(4)當(dāng)2xx status codes同時(shí)在正面測(cè)試和負(fù)面測(cè)試中返回
(5)在API性能測(cè)試中
(6)在功能測(cè)試中
(7)有SOAP / XML-RPC請(qǐng)求
需要注意:斷言消耗內(nèi)存瓮具,謹(jǐn)慎使用

斷言類(lèi)型

如果沒(méi)有斷言只能人工對(duì)比對(duì)接口返回的數(shù)據(jù)荧飞,接口很多時(shí),比對(duì)數(shù)據(jù)的過(guò)程就會(huì)非常耗時(shí)名党,而且也容易出錯(cuò)叹阔,可以通過(guò)Fiddler抓包http請(qǐng)求來(lái)設(shè)置

1、響應(yīng)斷言

在使用該斷言時(shí)传睹,需要熟練使用正則表達(dá)式耳幢,如果請(qǐng)求中使用了變量,響應(yīng)內(nèi)容里寫(xiě)${variable}

抓包查看Resopnse.png

允許用戶(hù)通過(guò)添加模式字符串來(lái)比較驗(yàn)證服務(wù)器返回的響應(yīng)欧啤,Jmeter提供了很多種匹配規(guī)則睛藻,斷言中設(shè)置要測(cè)試的模式,實(shí)際響應(yīng)的內(nèi)容與設(shè)計(jì)的字符串進(jìn)行匹配堂油,如果返回的內(nèi)容包含了字符串修档,則認(rèn)為該次測(cè)試通過(guò)碧绞,否則就是失敻颉(模式中的內(nèi)容也可以參數(shù)化)

對(duì)斷言做判斷,只需添加【監(jiān)聽(tīng)器--斷言結(jié)果】
1)如果斷言成功,顯示的是HTTP請(qǐng)求名稱(chēng)
2)若失敗迫靖,則會(huì)顯示請(qǐng)求名稱(chēng)和失敗的原因(“Test failed XXXXXX”內(nèi)容)

PS:一個(gè)Sampler可以添加多個(gè)斷言院峡,根據(jù)你的檢查需求來(lái)添加相應(yīng)的斷言,當(dāng)Sampler下所有的斷言都通過(guò)了系宜,才算成功
比如在測(cè)接口時(shí)照激,返回值是True,只能說(shuō)明接口是通的盹牧,還得繼續(xù)驗(yàn)證返回的data值是否正確

斷言.png
  • Apply to:一般情況下俩垃,使用默認(rèn)的就行,如果一次發(fā)送多個(gè)請(qǐng)求(Ajax請(qǐng)求汰寓,GET或POST)口柳,就需要根據(jù)實(shí)際斷言需要選擇其他選項(xiàng)了。
  • 要測(cè)試的響應(yīng)字段:根據(jù)實(shí)際需要選擇
    • 響應(yīng)文本
      服務(wù)器響應(yīng)文本有滑,一般情況下跃闹,我們都是勾選改選項(xiàng),用于驗(yàn)證服務(wù)器返回值毛好。
    • Document(text)
      通過(guò)Apache Tika從各種的文檔中提取的文本進(jìn)行驗(yàn)證望艺,包括響應(yīng)文本,pdf肌访、word等等各種格式找默。jmeter會(huì)用Apache Tika去解析服務(wù)器響應(yīng)內(nèi)容,耗內(nèi)存吼驶、也耗時(shí)間啡莉,解析易失敗,盡量少用或不用旨剥。多用響應(yīng)文本方式來(lái)進(jìn)行斷言驗(yàn)證
    • URL樣本
      對(duì)請(qǐng)求的url進(jìn)行斷言咧欣,如果請(qǐng)求沒(méi)有重定向(302),那么該url即為請(qǐng)求的url轨帜;如果有重定向(切跟隨重定向)魄咕,那么url則包含了請(qǐng)求url和重定向url。
    • 響應(yīng)代碼
      即http響應(yīng)代碼蚌父,例如200哮兰,404等等,需要注意: 由于jmeter默認(rèn)情況下認(rèn)為4xx苟弛,5xx時(shí)該請(qǐng)求失敗喝滞,所以在斷言這類(lèi)響應(yīng)代碼時(shí),需要同時(shí)勾選Ingore Status膏秫,才能正常去做斷言右遭。
    • 響應(yīng)信息
      即響應(yīng)代碼對(duì)應(yīng)的信息,例如OK, Not Found等等這類(lèi)的窘哈。
    • Ingore Status 請(qǐng)參見(jiàn)4響應(yīng)代碼的使用說(shuō)明吹榴。

如下常見(jiàn)類(lèi)似是響應(yīng)信息,即http響應(yīng)頭信息滚婉,主要用于斷言當(dāng)響應(yīng)頭帶有唯一或特定意義

      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: 260Connection: close
      Location: http://www.baidu.com/404.html
      Response Headers
  • 模式匹配規(guī)則:支持正則表達(dá)式
    • 包括:返回結(jié)果包括指定的內(nèi)容,當(dāng)返回值固定時(shí)让腹,可以使用返回值做斷言远剩,效果和equals相同
    • 匹配:用正則表達(dá)式必須能匹配整個(gè)返回值,而不是返回值的一部分
    • Equals:返回結(jié)果與你指定結(jié)果完全一致
    • Substring:返回結(jié)果是指定結(jié)果的字串骇窍,不支持正則字符串
    • 否:相當(dāng)于取反民宿,即如果上述斷言結(jié)果為true,勾選“否”選項(xiàng)后像鸡,則最終斷言結(jié)果為false
  • 要測(cè)試的模式:要匹配的響應(yīng)值(字符串或正則表達(dá)式)活鹰,即接口測(cè)試結(jié)果的期望值或者其他期望值
2、斷言持續(xù)時(shí)間

持續(xù)時(shí)間(uration in milliseconds):?jiǎn)挝皇呛撩胫还溃绻憫?yīng)時(shí)間大于設(shè)置的響應(yīng)時(shí)間志群,則斷言失敗,否則成功蛔钙!

斷言持續(xù)時(shí)間.png
3锌云、XPath Assertion

適用情況:服務(wù)器返回的響應(yīng)內(nèi)容是xml格式

XPath Assertion.png
  • Apple to
    一般選擇Main sample only即可。如果一次發(fā)送多個(gè)請(qǐng)求吁脱,則需要根據(jù)實(shí)際斷言需要選擇其他選項(xiàng)了桑涎。(例如一個(gè)ajax請(qǐng)求,會(huì)發(fā)送多個(gè)GET或POST時(shí)兼贡。)
  • XML Parsing Options
    Use Tidy(tolerant parser):使用Tidy(容錯(cuò)解析器)攻冷,默認(rèn)選擇quiet
    Quiet:不顯示
    Report errors:錯(cuò)誤報(bào)告
    Show warnings:顯示錯(cuò)誤
    Use Namespaces:使用名稱(chēng)空間
    Validate XML:驗(yàn)證XML(文件包/數(shù)據(jù))
    Ignore Whitespace:忽略空格(允許指定語(yǔ)法分析器可以忽略哪個(gè)空格,而哪個(gè)空格是重要的)
    Fetch external DTDs:獲取外部DTDs(一些XML元素具有屬性遍希,屬性包含應(yīng)用程序使用的信息等曼,屬性?xún)H在程序?qū)υ剡M(jìn)行讀、寫(xiě)操作時(shí)凿蒜,提供元素的額外信息禁谦,這時(shí)候需要在DTDs中聲明)
  • Path Assertion
    輸入框中寫(xiě)入xpath斷言,點(diǎn)擊Validate驗(yàn)證其正確性
  • True if nothing matches
    確認(rèn)都不匹配
4废封、按照字節(jié)斷言
按照字節(jié)斷言.png
  • APPly to:應(yīng)用范圍(返回內(nèi)容的斷言范圍)
    Main sample and sub-samples:作用于父節(jié)點(diǎn)取樣器及對(duì)應(yīng)子節(jié)點(diǎn)取樣器
    Main sample only:僅作用于父節(jié)點(diǎn)取樣器
    Sub-samples only:僅作用于子節(jié)點(diǎn)取樣器
    JMeter Variable:作用于jmeter變量(輸入框內(nèi)可輸入jmeter的變量名稱(chēng))

  • Response Size Field to Test:響應(yīng)字節(jié)的測(cè)試范圍(可以選擇用于判斷的響應(yīng)范圍)
    Full Response:全部響應(yīng)
    Response Headers:響應(yīng)頭部
    Response Body:響應(yīng)主體
    響應(yīng)代碼:響應(yīng)報(bào)文相關(guān)的代碼
    響應(yīng)信息:響應(yīng)報(bào)文的信息

  • Size to Assert:斷言字節(jié)范圍
    字節(jié)大兄莶础:?jiǎn)挝皇亲止?jié);比較順序是①返回內(nèi)容的大衅蟆②比較類(lèi)型③指定字節(jié)大小

若未填值運(yùn)行時(shí)會(huì)報(bào)錯(cuò)


image.png
5遥皂、jp@gc - JSON Path Assertion

Jmeter4.0版本已增加JSON Assertion插件力喷,如果是3.2以上版本的話(huà)也可以在插件管理里面進(jìn)行下載,插件下載地址:https://jmeter-plugins.org/?search=jpgc-json
適用情況:服務(wù)器返回的響應(yīng)內(nèi)容是json格式
PS:點(diǎn)擊apply按鈕時(shí)渴肉,請(qǐng)記得保存測(cè)試計(jì)劃冗懦,因?yàn)榘惭b后會(huì)進(jìn)行重啟

插件安裝.png

參數(shù)說(shuō)明:

  • JSON Path:json提取表達(dá)式爽冕,用于提取目標(biāo)json串節(jié)點(diǎn)值
  • Validate against expected value:勾選該選項(xiàng)仇祭,則驗(yàn)證目標(biāo)期望結(jié)果,不勾選可以填寫(xiě) Expected Value
  • Match as regular expression:支持正則表達(dá)式
  • Expected Value:自定義期望值
  • Expect null:期望值為null颈畸,勾選該選項(xiàng)乌奇,則會(huì)斷言結(jié)果為null的情況
  • Invert assertion(will fail if above condition met):取反,如果上述兩種期望值斷言為true眯娱,勾選該選項(xiàng)礁苗,則斷言結(jié)果為fail;如果上述期望值斷言為fail徙缴,勾選該選項(xiàng)试伙,則斷言結(jié)果為true。
jp@gc - JSON Path Assertion.png

PS:若斷言成功于样,查看結(jié)果樹(shù)中是看不到的疏叨,若失敗,則會(huì)顯示錯(cuò)誤信息(如圖中提示天氣質(zhì)量預(yù)期值是良穿剖,但實(shí)際是優(yōu))

也可以通過(guò)監(jiān)聽(tīng)器-斷言結(jié)果來(lái)查看

斷言結(jié)果.png


PS:一個(gè)斷言在測(cè)試樹(shù)中是分等級(jí)的蚤蔓,如果父元件是請(qǐng)求,它就僅被應(yīng)用于那個(gè)請(qǐng)求糊余。如果它的父元件是控制器秀又,它就影響所有那個(gè)控制器下的所有請(qǐng)求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贬芥,一起剝皮案震驚了整個(gè)濱河市吐辙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蘸劈,老刑警劉巖袱讹,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異昵时,居然都是意外死亡捷雕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)壹甥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)救巷,“玉大人,你說(shuō)我怎么就攤上這事句柠∑忠耄” “怎么了棒假?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)精盅。 經(jīng)常有香客問(wèn)我帽哑,道長(zhǎng),這世上最難降的妖魔是什么叹俏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任妻枕,我火速辦了婚禮,結(jié)果婚禮上粘驰,老公的妹妹穿的比我還像新娘屡谐。我一直安慰自己,他們只是感情好蝌数,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布愕掏。 她就那樣靜靜地躺著,像睡著了一般顶伞。 火紅的嫁衣襯著肌膚如雪饵撑。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天唆貌,我揣著相機(jī)與錄音滑潘,去河邊找鬼。 笑死挠锥,一個(gè)胖子當(dāng)著我的面吹牛众羡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蓖租,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粱侣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蓖宦?” 一聲冷哼從身側(cè)響起齐婴,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稠茂,沒(méi)想到半個(gè)月后柠偶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睬关,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年诱担,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片电爹。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔫仙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丐箩,到底是詐尸還是另有隱情摇邦,我是刑警寧澤恤煞,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站施籍,受9級(jí)特大地震影響居扒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丑慎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一喜喂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧立哑,春花似錦夜惭、人聲如沸姻灶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)产喉。三九已至捂掰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曾沈,已是汗流浹背这嚣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塞俱,地道東北人姐帚。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像障涯,于是被迫代替她去往敵國(guó)和親罐旗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理唯蝶,服務(wù)發(fā)現(xiàn)九秀,斷路器,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • JMeter有兩種類(lèi)型的控制器:取樣器和邏輯控制器粘我。 取樣器指示JMeter向一個(gè)服務(wù)器發(fā)送請(qǐng)求鼓蜒。例如,如果你想讓...
    七月尾巴_葵花閱讀 1,671評(píng)論 0 3
  • 主要文體來(lái)自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano閱讀 10,976評(píng)論 3 27
  • 此刻我的心在莫名慌亂的快速跳動(dòng)征字,雙臂已經(jīng)失去了力量都弹,只剩下手指機(jī)械地敲著手機(jī)屏幕。壓抑的情感好像影響了我的內(nèi)分泌匙姜,...
    寒石居士閱讀 215評(píng)論 0 0
  • 培訓(xùn)第二天畅厢,感覺(jué)挺好的,雖然聽(tīng)著某些無(wú)聊的言論搁料,但是能夠暫時(shí)脫離上班的環(huán)境也是挺好的或详。況且今晚還拔草了心儀已久的燒...
    簡(jiǎn)單的詩(shī)句閱讀 161評(píng)論 0 1