斷言用于驗證取樣器請求或?qū)?yīng)的響應(yīng)數(shù)據(jù)是否返回了期望的結(jié)果??梢允强闯沈炞C測試是否預(yù)期的方法。
創(chuàng)新互聯(lián)建站服務(wù)項目包括安源網(wǎng)站建設(shè)、安源網(wǎng)站制作、安源網(wǎng)頁制作以及安源網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,安源網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到安源省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
對于接口測試來說,就是測試Request/Response,斷言即可以針對Request進行,也可以針對Response進行。但大部分是對Response做斷言。
JMeter常見的斷言元件如下:
1.響應(yīng)斷言
2.JSON Assertion
本章節(jié),我們主要先來學(xué)習(xí)JMeter響應(yīng)斷言.
配置項
Apply to:
1.在大多數(shù)情況下,只有主取樣器具有所有必需的響應(yīng)數(shù)據(jù)。但是很多Web應(yīng)用使用了Ajax,JQuery技術(shù),單個請求可以在內(nèi)部產(chǎn)生多個子請求,并且每個請求都有其對應(yīng)的響應(yīng)數(shù)據(jù)。
比如請求某一個頁面,頁面里的js會調(diào)用其他請求。
2.在HTTP請求的高級設(shè)置的“Embedded Resources from HTMLFiles”項,勾選了“Retrieve All Embedded Resources”,在發(fā)送請求時,會解析相關(guān)的嵌入資源,也會導(dǎo)致取樣器可能產(chǎn)生多個子取樣器。
嵌入資源包括:images、applets、stylesheets、external
scripts、frames/iframes、
background images、background sound等。
3.有重定向的請求,并且勾選了“Follow Redirects”,則主取樣器為最后返回的URL請求,
第一次URL和重定向返回的所有URL請求為子取樣器。
比如,使用http://www.sina.com/訪問新浪,會有兩次重定向:
第一次請求: GET http://www.sina.com/ 重定向返回:
Location: http://www.sina.com.cn/
第二次請求: GET http://www.sina.com.cn/ 重定向返
回: Location: https://www.sina.com.cn/
第三次請求: GET https://www.sina.com.cn/
主取樣器為第三次請求;第一次,第二次與第三次請求為子取樣器。
Main sample and sub-samples
范圍包括主取樣器與所有子取樣器
Main sample only
范圍僅限于主取樣器
Sub-samples only
范圍僅限于所有子取樣器
JMeter Variable Name to use
范圍包括使用的JMeter變量
Field to Test:
1.Text Response
響應(yīng)正文。對于HTTP協(xié)議來說,是響應(yīng)的message-body(不包括狀態(tài)行與首部字段)
2.Response Code
響應(yīng)代碼。對于HTTP協(xié)議來說,是響應(yīng)狀態(tài)碼,比如200、304、404等。
3.Response Message
響應(yīng)消息。對于HTTP協(xié)議來說,是原因短語,比如OK、Not Modified、Not Found等。
4.Response Headers
響應(yīng)首部字段。
5.Request Headers
請求首部字段。
6.URL Sampled
請求的URL。對于HTTP請求,若勾選了“Follow Redirects”,則包含重定向后的URL。
7.Document(text)
通過Apache Tika從各種類型的文檔中提取文本。此選項開啟也會嚴重影響性能,謹慎使用。
8.Request Data
請求數(shù)據(jù)。對于HTTP協(xié)議來說,是請求的message-body(不包括請求行與首部字段)
9.Ignore Status
通過將斷言的結(jié)果與現(xiàn)有的響應(yīng)狀態(tài)相結(jié)合來確定取樣器的總體成功。
當(dāng)選擇Ignore Status復(fù)選框時,將強制響應(yīng)狀態(tài)在計算斷言之前是成功的。
HTTP協(xié)議在返回4xx和5xx的狀態(tài)碼默認是不成功的,勾選此項可用于在執(zhí)行進一步檢查之前設(shè)置狀態(tài)成功。
請注意,這將具有清除任何以前的斷言失敗的效果,因此請確保只在第一個斷言上開啟此設(shè)置。
Pattern Matching Rules:
1.Contains
如果文本包含正則表達式模式,則為true
2.Matches
如果整個文本與正則表達式模式匹配,則為true
3.Equals
如果整個文本等于模式字符串(區(qū)分大小寫),則為true
4.Substring
如果文本包含模式字符串(區(qū)分大小寫),則為true
注意:
Contains和Matches模式支持Perl5類型的正則表達式;
Equals和Substring模式使用文本字符串,不支持正則表達式。
5.Not
對斷言結(jié)果進行否定。
6.Or
將多個測試模式以邏輯“或”組合起來。
Patterns to Test:
要測試的模式列表。每個模式都是單獨測試的。如果模式失敗,則不檢查其他模式,使用多個模式設(shè)置一個斷言與使用每個模式設(shè)置多個斷言之間沒有區(qū)別(假設(shè)其他選項相同)。
Custom failure message:
自定義斷言失敗信息。即設(shè)置“Assertion failure message”的值。
對請求做斷言
1.斷言請求首部字段
在“要測試的響應(yīng)字段"選擇“Request Headers”
2.斷言請求URL地址
分兩種情況討論:
1)若在“HTTP Request”中勾選了“Follow Redirects”,則斷言對象包含請求URL,與重定向Location首部返回的URL,重定向若有多次,則包含每次返回的URL;
2)若在“HTTP Request”中沒有勾選“Follow Redirects”,則斷言對象只針對請求URL。
對響應(yīng)做斷言
1.斷言響應(yīng)首部字段
在“Field to Test”選擇“Response Headers”
2.斷言響應(yīng)狀態(tài)碼
在“Field to Test”選擇“Response code”
3.斷言響應(yīng)原因短語
在“Field to Test”選擇“Response Message”
4.斷言響應(yīng)正文
在“Field to Test”選擇“Text Response”
多模式斷言
在“Patterns to Test”項中可以添加多個斷言模式進行測試,多個模式可以使用“與”,“或”以及“非”進行邏輯組合:
1.邏輯與(and)
多個模式之間默認以“與(and)”進行邏輯組合
2.邏輯或(or)
當(dāng)勾選了“Pattern Matching Rules”中的“Or”,則多個模式之間以“或(or)”進行邏輯組合
3.邏輯非(not)
當(dāng)勾選了“Pattern Matching Rules”中的“Not”,則將每個模式Not后以“and”或“or”組合
假設(shè)有模式p1,p2,p3,... ,pn(優(yōu)先級not > and > or)
1)僅勾選“Not”
則相當(dāng)于:(not p1) and (not p2) and (not p3) and
.. and (not pn)
2)勾選“Not”與“Or”
相當(dāng)于:(not p1) or (not p2) or (not p3) or ...
or (not pn)