讓我們來看看使用采樣器的TestSteps(包括request的TestStep)的Assertion功能如何驗證TestStep收到傳入的響應或請求。在我們深入了解可用的斷言之前,讓我們快速概述一下。
斷言用於在執行期間驗證TestStep接收的消息,通常通過將消息(或整個消息)的部分與某些預期值進行比較。任何數量的斷言都可以添加到采樣器TestStep中,每個斷言都會驗證響應內容的一些不同方面。在采樣器TestStep執行后,其所有斷言將應用於接收到的響應,如果任何一個斷言TestStep在TestCase視圖中被標記為失敗,並且相應的FAILED條目顯示在測試執行日志中。

這里我們可以看到“測試請求 - 登錄”TestStep已經失敗,在底部的TestCase運行日志中還會顯示有關實際斷言失敗的詳細信息; “took 1023 ms”表示“SLA”斷言失敗,即響應太慢。
1. 管理斷言
斷言始終顯示在包含TestSteps編輯器窗口底部的選項卡中。

在上面的截圖中,您可以看到添加到SOAP Request TestStep中的3個斷言,並且它們都failed。
在斷言之上的工具欄允許您根據需要添加,配置,刪除,移動和克隆斷言,並且用於斷言的右鍵單擊彈出菜單包含類似的操作(可以在屏幕截圖中看到)。雙擊斷言會彈出其配置對話框(如果可用)。

該對話框將包含可用於當前類型采樣器的斷言映射(見下文),按OK將添加斷言並打開其配置對話框。
2. 斷言類別
斷言分為幾個類別,以便於管理。
2.1. Property Content
- Contains - 在屬性值中搜索字符串是否存在,支持正則表達式。適用於任何。
- Message Content Assertion - 允許XML消息的復雜內容驗證。適用於包含XML的任何屬性。
- Not Contains - 不包含 - 搜索屬性值中不存在字符串,支持正則表達式。適用於任何。
- XPath Match - 使用XPath表達式從目標屬性中選擇內容,並將結果與期望值進行比較。適用於包含XML的任何屬性。
- XQuery Math - 使用XQuery表達式從目標屬性中選擇內容,並將結果與期望值進行比較。適用於包含XML的任何屬性。
2.1.1. Compliance, Status and Standards
- HTTP Download all resource - 下載所有資源稱為HTML文檔(圖像,腳本等),並驗證它們是否可用。適用於包含HTML的任何屬性。
- Invalid HTTP Status Codes - 檢查目標TestStep是否收到HTTP結果,狀態碼不在定義的代碼列表中。適用於接收HTTP消息的任何TestStep
- Not SOAP Fault - validates that the last received message is not a SOAP Fault. Applicable to SOAP TestSteps.
- Schema Compliance - validates that the last received message is compliant with the associated WSDL or WADL schema definition. Applicable to SOAP and REST TestSteps. The schema definition URL supports Property Expansions (e.g. ${#System#my.wsdl.endpoint}/services/PortType?wsdl ).
- SOAP Fault - validates that the last received message is a SOAP Fault. Applicable to SOAP TestSteps SOAP Request - validates that the last received request is a valid SOAP Request. Applicable to MockResponse TestSteps only.
- SOAP Response - validates that the last received response is a valid SOAP Response. Applicable to SOAP TestRequest Steps only.
- Valid HTTP Status Codes - 檢查目標TestStep是否在定義的代碼列表中收到帶有狀態代碼的HTTP結果。適用於接收HTTP消息的任何TestStep。
- WS-Addressing Request - validates that the last received request contains valid WS-Addressing Headers. Applicable to MockResponse TestSteps only.
- WS-Addressing Response - validates that the last received response contains valid WS-Addressing Headers. Applicable to SOAP TestRequest Steps only.
- WS-Security Status - 驗證最后收到的消息是否包含有效的WS-Security標頭。適用於SOAP TestSteps。
2.1.1.1. Script
- Script Assertion - 運行自定義腳本來執行任意驗證。僅適用於測試步驟(不能用到屬性)。
2.1.1.2. SLA
- Response SLA - 驗證最后收到的響應時間是否在定義的限制內。適用於發送請求和接收響應的腳本TestSteps和TestSteps。
2.1.1.3. JMS
- JMS Status - 驗證該目標步步測試的JMS請求成功執行。適用於要求TestSteps與JMS端點。
2.1.1.4. JDBC
- JDBC Status - 驗證目標TestStep的JDBC語句是否成功執行。僅適用於JDBC TestSteps。
- JDBC Timeout - 驗證目標TestStep的JDBC語句是否不會超過指定的持續時間。僅適用於JDBC TestSteps。
2.1.1.5. Security
- Sensitive Information Exposure - 檢查上一次接收到的消息是否不會公開有關目標系統的敏感信息。適用於REST,SOAP和HTTP TestSteps。
3. Common Assertions
常見的teststep斷言是:
- Contains
- Not Contains
- Reponse SLA
- XPath Match
- XQuery match
- Script
3.1. The Contains Assertion
該斷言檢查接收到的響應或請求消息中是否存在某些文本,其配置對話框如下:

截圖中顯示的示例指定了要驗證的消息的整個內容中的字符串“SessionID”的正則表達式檢查
。 內容支持屬性擴展。
3.2. The Not Contains Assertion
包含斷言的對應物;這個檢查在斷言的消息中不存在指定的內容。配置對話框與上述相同:

這里的截圖中的例子只是檢查整個響應中“Error”不存在。
3.3. The Response SLA Assertion
此聲明驗證響應時間在指定的值內,否則斷言將失敗。配置對話框是一個簡單的對話框:

屬性擴展支持在指定的值中,允許您通過某些外部機制(如果需要)來控制斷言限制。
