🔥Jmeter(二十二) - 從入門到精通 - JMeter 斷言 - 下篇(詳解教程)

北京-宏哥發表於2025-03-11

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 的所有斷言基礎就介紹和分享完了,感謝您耐心的閱讀和一路支援宏哥!!!

的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 ** 推薦 ** 不要忘記哦!!!

相關文章