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的所有斷言基礎就介紹和分享完了,感謝您耐心的閱讀和一路支援巨集哥!!!
的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡