1.簡介
斷言組件用來對服務器的響應數據做驗證,常用的斷言是響應斷言,其支持正則表達式。雖然我們的通過響應斷言能夠完成絕大多數的結果驗證工作,但是JMeter還是為我們提供了適合多個場景的斷言元件,輔助我們來更好的完成結果驗證工作。在使用JMeter進行性能測試或者接口自動化測試工作中,經常會用到的一個功能,就是斷言,斷言相當於檢查點,它是用來判斷系統返回的響應結果是否正確,以此幫我們判斷測試是否通過。
2.預覽斷言
首先我們來看一下JMeter的斷言,路徑:線程組(用戶)->添加->斷言;我們可以清楚地看到JMeter5中共有13個斷言(不包括jp@gc開頭的斷言,這個是宏哥安裝的插件),如下圖所示:
如果上圖您看得不是很清楚的話,宏哥總結了一個思維導圖,關於JMeter5的斷言類型,如下圖所示:
通過以上的了解,我們對斷言有了一個大致的了解和認識。下面宏哥就給小伙伴或則童鞋們分享講解一些通常在工作中會用到的斷言。
3.常用斷言詳解
這一小節,宏哥就由上而下地詳細地講解一下常用的斷言。
3.1 HTML斷言
對響應類為XML類型的文件進行斷言;
作用對象:針對sampler中的SOAP/XML-RPC Request而使用的斷言
1、我們先來看看這個 HTML斷言 長得是啥樣子,路徑:線程組 > 添加 > 斷言 > HTML斷言,如下圖所示:
2、關鍵參數說明如下:
名稱:控制器的描述性名稱,顯示在左邊節點上,並用於命名事務
注釋:控制器注釋信息,非必填項
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解析器)
3.2MD5 Hex斷言
MD5是一種消息摘要算法,用以提供消息的完整性保護,對返回的MD5結果進行斷言,使用簡單,直接跳入MD5值。執行服務器響應的MD5哈希並將其與給定的Md5哈希進行比較。它非常適合您要檢查下載文件是否完整的情況。
作用對象:針對參數類型為MD5Hex加密的參數的斷言
1、我們先來看看這個 MD5 Hex斷言 長得是啥樣子,路徑:線程組 > 添加 > 斷言 > MD5 Hex斷言,如下圖所示:
2、關鍵參數說明如下:
名稱:控制器的描述性名稱,顯示在左邊節點上,並用於命名事務
注釋:控制器注釋信息,非必填項
MD5Hex:將已被MD5加密的參數寫入其中,添加取樣器等其他元件
3.3 SMIME斷言
SMIME是一種多用途網際郵件擴充協議,相比於之前的SMAP郵件傳輸協議,增加了安全性,對郵件主題進行保護;
作用對象:針對采用了該種郵件傳輸協議的信息
1、我們先來看看這個 SMIME斷言長得是啥樣子,路徑:線程組 > 添加 > 斷言 > SMIME斷言,如下圖所示:
2、關鍵參數說明如下:
名稱:控制器的描述性名稱,顯示在左邊節點上,並用於命名事務
注釋:控制器注釋信息,非必填項
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:執行斷言消息的位置(在返回消息的具體哪個位置執行斷言)
3.4XML斷言
XML(可擴展標記語言) 提供一種描述結構化數據的方法。與主要用於控制數據的顯示和外觀的 HTML 標記不同,XML 標記用於定義數據本身的結構和數據類型;
作用對象:判斷返回結果是否和xml的格式即<></>成對出現
1、我們先來看看這個 XML斷言長得是啥樣子,路徑:線程組 > 添加 > 斷言 > XML斷言,如下圖所示:
2、關鍵參數說明如下:
名稱:控制器的描述性名稱,顯示在左邊節點上,並用於命名事務
注釋:控制器注釋信息,非必填項
3.5 XML Schema斷言
亦可以稱為XML模型斷言/XML數據類型斷言;XML Schema 定義了兩種主要的數據類型:①xml document schema 文檔架構 ;② 文檔架構xml-schema xml模式
作用對象:返回結果為XML概要斷言的2中數據類型的消息
1、我們先來看看這個 XML Schema斷言 長得是啥樣子,路徑:線程組 > 添加 > 斷言 > XML Schema斷言,如下圖所示:
2、關鍵參數說明如下:
名稱:控制器的描述性名稱,顯示在左邊節點上,並用於命名事務
注釋:控制器注釋信息,非必填項
文件名:載入文件名 ,(寫入需要斷言的文件名稱)
3.6 Bean Shell斷言
BeanShell是一種松散類型的腳本語言(這點和JS類似),一種完全符合java語法的java腳本語言,並且又擁有自己的一些語法和方法;
BeanShell斷言支持各種開發語言,本文介紹使用java編寫斷言,使用BeanShell斷言的好處是可以自由發揮,比如當斷言失敗,提示預期結果、實際結果,或者失敗時把結果輸出到日志。
作用對象:針對sampler中的Bean Shell sampler而使用的斷言
1、我們先來看看這個 BeanShell斷言 長得是啥樣子,路徑:線程組 > 添加 > 斷言 > BeanShell斷言,如下圖所示:
2、關鍵參數說明如下:
名稱:控制器的描述性名稱,顯示在左邊節點上,並用於命名事務
注釋:控制器注釋信息,非必填項
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):參照下文定義的變量(使腳本文件參照定義的變量來運行)
4.小結
好了,今天到這里JMeter5的所有斷言基礎就介紹和分享完了,感謝您耐心的閱讀和一路支持宏哥!!!
的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡