jmeter中有個(gè)元件叫做斷言(Assertion),它的作用和loadrunner中的檢查點(diǎn)類似;
用于檢查測(cè)試中得到的響應(yīng)數(shù)據(jù)等是否符合預(yù)期,用以保證性能測(cè)試過(guò)程中的數(shù)據(jù)交互與預(yù)期一致。
使用斷言的目的:在request的返回層面增加一層判斷機(jī)制;因?yàn)閞equest成功了,并不代表結(jié)果一定正確。
使用斷言的方法:
△在選擇的Sampler下添加對(duì)應(yīng)的斷言(因?yàn)椴煌愋偷臄嘌詸z查的內(nèi)容不同);配置好響應(yīng)的檢查內(nèi)容(根據(jù)斷言情況而定,有的斷言控制面板不需要添加任何內(nèi)容,如XML Assertion)。
△添加一個(gè)斷言結(jié)果的監(jiān)聽(tīng)器(從監(jiān)聽(tīng)器中添加),通過(guò)“斷言結(jié)果”可以看到是否通過(guò)斷言;對(duì)于一次請(qǐng)求,如果通過(guò)的話,斷言結(jié)果中只會(huì)打印一行請(qǐng)求的名稱;
如果失敗,則除了請(qǐng)求的名稱外,還會(huì)有一行失敗的原因(不同類型的斷言,結(jié)果不同)。
PS:一個(gè)Sampler可以添加多個(gè)斷言,根據(jù)你的檢查需求來(lái)添加相應(yīng)的斷言,當(dāng)Sampler下所有的斷言都通過(guò)了,那么才算request成功。
最新版本的3.0jmeter中有13種不同的斷言,下面簡(jiǎn)單介紹下每個(gè)斷言各自擁有什么樣的作用以及它們的適用場(chǎng)景:
1、BeanShell斷言
BeanShell之前關(guān)于定時(shí)器的隨筆中有介紹過(guò),是一種松散類型的腳本語(yǔ)言(這點(diǎn)和JS類似),一種完全符合java語(yǔ)法的java腳本語(yǔ)言,并且又擁有自己的一些語(yǔ)法和方法;
作用對(duì)象:針對(duì)sampler中的Bean Shell sampler而使用的斷言

Name:斷言的名字(可以用一個(gè)比較容易理解和分辨的名稱)
Comments:注釋(對(duì)這個(gè)斷言進(jìn)行一個(gè)解釋,備注)
Reset bsh.interpreter before each call:在每次調(diào)用Bean Shell之前重置bsh.interpreter類(bsh.interpreter是Bean Shell腳本語(yǔ)言的一種類,也可以理解為一種解析器)
Parameters(String Parameters and String []bsh.args):String參數(shù)(String []bsh.args是主類main函數(shù)的形式參數(shù),是一個(gè)String 對(duì)象數(shù)組,可以用來(lái)獲取命令行用戶輸入進(jìn)去的參數(shù))
Script file:腳本文件(可以填入腳本文件路徑)
Script(see below for variables that are defined):參照下文定義的變量(使腳本文件參照定義的變量來(lái)運(yùn)行)
2、 BSF斷言
BSF(Bean Scripting Framework)之前也介紹過(guò),是一個(gè)支持在Java應(yīng)用程序內(nèi)調(diào)用腳本語(yǔ)言?(Script),并且支持腳本語(yǔ)言直接訪問(wèn)Java對(duì)象和方法的一個(gè)開(kāi)源項(xiàng)目;
作用對(duì)象:針對(duì)sampler中的BSF sampler而使用的斷言

Script language(e.g.beanshell,javascirpt,jexl):腳本語(yǔ)言(可以從下面的下拉框中選擇對(duì)應(yīng)的腳本語(yǔ)言JavaScript、beanshell等)
parameters to be passed to script(=> String Parameters and String []args):(傳遞給腳本的參數(shù)→可以理解為使用BSF斷言腳本時(shí)候一起引用的參數(shù) )
Script file(overrides script):重寫腳本(可以通過(guò)選擇腳本文件的狀態(tài),是瀏覽調(diào)用已有的腳本還是在在下方的輸入框內(nèi)寫入腳本;)
Script:下面的輸入框表示可以輸入變量類型,運(yùn)用的腳本(取樣結(jié)果、斷言結(jié)果、取樣日志文件等參數(shù))
3、比較斷言(compare ?assertion)
這是一種比較特殊的斷言元件,針對(duì)斷言進(jìn)行字符串替換時(shí)使用;
作用對(duì)象:需要替換的字符串

Select Comparison Operators:選擇比較運(yùn)算符
Compare Content:可以選擇比較的內(nèi)容類型(true/false或者自定義,編輯)
Compare Time:比較時(shí)間(可以設(shè)定比較的時(shí)間,單位為秒,默認(rèn)為-1)
Comparison Fitters:比較修改工具
regular expression substitutions:替換正則表達(dá)式
Regex String:要替換的字符串(可從斷言結(jié)果中選擇)
substitutions:替換的字符串(替換結(jié)果)
4、HTML斷言
對(duì)響應(yīng)類為XML類型的文件進(jìn)行斷言;
作用對(duì)象:針對(duì)sampler中的SOAP/XML-RPC Request而使用的斷言

Tidy Settings:Tidy 環(huán)境(Tidy是一個(gè)HTML語(yǔ)法檢查器和打印工具,可以將HTML轉(zhuǎn)換為XML類型的文件)
Doctype:文檔類型(可通過(guò)下拉框選擇不同文檔類型→ omit疏忽遺漏的/auto動(dòng)態(tài)的/strict嚴(yán)格的/loose寬泛的。。。。。。我也不太懂這里什么意思GG)
Format:文件格式(可選擇HTML/XHTML/XML三種不同類型的文件格式來(lái)檢查返回內(nèi)容)
Errors only:誤差校正(能接受的最大值)
Error threshold:誤差/錯(cuò)誤范圍(可選擇誤差/錯(cuò)誤數(shù)量的范圍,最大值)
Warning threshold:警告范圍(可選擇誤差警告的數(shù)量范圍,最大值)
如果勾選“Error only”這里忽略Warning,只對(duì)誤差作統(tǒng)計(jì)檢查;如果對(duì)返回內(nèi)容的檢查結(jié)果不超過(guò)指定結(jié)果,則斷言通過(guò),否則失敗。
Write JTidy report to file:寫入JTidy報(bào)告的文件(JTidy是Tidy的一個(gè)java移植,可以將它當(dāng)成一個(gè)處理HTML文件的DOM解析器)
5、JSR223斷言
JSR223即Java?規(guī)范請(qǐng)求,是指向JCP(Java?Community?Process)提出新增一個(gè)標(biāo)準(zhǔn)化技術(shù)規(guī)范的正式請(qǐng)求;
作用對(duì)象:針對(duì)sampler中的JSR223 sampler而使用的斷言

Script language(e.g.beanshell,javascirpt,jexl):腳本語(yǔ)言(可以從下面的下拉框中選擇對(duì)應(yīng)的腳本語(yǔ)言JavaScript、beanshell等)
parameters to be passed to script(=> String Parameters and String []args):(傳遞給腳本的參數(shù)→可以理解為使用JSR223斷言腳本時(shí)候一起引用的參數(shù) )
Script file(overrides script):重寫腳本(可以通過(guò)選擇腳本文件的狀態(tài),是瀏覽調(diào)用已有的腳本還是在在下方的輸入框內(nèi)寫入腳本;)
Script:下面的輸入框表示可以輸入變量類型,運(yùn)用的腳本(取樣結(jié)果、斷言結(jié)果、取樣日志文件等參數(shù))
6、MD5Hex斷言
MD5是一種消息摘要算法,用以提供消息的完整性保護(hù)(具體關(guān)于MD5的知識(shí)請(qǐng)自行查詢);
作用對(duì)象:針對(duì)參數(shù)類型為MD5Hex加密的參數(shù)的斷言

MD5Hex:將已被MD5加密的參數(shù)寫入其中,添加取樣器等其他元件
7、Size斷言
用于判斷返回內(nèi)容的大??;
作用對(duì)象:返回信息,響應(yīng)報(bào)文

APPly to:應(yīng)用范圍(返回內(nèi)容的斷言范圍)
Main sample and sub-samples:作用于父節(jié)點(diǎn)取樣器及對(duì)應(yīng)子節(jié)點(diǎn)取樣器
Main sample only:僅作用于父節(jié)點(diǎn)取樣器
Sub-samples only:僅作用于子節(jié)點(diǎn)取樣器
JMeter Variable:作用于jmeter變量(輸入框內(nèi)可輸入jmeter的變量名稱)
Response Size Field to Test:響應(yīng)字節(jié)的測(cè)試范圍(可以選擇用于判斷的響應(yīng)范圍)
Full Response:全部響應(yīng)
Response Headers:響應(yīng)頭部
Response Body:響應(yīng)主體
響應(yīng)代碼:響應(yīng)報(bào)文相關(guān)的代碼
響應(yīng)信息:響應(yīng)報(bào)文的信息
Size to Assert:斷言字節(jié)范圍
字節(jié)大小單位為:字節(jié);比較順序是①返回內(nèi)容的大?、诒容^類型③指定字節(jié)大小
8、SMIME斷言
SMIME是一種多用途網(wǎng)際郵件擴(kuò)充協(xié)議,相比于之前的SMAP郵件傳輸協(xié)議,增加了安全性,對(duì)郵件主題進(jìn)行保護(hù);
作用對(duì)象:針對(duì)采用了該種郵件傳輸協(xié)議的信息

signature:簽名(可選擇對(duì)協(xié)議的簽名驗(yàn)證狀態(tài))
Verify signature:驗(yàn)證簽名
Message not signed:沒(méi)有簽名消息
Signer certificate:簽名證書(shū)(因?yàn)镾MIME協(xié)議增加了安全傳輸,需要證書(shū)驗(yàn)證)
No check:不檢查
Check values:檢查
Signer distinguished name:簽名證書(shū)者名稱(證書(shū)注冊(cè)者的名稱)
Sigmer email address:簽名者的郵件地址(注冊(cè)的郵件地址)
Issuer distinguished name:發(fā)行者名稱(由誰(shuí)發(fā)行的證書(shū))
Serial Number:證書(shū)序號(hào)
Certificate file:選擇證書(shū)文件
Execute assertion message at position:執(zhí)行斷言消息的位置(在返回消息的具體哪個(gè)位置執(zhí)行斷言)
9、XML概要斷言
亦可以稱為XML模型斷言/XML數(shù)據(jù)類型斷言;XML Schema定義了兩種主要的數(shù)據(jù)類型:①xml document schema文檔架構(gòu) ;② 文檔架構(gòu)xml-schemaxml模式
作用對(duì)象:返回結(jié)果為XML概要斷言的2中數(shù)據(jù)類型的消息

XML Schema:XML概要模型
File Name:文件名(寫入需要斷言的文件名稱)
10、XML斷言
XML(可擴(kuò)展標(biāo)記語(yǔ)言) 提供一種描述結(jié)構(gòu)化數(shù)據(jù)的方法。與主要用于控制數(shù)據(jù)的顯示和外觀的?HTML?標(biāo)記不同,XML?標(biāo)記用于定義數(shù)據(jù)本身的結(jié)構(gòu)和數(shù)據(jù)類型;
作用對(duì)象:判斷返回結(jié)果是否和xml的格式即<>成對(duì)出現(xiàn)

11、XPath斷言
XPath即為XML路徑語(yǔ)言,它是一種用來(lái)確定XML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集)文檔中某部分位置的語(yǔ)言。XPath基于XML的樹(shù)狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹(shù)中找尋節(jié)點(diǎn)的能力。
作用對(duì)象:針對(duì)返回信息為XPAth的數(shù)據(jù)類型進(jìn)行斷言

Apply to:適用范圍
Main sample and sub-samples:主要樣本和次級(jí)樣本
Main sample only:僅主要樣本
Sub-samples only:僅次級(jí)樣本
JMeter Variable:jmeter變量(輸入框內(nèi)可輸入jmeter的變量名稱)
XML Parsing Options:XML解析選項(xiàng)
Use Tidy(tolerant parser):使用Tidy(容錯(cuò)解析器),默認(rèn)選擇quiet(不顯示)
Quiet:不顯示
Report errors:錯(cuò)誤報(bào)告
Show warnings:顯示錯(cuò)誤
Use Namespaces:使用名稱空間
Validate XML:驗(yàn)證XML(文件包/數(shù)據(jù))
Ignore Whitespace:忽略空格(這允許你指定語(yǔ)法分析器可以忽略哪個(gè)空格,而哪個(gè)空格是重要的)
Fetch external DTDs:獲取外部DTDs(一些XML元素具有屬性,屬性包含應(yīng)用程序使用的信息,屬性僅在程序?qū)υ剡M(jìn)行讀、寫操作時(shí),提供元素的額外信息,這時(shí)候需要在DTDs中聲明)
XPath Assertion:輸入框中寫入xpath斷言,點(diǎn)擊Validate驗(yàn)證其正確性
True if nothing matches:確認(rèn)都不匹配
12、響應(yīng)斷言
判斷返回內(nèi)容中的內(nèi)容
作用對(duì)象:響應(yīng)報(bào)文中的所有對(duì)象

APPly to:適用范圍
Main sample and sub-samples:作用于父節(jié)點(diǎn)取樣器及對(duì)應(yīng)子節(jié)點(diǎn)取樣器
Main sample only:僅作用于父節(jié)點(diǎn)取樣器
Sub-samples only:僅作用于子節(jié)點(diǎn)取樣器
JMeter Variable:作用于jmeter變量(輸入框內(nèi)可輸入jmeter的變量名稱)
要測(cè)試的響應(yīng)字段:要檢查的項(xiàng)
響應(yīng)報(bào)文
Documeng(text):測(cè)試文件
URL樣本
響應(yīng)代碼
響應(yīng)信息
Response Headers:響應(yīng)頭部
Ignore status:忽略返回的響應(yīng)報(bào)文狀態(tài)碼
模式匹配規(guī)則:
包括:返回結(jié)果包括你指定的內(nèi)容
匹配:(好像跟Equals查不多,弄不明白有什么區(qū)別)
Equals:返回結(jié)果與你指定結(jié)果一致
Substring:返回結(jié)果是指定結(jié)果的字串
否:不進(jìn)行匹配
要測(cè)試的模式:即填寫你指定的結(jié)果(可填寫多個(gè)),按鈕【添加】、【刪除】是進(jìn)行指定內(nèi)容的管理
13、斷言持續(xù)時(shí)間
用于判斷服務(wù)器的響應(yīng)時(shí)間
作用對(duì)象:服務(wù)器

APPly to:適用范圍
Main sample and sub-samples:作用于父節(jié)點(diǎn)取樣器及對(duì)應(yīng)子節(jié)點(diǎn)取樣器
Main sample only:僅作用于父節(jié)點(diǎn)取樣器
Sub-samples only:僅作用于子節(jié)點(diǎn)取樣器
Duration to assert:持續(xù)斷言
Duration in milliseconds:響應(yīng)時(shí)間設(shè)置(單位:毫秒),如果響應(yīng)時(shí)間大于設(shè)置的響應(yīng)時(shí)間,則斷言失敗,否則成功!