Jmeter學習筆記(十二)——斷言


一、斷言簡介

jmeter中有個元件叫做斷言(Assertion)。用於檢查測試中得到的響應數據等是否符合預期,用以保證性能測試過程中的數據交互與預期一致。

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

使用斷言的方法:

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

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

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

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

二、斷言的種類

Jmeter4.0有12鍾斷言

 

 三、常用幾種斷言的介紹

1、響應斷言

在sampler下面添加響應斷言

APPly to:適用范圍

         Main sample and sub-samples:作用於父節點取樣器及對應子節點取樣器

         Main sample only:僅作用於父節點取樣器

         Sub-samples only:僅作用於子節點取樣器

         JMeter Variable:作用於jmeter變量(輸入框內可輸入jmeter的變量名稱)

要測試的響應字段:要檢查的項

                響應文本

                響應代碼

                響應信息

                Response Headers:響應頭部

               Request Herders:請求頭部

               URL樣本

               Documeng(text)

               Ignore status:忽略返回的響應報文狀態碼、

               Request Datas

模式匹配規則:

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

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

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

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

           否:不進行匹配

           或者 

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

 2、XPath斷言

XPath為XML路徑語言,它是一種用來確定XML(標准通用標記語言的子集)文檔中某部分位置的語言。XPath基於XML的樹狀結構,提供在數據結構樹中找尋節點的能力。

作用對象:針對返回信息為XPAth的數據類型進行斷言。就是如果服務器響應返回的是 xml 格式的內容,這時最佳的斷言驗證類型就是使用 XPath Assertion。

 

Apply to:適用范圍

         Main sample and sub-samples:主要樣本和次級樣本

         Main sample only:僅主要樣本

         Sub-samples only:僅次級樣本

         JMeter Variable:jmeter變量(輸入框內可輸入jmeter的變量名稱)

XML Parsing Options:XML解析選項

         Use Tidy(tolerant parser):使用Tidy(容錯解析器),默認選擇quiet(不顯示)

         Quiet:不顯示

         Report errors:錯誤報告

         Show warnings:顯示錯誤

         Use Namespaces:使用名稱空間

         Validate XML:驗證XML(文件包/數據)

         Ignore Whitespace:忽略空格(允許你指定語法分析器可以忽略哪個空格,而哪個空格重要的)

         Fetch external DTDs:獲取外部DTDs(一些XML元素具有屬性,屬性包含應用程序使用的信息,屬性僅在程序對元素進行讀、寫操作時,提供元素的額外信息,這時候需要在DTDs中聲明)

XPath Assertion:輸入框中寫入xpath斷言,點擊Validate驗證其正確性

         True if nothing matches:確認都不匹配

 

3、size斷言

用於判斷返回內容的大小,判斷響應結果是否包含正確數量的byte。可定義(=, !=, >, <, >=, <=)

 

 

APPly to:應用范圍(返回內容的斷言范圍)

         Main sample and sub-samples:作用於父節點取樣器及對應子節點取樣器

         Main sample only:僅作用於父節點取樣器

         Sub-samples only:僅作用於子節點取樣器

         JMeter Variable:作用於jmeter變量(輸入框內可輸入jmeter的變量名稱)

Response Size Field to Test:響應字節的測試范圍(可以選擇用於判斷的響應范圍)

         Full Response:全部響應

         Response Headers:響應頭部

         Response Body:響應主體

         響應代碼:響應報文相關的代碼

         響應信息:響應報文的信息

         Size to Assert:斷言字節范圍

         字節大小單位為:字節;比較順序是①返回內容的大小②比較類型③指定字節大小

 

4、斷言持續時間

作用:用於判斷服務器的響應時間,判斷是否在給定的時間內返回響應結果

 

 

APPly to:適用范圍

         Main sample and sub-samples:作用於父節點取樣器及對應子節點取樣器

         Main sample only:僅作用於父節點取樣器

         Sub-samples only:僅作用於子節點取樣器

持續時間(毫秒):響應時間設置(單位:毫秒),如果響應時間大於設置的響應時間,則斷言失敗,否則成功

 

5、BeanShell斷言

(1)BeanShell斷言介紹

BeanShell是jmeter的解釋型腳本語言,和java語法大同小異,並有自己的內置對象和方法可供使用。 BeanShell斷言可以使用beanshell腳本來執行斷言檢查,可以用於更復雜的個性化需求,使用更靈活,功能更強大,但是要能夠熟練使用beanshell腳本。

作用對象:針對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):參照下文定義的變量(使腳本文件參照定義的變量來運行)

(2)BeanShell斷言實例

JMeter在它的BeanShell中內置了變量,用戶可以通過這些變量與JMeter進行交互,其中主要的變量及其使用方法如下:

log:寫入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);

ctx:該變量引用了當前線程的上下文,使用方法可參考:org.apache.jmeter.threads.JMeterContext。

vars - (JMeterVariables):操作jmeter變量,這個變量實際引用了JMeter線程中的局部變量容器(本質上是Map),它是測試用例與BeanShell交互的橋梁,常用方法:

    a) vars.get(String key):從jmeter中獲得變量值

    b) vars.put(String key,String value):數據存到jmeter變量中

    更多方法可參考:org.apache.jmeter.threads.JMeterVariables

props - (JMeterProperties - class java.util.Properties):操作jmeter屬性,該變量引用了JMeter的配置信息,可以獲取Jmeter的屬性,它的使用方法與vars類似,但是只能put進去String類型的值,而不能是一個對象。對應於java.util.Properties。

    a) props.get("START.HMS");  注:START.HMS為屬性名,在文件jmeter.properties中定義

    b) props.put("PROP1","1234");

prev - (SampleResult):獲取前面的sample返回的信息,常用方法:

    a) getResponseDataAsString():獲取響應信息

    b) getResponseCode() :獲取響應code

    更多方法可參考:org.apache.jmeter.samplers.SampleResult

sampler - (Sampler):gives access to the current sampler

 在這里除了可以使用beanshell的內置變量外,主要通過 Failure 和 FailureMessage來設置斷言結果。

 簡單實例:

斷言結果:

 


免責聲明!

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



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