Jmeter(十)斷言


斷言是我們在做自動化測試中常用的一個功能,用於檢查測試中響應數據是否符合預期。

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

下面我們就來看下在Jmeter中怎么使用斷言:

接口:https://fe-api.zhaopin.com/c/i/sou?pageSize=60&cityId=765&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=軟件測試&kt=3

接口響應數據:

在HTTP請求中添加一個斷言->響應斷言

 

 再在線程組中添加一個監聽器->斷言結果

執行請求,查看結果樹以及斷言結果

 如果斷言失敗,察看結果樹中顯示請求失敗,斷言結果中也會打印詳細信息,如下:

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

jmeter中有13種不同的斷言,下面簡單介紹下每個斷言各自擁有什么樣的作用以及它們的適用場景:

一、響應斷言

判斷返回消息中的內容

APPly to:

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

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

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

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

 

二、JSON斷言

適用於返回消息是JSON格式

Assert JSON Path exists: json路徑

Additionally assert value:等於特定值

Match as regular expression:正則匹配

Expect null:空值

Invert assertion(will fail if above conditions met):上面的條件滿足則fail

三、大小斷言

判斷返回內容的大小

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

         Full Response:全部響應

         Response Headers:響應頭部

         Response Body:響應主體

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

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

Size to Assert:斷言字節范圍

         字節大小單位為:字節;

四、JSR223 Assertion

JSR223即Java 規范請求,是指向JCP(Java Community Process)提出新增一個標准化技術規范的正式請求;

作用對象:針對取樣器中的JSR223 sampler而使用的斷言

Script language(e.g.beanshell,javascirpt,jexl):腳本語言(可以從下面的下拉框中選擇對應的腳本語言JavaScript、beanshell等)

parameters to be passed to script(=> String Parameters and String []args):(傳遞給腳本的參數→可以理解為使用JSR223斷言腳本時候一起引用的參數 )

Script file(overrides script):重寫腳本(可以通過選擇腳本文件的狀態,是瀏覽調用已有的腳本還是在在下方的輸入框內寫入腳本;)

Script:下面的輸入框表示可以輸入變量類型,運用的腳本(取樣結果、斷言結果、取樣日志文件等參數)

五、XPath 斷言

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

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:確認都不匹配

六、Compare Assertion(比較斷言)

這是一種比較特殊的斷言元件,針對斷言進行字符串替換時使用;

作用對象:需要替換的字符串

Select Comparison Operators:選擇比較運算符

Compare Content:可以選擇比較的內容類型(true/false或者自定義,編輯)

Compare Time:比較時間(可以設定比較的時間,單位為秒,默認為-1)

Comparison Fitters:比較修改工具

regular expression substitutions:替換正則表達式

Regex String:要替換的字符串(可從斷言結果中選擇)

substitutions:替換的字符串(替換結果)

七、HTML斷言

對響應類為XML類型的文件進行斷言;

作用對象:針對sampler中的SOAP/XML-RPC Request而使用的斷言

Tidy Settings:Tidy 環境(Tidy是一個HTML語法檢查器和打印工具,可以將HTML轉換為XML類型的文件)

Doctype:文檔類型(可通過下拉框選擇不同文檔類型→ omit疏忽遺漏的/auto動態的/strict嚴格的/loose)

Format:文件格式(可選擇HTML/XHTML/XML三種不同類型的文件格式來檢查返回內容)

Errors only:誤差校正(能接受的最大值)

Error threshold:誤差/錯誤范圍(可選擇誤差/錯誤數量的范圍,最大值)

Warning threshold:警告范圍(可選擇誤差警告的數量范圍,最大值)

如果勾選“Error only”這里忽略Warning,只對誤差作統計檢查;如果對返回內容的檢查結果不超過指定結果,則斷言通過,否則失敗。

Write JTidy report to file:寫入JTidy報告的文件(JTidy是Tidy的一個java移植,可以將它當成一個處理HTML文件的DOM解析器)

八、MD5Hex斷言

MD5是一種消息摘要算法,用以提供消息的完整性保護

作用對象:針對參數類型為MD5Hex加密的參數的斷言

九、SMIME斷言

SMIME是一種多用途網際郵件擴充協議,相比於之前的SMAP郵件傳輸協議,增加了安全性,對郵件主題進行保護;

作用對象:針對采用了該種郵件傳輸協議的信息

signature:簽名(可選擇對協議的簽名驗證狀態)

          Verify signature:驗證簽名

          Message not signed:沒有簽名消息

Signer certificate:簽名證書(因為SMIME協議增加了安全傳輸,需要證書驗證)

          No check:不檢查

          Check values:檢查

Signer distinguished name:簽名證書者名稱(證書注冊者的名稱)

Sigmer email address:簽名者的郵件地址(注冊的郵件地址)

Issuer distinguished name:發行者名稱(由誰發行的證書)

Serial Number:證書序號

Certificate file:選擇證書文件

Execute assertion message at position:執行斷言消息的位置(在返回消息的具體哪個位置執行斷言)

十、XML Schema斷言

亦可以稱為XML模型斷言/XML數據類型斷言;XML Schema 定義了兩種主要的數據類型:①xml document schema 文檔架構 ;② 文檔架構xml-schema xml模式

作用對象:返回結果為XML概要斷言的2中數據類型的消息

十一、XML斷言

XML(可擴展標記語言) 提供一種描述結構化數據的方法。與主要用於控制數據的顯示和外觀的 HTML 標記不同,XML 標記用於定義數據本身的結構和數據類型;

作用對象:判斷返回結果是否和xml的格式即<></>成對出現

十二、斷言持續時間

用於判斷服務器的響應時間

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

十三、BeanShell斷言

BeanShell是一種松散類型的腳本語言(這點和JS類似),一種完全符合java語法的java腳本語言,並且又擁有自己的一些語法和方法;

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

 


免責聲明!

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



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