前言:
jmeter中有個元件叫做斷言(Assertion),它的作用和loadrunner中的檢查點類似;
用於檢查測試中得到的響應數據等是否符合預期,用以保證性能測試過程中的數據交互與預期一致。
使用斷言的目的:在request的返回層面增加一層判斷機制;因爲request成功了,並不代表結果一定正確。
使用斷言的方法:
△在選擇的Sampler下添加對應的斷言(因爲不同類型的斷言檢查的內容不同);配置好響應的檢查內容(根據斷言情況而定,有的斷言控制面板不需要添加任何內容,如XML Assertion)。
△添加一個斷言結果的監聽器(從監聽器中添加),通過“斷言結果”可以看到是否通過斷言;對於一次請求,如果通過的話,斷言結果中只會打印一行請求的名稱;
如果失敗,則除了請求的名稱外,還會有一行失敗的原因(不同類型的斷言,結果不同)。
PS:一個Sampler可以添加多個斷言,根據你的檢查需求來添加相應的斷言,當Sampler下所有的斷言都通過了,那麼纔算request成功。
1、BeanShell斷言
BeanShell斷言,是一種鬆散類型的腳本語言(這點和JS類似),一種完全符合java語法的java腳本語言,並且又擁有自己的一些語法和方法;
作用對象:針對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、 BSF斷言
BSF(Bean Scripting Framework)之前也介紹過,是一個支持在Java應用程序內調用腳本語言 (Script),並且支持腳本語言直接訪問Java對象和方法的一個開源項目;
作用對象:針對sampler中的BSF sampler而使用的斷言
Script language(e.g.beanshell,javascirpt,jexl):腳本語言(可以從下面的下拉框中選擇對應的腳本語言JavaScript、beanshell等)
parameters to be passed to script(=> String Parameters and String []args):(傳遞給腳本的參數→可以理解爲使用BSF斷言腳本時候一起引用的參數 )
Script file(overrides script):重寫腳本(可以通過選擇腳本文件的狀態,是瀏覽調用已有的腳本還是在在下方的輸入框內寫入腳本;)
Script:下面的輸入框表示可以輸入變量類型,運用的腳本(取樣結果、斷言結果、取樣日誌文件等參數)
3、比較斷言(compare assertion)
這是一種比較特殊的斷言元件,針對斷言進行字符串替換時使用;
作用對象:需要替換的字符串
Select Comparison Operators:選擇比較運算符
Compare Content:可以選擇比較的內容類型(true/false或者自定義,編輯)
Compare Time:比較時間(可以設定比較的時間,單位爲秒,默認爲-1)
Comparison Fitters:比較修改工具
regular expression substitutions:替換正則表達式
Regex String:要替換的字符串(可從斷言結果中選擇)
substitutions:替換的字符串(替換結果)
4、HTML斷言
對響應類爲XML類型的文件進行斷言;
作用對象:針對sampler中的SOAP/XML-RPC Request而使用的斷言
Tidy Settings:Tidy 環境(Tidy是一個HTML語法檢查器和打印工具,可以將HTML轉換爲XML類型的文件)
Doctype:文檔類型(可通過下拉框選擇不同文檔類型→ omit疏忽遺漏的/auto動態的/strict嚴格的/loose寬泛的。。。。。。我也不太懂這裏什麼意思GG)
Format:文件格式(可選擇HTML/XHTML/XML三種不同類型的文件格式來檢查返回內容)
Errors only:誤差校正(能接受的最大值)
Error threshold:誤差/錯誤範圍(可選擇誤差/錯誤數量的範圍,最大值)
Warning threshold:警告範圍(可選擇誤差警告的數量範圍,最大值)
如果勾選“Error only”這裏忽略Warning,只對誤差作統計檢查;如果對返回內容的檢查結果不超過指定結果,則斷言通過,否則失敗。
Write JTidy report to file:寫入JTidy報告的文件(JTidy是Tidy的一個java移植,可以將它當成一個處理HTML文件的DOM解析器)
5、JSR223斷言
JSR223即Java 規範請求,是指向JCP(Java Community Process)提出新增一個標準化技術規範的正式請求;
作用對象:針對sampler中的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:下面的輸入框表示可以輸入變量類型,運用的腳本(取樣結果、斷言結果、取樣日誌文件等參數)
6、MD5Hex斷言
MD5是一種消息摘要算法,用以提供消息的完整性保護(具體關於MD5的知識請自行查詢);
作用對象:針對參數類型爲MD5Hex加密的參數的斷言
MD5Hex:將已被MD5加密的參數寫入其中,添加取樣器等其他元件
7、Size斷言
用於判斷返回內容的大小;
作用對象:返回信息,響應報文
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:斷言字節範圍
字節大小單位爲:字節;比較順序是①返回內容的大小②比較類型③指定字節大小
8、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:執行斷言消息的位置(在返回消息的具體哪個位置執行斷言)
9、XML概要斷言
亦可以稱爲XML模型斷言/XML數據類型斷言;XML Schema 定義了兩種主要的數據類型:①xml document schema 文檔架構 ;② 文檔架構xml-schema xml模式
作用對象:返回結果爲XML概要斷言的2中數據類型的消息
XML Schema:XML概要模型
File Name:文件名(寫入需要斷言的文件名稱)
10、XML斷言
XML(可擴展標記語言) 提供一種描述結構化數據的方法。與主要用於控制數據的顯示和外觀的 HTML 標記不同,XML 標記用於定義數據本身的結構和數據類型;
作用對象:判斷返回結果是否和xml的格式即<></>成對出現
11、XPath斷言
XPath即爲XML路徑語言,它是一種用來確定XML(標準通用標記語言的子集)文檔中某部分位置的語言。XPath基於XML的樹狀結構,提供在數據結構樹中找尋節點的能力。
作用對象:針對返回信息爲XPAth的數據類型進行斷言
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:確認都不匹配
12、響應斷言
判斷返回內容中的內容
作用對象:響應報文中的所有對象
APPly to:適用範圍
Main sample and sub-samples:作用於父節點取樣器及對應子節點取樣器
Main sample only:僅作用於父節點取樣器
Sub-samples only:僅作用於子節點取樣器
JMeter Variable:作用於jmeter變量(輸入框內可輸入jmeter的變量名稱)
要測試的響應字段:要檢查的項
響應報文
Documeng(text):測試文件
URL樣本
響應代碼
響應信息
Response Headers:響應頭部
Ignore status:忽略返回的響應報文狀態碼
模式匹配規則:
包括:返回結果包括你指定的內容
匹配:(好像跟Equals查不多,弄不明白有什麼區別)
Equals:返回結果與你指定結果一致
Substring:返回結果是指定結果的字串
否:不進行匹配
要測試的模式:即填寫你指定的結果(可填寫多個),按鈕【添加】、【刪除】是進行指定內容的管理
13、斷言持續時間
用於判斷服務器的響應時間
作用對象:服務器
APPly to:適用範圍
Main sample and sub-samples:作用於父節點取樣器及對應子節點取樣器
Main sample only:僅作用於父節點取樣器
Sub-samples only:僅作用於子節點取樣器
Duration to assert:持續斷言
Duration in milliseconds:響應時間設置(單位:毫秒),如果響應時間大於設置的響應時間,則斷言失敗,否則成功!
PS:雖然斷言方法這麼多,通常我們用的最多是:響應斷言、Beanshell斷言、Xpath斷言