性能測試-JMeter斷言之響應斷言精說

斷言用於驗證取樣器請求或對應的響應數據是否返回了期望的結果。可以是看成驗證測試是否預期的方法。

對於接口測試來說,就是測試Request/Response,斷言即可以針對Request進行,也可以針對Response進行。但大部分是對Response做斷言。

JMeter常見的斷言元件如下:
1.響應斷言

2.JSON Assertion

本章節,我們主要先來學習JMeter響應斷言.

配置項

Apply to:

1.在大多數情況下,只有主取樣器具有所有必需的響應數據。但是很多Web應用使用了Ajax,JQuery技術,單個請求可以在內部產生多個子請求,並且每個請求都有其對應的響應數據。

比如請求某一個頁面,頁面裏的js會調用其他請求。

2.在HTTP請求的高級設置的“Embedded Resources from HTMLFiles”項,勾選了“Retrieve All Embedded Resources”,在發送請求時,會解析相關的嵌入資源,也會導致取樣器可能產生多個子取樣器。

嵌入資源包括: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

響應正文。對於HTTP協議來說,是響應的message-body(不包括狀態行與首部字段)

2.Response Code

響應代碼。對於HTTP協議來說,是響應狀態碼,比如200、304、404等。

3.Response Message

響應消息。對於HTTP協議來說,是原因短語,比如OK、Not Modified、Not Found等。

4.Response Headers

響應首部字段。

5.Request Headers

請求首部字段。

6.URL Sampled

請求的URL。對於HTTP請求,若勾選了“Follow Redirects”,則包含重定向後的URL。

7.Document(text)

通過Apache Tika從各種類型的文檔中提取文本。此選項開啓也會嚴重影響性能,謹慎使用。

8.Request Data

請求數據。對於HTTP協議來說,是請求的message-body(不包括請求行與首部字段)

9.Ignore Status

通過將斷言的結果與現有的響應狀態相結合來確定取樣器的總體成功。

當選擇Ignore Status複選框時,將強制響應狀態在計算斷言之前是成功的。

HTTP協議在返回4xx和5xx的狀態碼默認是不成功的,勾選此項可用於在執行進一步檢查之前設置狀態成功。

請注意,這將具有清除任何以前的斷言失敗的效果,因此請確保只在第一個斷言上開啓此設置。

Pattern Matching Rules:

1.Contains

如果文本包含正則表達式模式,則爲true

2.Matches

如果整個文本與正則表達式模式匹配,則爲true

3.Equals

如果整個文本等於模式字符串(區分大小寫),則爲true

4.Substring

如果文本包含模式字符串(區分大小寫),則爲true

注意:

Contains和Matches模式支持Perl5類型的正則表達式;

Equals和Substring模式使用文本字符串,不支持正則表達式。

5.Not

對斷言結果進行否定。

6.Or

將多個測試模式以邏輯“或”組合起來。

Patterns to Test:

要測試的模式列表。每個模式都是單獨測試的。如果模式失敗,則不檢查其他模式,使用多個模式設置一個斷言與使用每個模式設置多個斷言之間沒有區別(假設其他選項相同)。

Custom failure message:

自定義斷言失敗信息。即設置“Assertion failure message”的值。

對請求做斷言

1.斷言請求首部字段

在“要測試的響應字段"選擇“Request Headers”

2.斷言請求URL地址

分兩種情況討論:

1)若在“HTTP Request”中勾選了“Follow Redirects”,則斷言對象包含請求URL,與重定向Location首部返回的URL,重定向若有多次,則包含每次返回的URL;

2)若在“HTTP Request”中沒有勾選“Follow Redirects”,則斷言對象只針對請求URL。

對響應做斷言

1.斷言響應首部字段

在“Field to Test”選擇“Response Headers”

2.斷言響應狀態碼

在“Field to Test”選擇“Response code”

3.斷言響應原因短語

在“Field to Test”選擇“Response Message”

4.斷言響應正文

在“Field to Test”選擇“Text Response”

多模式斷言

在“Patterns to Test”項中可以添加多個斷言模式進行測試,多個模式可以使用“與”,“或”以及“非”進行邏輯組合:

1.邏輯與(and)

多個模式之間默認以“與(and)”進行邏輯組合

2.邏輯或(or)

當勾選了“Pattern Matching Rules”中的“Or”,則多個模式之間以“或(or)”進行邏輯組合

3.邏輯非(not)

當勾選了“Pattern Matching Rules”中的“Not”,則將每個模式Not後以“and”或“or”組合

假設有模式p1,p2,p3,... ,pn(優先級not > and > or)

1)僅勾選“Not”

則相當於:(not p1) and (not p2) and (not p3) and

.. and (not pn)

2)勾選“Not”與“Or”

相當於:(not p1) or (not p2) or (not p3) or ...

or (not pn)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章