1. 程式人生 > >第六篇:JMeter 斷言

第六篇:JMeter 斷言

sam string 根據 場景 目標 err lose 模糊匹配 epo

前言

在 jmeter 中斷言用於驗證服務器返回的數據是否滿足我們的要求。jmeter 提供了以下斷言類型:

技術分享圖片

下面我們主要對響應斷言、XPath Assertion、jp@gc - JSONPath Assertion 進行分享,這幾個斷言類型也是日常壓測過程中最常用的,對於其他的斷言類型,請大家去看官方文檔。jmeter 提供了多大十幾種斷言方式,但合理利用好常用的幾種斷言就足以在馳騁於實際的項目應用了。

1、響應斷言

響應斷言允許用戶通過添加模式字符串來比較驗證服務器返回的響應。例如對響應返回的狀態碼進行驗證,或是對響應返回的本文內容驗證等等。下面我們對響應斷言進行詳細的說明:

技術分享圖片

  • 名稱、註釋

  這裏根據你實際的需要填寫即可。

  • Apply to

  一般選擇 Main sample only 即可。如果一次發送多個請求,則需要根據實際斷言需要選擇其他選項了。(例如一個 ajax請求,會發送多個 GET 或 POST 時。)

  • 要測試的響應字段
  • 響應文本

  服務器響應文本,一般情況下,我們都是勾選改選項,用於驗證服務器返回值。

  • Document(text)

  通過 Apache Tika 從各種的文檔中提取的文本進行驗證,包括響應文本,pdf、word 等等各種格式。jmeter 會用Apache Tika 去解析服務器響應內容,耗內存、也耗時間,解析易失敗,盡量少用或不用。多用響應文本方式來進行斷言驗證

  • URL 樣本

  對請求的 url 進行斷言,如果請求沒有重定向(302),那麽該url 即為請求的 url;如果有重定向(切跟隨重定向),那麽url 則包含了請求 url 和重定向 url。

  • 響應代碼

  即 http 響應代碼,例如 200,404 等等,需要註意:由於 jmeter 默認情況下認為 4xx,5xx 時該請求失敗,所以在斷言這類響應代碼時,需要同時勾選 Ingore Status,才能正常去做斷言。

  • 響應信息

  即響應代碼對應的信息,例如 OK, Not Found 等等這類的。如下常見類似是響應信息:
  HTTP/1.1 200 Ok
  HTTP/1.1 302 Found
  Response Header : 響應頭信息,例如

  Server: Tengine Date: Thu, 12 Mar 2015 09:43:52 GMT
  Content-Type: text/html
  Content-Length: 260
  Connection: close
  Location: http://www.baidu.com/404.html


1. Response Headers
即 http 響應頭信息,主要用於斷言當響應頭帶有唯一或特定意義時。
2. Ingore Status請參見 4 響應代碼的使用說明。
3. 模式匹配規則
4. 包括: 指返回結果包含要測試的模式中指定的內容,支持正
則表達式
5. 匹配:(1)相當於 equals。返回值是固定的,可以以返回值做斷言,效果同 equals;(2)正則表達式匹配。用正則表達式來匹配返回結果,但必須全部匹配。即正則表達式必須能匹配整個返回值,而不是返回部分值,註意與包括模式的區別(包括是支持模糊匹配的)。
6. Equals:指返回結果與指定的測試模式完全一致。
7. Substring:與“包括”模式差不多,都是指返回結果包括指定的內容,但 Substring 不支持正則表達式。
8. 否:相當於取反。即如果上述斷言結果為 true,勾選“否”選項後,則最終斷言結果為 false。
註:在使用該斷言時,熟練掌握正則表達式是必備的能力。

XPath Assertion

如果服務器響應返回的是 xml 格式的內容,這時最佳的斷言驗證類型就是使用 XPath Assertion。

技術分享圖片

  • Apply to

一般選擇 Main sample only 即可。如果一次發送多個請求,則需要根據實際斷言需要選擇其他選項了。(例如一個 ajax請求,會發送多個 GET 或 POST 時。)

  • XML Parsing Options

Use Tidy(tolerant parser):使用 Tidy(容錯解析器),默認選擇 quiet
Quiet:不顯示
Report errors:錯誤報告
Show warnings:顯示錯誤
Use Namespaces:使用名稱空間
Validate XML:驗證 XML(文件包/數據)
Ignore Whitespace:忽略空格(允許你指定語法分析器可以忽略哪個空格,而哪個空格是重要的)
Fetch external DTDs:獲取外部 DTDs(一些 XML 元素具有屬性,屬性包含應用程序使用的信息,屬性僅在程序對元素進行讀、寫操作時,提供元素的額外信息,這時候需要在 DTDs中聲明)

  • Path Assertion

輸入框中寫入 xpath 斷言,點擊 Validate 驗證其正確性

  • True if nothing matches

確認都不匹配

jp@gc - - JSON Path Assertion

如果服務器響應返回的是 json 格式的內容,這時最佳的斷言驗證類型就是使用 jp@gc - JSON Path Assertion。

技術分享圖片

註: 默認下載的 jmeter 是不支持該方式的,需要安裝 json plugins,在選項-Plugins Manager-Available Plugins 找到 JSON Plugins 安裝好即可。下面對 json path assertion 進行說明

  • JSON Path

json 提取表達式,用於提取目標 json 串節點值。

  • Validate against expected value

勾選該選項,則驗證目標期望結果

  • Match as regular expression

勾選該選項,則期望值項,支持正則表達式

  • Expected Value

自定義期望值

  • Expect null

期望值為 null,勾選該選項,則會斷言結果為 null 的情況

  • Invert assertion(will fail if above condition met)

取反,如果上述兩種期望值斷言為 true,勾選該選項,則斷言結果為 fail;如果上述期望值斷言為 fail,勾選該選項,則斷言結果為 true。

總結

本次分享主要就響應斷言、XPath 斷言、JSON 斷言三種常用的斷言類型進行了說明,對於具體的示例,後續在實踐篇章會結合其他基礎功能一一進行分享,這三種斷言應該說滿足日常壓測過程斷言的大部分場景,大家需要深入理解其各個選項的含義。

第六篇:JMeter 斷言