關(guān)鍵字:斷言箩退、參數(shù)化(傳參丑罪、用戶變量传黄、環(huán)境變量)
斷言
響應(yīng)數(shù)據(jù)顯示不是我們預(yù)期的結(jié)果杰扫,但運(yùn)行卻顯示正常,這個(gè)時(shí)候需要進(jìn)行相關(guān)斷言判斷結(jié)果~
方法:
1膘掰、響應(yīng)斷言
可根據(jù)要測(cè)試響應(yīng)字段和模式匹配規(guī)則來(lái)設(shè)置斷言章姓,比如下方截圖是匹配返回的結(jié)果中是否包含“code:0,”,如果包含則表示斷言成功炭序,否則失敗。響應(yīng)斷言可添加多個(gè)苍日,但是多個(gè)斷言之間是與的關(guān)系惭聂,不能滿足或的需求。
apply to:是應(yīng)用范圍相恃,設(shè)定匹配的范圍
Main sample and sub-samples:匹配范圍為當(dāng)前父取樣器辜纲,及子取樣器
Main sample only :僅當(dāng)前父取樣器
Sub samples only:僅子取樣器
JMeter Variable:變量值進(jìn)行匹配
一般選擇Main sample only即可。如果一次發(fā)送多個(gè)請(qǐng)求拦耐,則需要根據(jù)實(shí)際斷言需要選擇其他選項(xiàng)了耕腾。(例如一個(gè)ajax請(qǐng)求,會(huì)發(fā)送多個(gè)GET或POST時(shí)杀糯。)
要測(cè)試的響應(yīng)字段
1.響應(yīng)文本
服務(wù)器響應(yīng)文本扫俺,一般情況下,我們都是勾選改選項(xiàng)固翰,用于驗(yàn)證服務(wù)器返回值狼纬。
2.Document(text)
通過(guò)Apache Tika從各種的文檔中提取的文本進(jìn)行驗(yàn)證,包括響應(yīng)文本骂际,pdf疗琉、word等等各種格式。jmeter會(huì)用Apache Tika去解析服務(wù)器響應(yīng)內(nèi)容歉铝,耗內(nèi)存盈简、也耗時(shí)間,解析易失敗,盡量少用或不用柠贤。多用響應(yīng)文本方式來(lái)進(jìn)行斷言驗(yàn)證
3.URL樣本
對(duì)請(qǐng)求的url進(jìn)行斷言香浩,如果請(qǐng)求沒(méi)有重定向(302),那么該url即為請(qǐng)求的url种吸;如果有重定向(切跟隨重定向)弃衍,那么url則包含了請(qǐng)求url和重定向url。
4.響應(yīng)代碼
即http響應(yīng)代碼坚俗,例如200镜盯,404等等,需要注意: 由于jmeter默認(rèn)情況下認(rèn)為4xx猖败,5xx時(shí)該請(qǐng)求失敗速缆,所以在斷言這類響應(yīng)代碼時(shí),需要同時(shí)勾選Ingore Status恩闻,才能正常去做斷言艺糜。
5.響應(yīng)信息
即響應(yīng)代碼對(duì)應(yīng)的信息,例如OK幢尚, Not Found等等這類的破停。
6.Response Headers
即http響應(yīng)頭信息,主要用于斷言當(dāng)響應(yīng)頭帶有唯一或特定意義時(shí)尉剩。
7.Ingore Status 請(qǐng)參見(jiàn)4響應(yīng)代碼的使用說(shuō)明真慢。
模式匹配規(guī)則
1.包括: 指返回結(jié)果包含要測(cè)試的模式中指定的內(nèi)容,支持正則表達(dá)式
2.匹配:(1)相當(dāng)于equals理茎。返回值是固定的黑界,可以以返回值做斷言,效果同equals皂林;(2)正則表達(dá)式匹配朗鸠。用正則表達(dá)式來(lái)匹配返回結(jié)果,但必須全部匹配础倍。即正則表達(dá)式必須能匹配整個(gè)返回值烛占,而不是返回部分值,注意與包括模式的區(qū)別(包括是支持模糊匹配的)沟启。
3.Equals:指返回結(jié)果與指定的測(cè)試模式完全一致扰楼。
4.Substring:與“包括”模式差不多,都是指返回結(jié)果包括指定的內(nèi)容美浦,但Substring不支持正則表達(dá)式弦赖。
否:相當(dāng)于取反。即如果上述斷言結(jié)果為true浦辨,勾選“否”選項(xiàng)后沼沈,則最終斷言結(jié)果為false币厕。
2.Beanshell Assertion
當(dāng)某些斷言不能滿足使用時(shí)列另,比如多個(gè)斷言或的情況旦装,可以使用Beanshell Assertion來(lái)進(jìn)行處理页衙。
例如“code:0”或者“code:999”都認(rèn)為斷言成功時(shí),可以使用如下方法來(lái)進(jìn)行處理:
String data = SampleResult.getResponseDataAsString();
if (data.indexOf("\"Code\":999") != -1 || data.indexOf("\"Code\":0") != -1)
{
? ? SampleResult.setSuccessful(true);
}
else
{
? ? SampleResult.setSuccessful(false);
}