Jmeter之斷言——檢查點


Jmeter里的斷言相當於lr中的檢查點。用於檢查測試中得到的響應數據等是否符合預期,用以保證性能測試過程中的數據交互與預期一致。

使用斷言的目的:在request的返回層面增加一層判斷機制;因為request成功了,並不代表結果一定正確。

使用斷言的方法:

在選擇的Sampler下添加對應的斷言(因為不同類型的斷言檢查的內容不同);配置好響應的檢查內容(根據斷言情況而定,有的斷言控制面板不需要添加任何內容,如XML Assertion)。

添加一個斷言結果的監聽器(從監聽器中添加),通過“斷言結果”可以看到是否通過斷言;對於一次請求,如果通過的話,斷言結果中只會打印一行請求的名稱;

  如果失敗,則除了請求的名稱外,還會有一行失敗的原因(不同類型的斷言,結果不同)。

PS:一個Sampler可以添加多個斷言,根據你的檢查需求來添加相應的斷言,當Sampler下所有的斷言都通過了,那么才算request成功。

目前最新版本5.1.1版本里有13個斷言:

1、響應斷言

 

這里介紹下模式匹配規則:

           包括:返回結果包括你指定的內容

           匹配:(好像跟Equals查不多,弄不明白有什么區別)   

           Equals:返回結果與你指定結果一致

           Substring:返回結果是指定結果的字串

           否:不進行匹配

           要測試的模式:即填寫你指定的結果(可填寫多個),按鈕【添加】、【刪除】是進行指定內容的管理

#案例:百度搜索:哈哈  的請求。

1)測試模式填寫了兩個如下【值匹配成功】

查看結果樹可以看到,請求成功,則說明響應數據里包含這兩個數據。

2)填寫兩個響應數據里沒有的數據,【值匹配失敗】如下:

 

查看結果樹,查看斷言失敗了,並且提示沒有該匹配數據。

 

總結:一般如何沒有斷言錯誤,則可以證明該請求成功了,這里的斷言作用和lr里的檢查點是一樣的。

2、json斷言

參數:

Assert JSON Path exists :  $.后面添加你想要檢查的json字段。

Addittionally assert value: 是否添加斷言值, 添加的斷言值和json返回的字段值進行比較,等於特定的值。

Match as regular expression:  是否支持正則表達式。

Expected Value:  添加斷言值。

Expect null:  預期空值,勾選這項,則會匹配斷言結果為null的情況。

Invert assertion :  取反,若上述斷言結果為true,勾選此項,則斷言結果為false ;

                                       若上述斷言結果為false,勾選此項,則斷言結果為true。

#案例:如下圖該請求返回一個json串。

1)【匹配特定值】添加json斷言,匹配front,如下圖:

查看結果樹,可以看到請求成功。

 填寫斷言值為front444,匹配失敗,如下圖:

2)【匹配正則表達式】Match as regular expression一定要勾上。

匹配成功示例,匹配17位數,字和一個*號,這里的*號要加   \  進行轉義,如圖匹配:

匹配失敗示例:改為16位數字,匹配失敗:

3)【預期為null】

4)【取反】這里就不演示啦。

【規則】這里說下取json匹配字段的規則

  • $  根節點
  • @  現行節點
  • .  子節點
  • ..  不管位置,選擇所有符合條件的
  • *    匹配所有元素節點
  • [,]  支持迭代器中做多選
  • ?()  支持過濾操作
  • []  迭代器的標示,子元素操作符
  • ()  支持表達式計算

3、大小斷言

4、JSR233斷言

5、XPath斷言

6、HTML斷言

7、MD5Hex斷言

8、SMIME斷言

9、XML Schema斷言

10、XML斷言

11、斷言持續時間

12、比較斷言

13、Beanshell斷言

BeanShell之前關於定時器的隨筆中有介紹過,是一種松散類型的腳本語言(這點和JS類似),一種完全符合java語法的java腳本語言,並且又擁有自己的一些語法和方法;

作用對象:針對sampler中的Bean Shell sampler而使用的斷言

參數:

Name:斷言的名字(可以用一個比較容易理解和分辨的名稱)

Comments:注釋(對這個斷言進行一個解釋,備注)

Reset bsh.interpreter before each call:在每次調用Bean Shell之前重置bsh.interpreter類(bsh.interpreter是Bean Shell腳本語言的一種類,也可以理解為一種解析器)

Parameters(String Parameters and String []bsh.args):String參數(String []bsh.args是主類main函數的形式參數,是一個String 對象數組,可以用來獲取命令行用戶輸入進去的參數)

Script file:腳本文件(可以填入腳本文件路徑)

Script(see below for variables that are defined):參照下文定義的變量(使腳本文件參照定義的變量來運行)

 

這里重點介紹了前兩個斷言,和beanshell斷言,其他的還未用到,用到的時候再補充啦~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM