JMeter接口測試之斷言實現

2021-02-20 軟體測試面試匯總

這裡有愛,有分享,有工程師們的成長日記,點藍字「軟體測試面試匯總」進行關注,微信公眾號TestMadman

1 斷言是什麼

什麼是斷言?在接口測試中,我們預設接口響應結果中會出現一個片段,我們稱之為預期值,斷言會在接口調用後嘗試捕捉這個預期值,如果能捕捉到,則判定接口成功,否則判定接口為失敗。用過loadrunner的朋友一定記得檢查點這個概念,斷言和檢查點實質上是一樣的。

為什麼需要斷言?因為JMeter默認接口響應碼200即為成功:


其實,接口的業務並非成功。


為了甄別接口是否實現業務上的成功,我們便需要引入斷言。

2 斷言的實現

在取樣器上右鍵–添加–斷言,可以看到,JMeter提供了豐富的斷言實現(JMeter版本:5.1.1,下同)

2.1 響應斷言

這大概是最常用的斷言了。

創建方式:在線程組或者HTTP請求上右鍵–>添加–>斷言–>響應斷言,就創建了一個斷言:

關於斷言的作用域:在線程組上創建斷言,則該斷言對線程組下所有取樣器生效,而在取樣器上創建,則只對該取樣器生效。


一般情況下,我們用默認配置即可。各個項目也簡略解釋一下。

響應文本:接口的Response的全部數據

響應代碼:取樣器結果中的Response code,常見的有200(成功)、302(重定向)、404(不存在)、400(參數錯誤)、500(伺服器錯誤)等。但當我們要驗證404,501等http響應代碼時,需要勾選 ignore status,因為當http響應代碼為404、500時,JMeter會默認這個請求是失敗的。

響應信息:取樣器結果中的Response message

響應頭:響應數據的Response headers

請求頭:請求的Request headers

URL樣本:有跟隨重定向時,URL樣本包含了請求的URL和重定向的URL,否則只包含請求URL。

模式匹配規則(Pattern Matching Rules):即響應數據與預期值的對比方式。

1.包括(Contains):響應數據包含預期值(相當於String的contains方法),則判定接口成功。支持正則匹配。

2.匹配(Matches):用正則表達式匹配返回結果,且必須能匹配整個返回值,而不是返回值的一部分。

3.相等(Equals):響應數據與預期值完全相同才判定接口成功。不支持正則表達式。

4.字符串(Substring):與【包括】類似,但不支持正則匹配。

5.否(Not):取反,也就是前面【包括】等判定結果為true,斷言結果為false。反之,前面判定為false,斷言結果為true。

6.或者(Or):勾選此項後,可以設置多個預期值,只要有一項判定成功,則斷言判定成功。

測試模式(Patterns to test):預期值表達式,可以是正則表達式,也可以是字符串。可以通過【添加】按鈕添加一個或多個,有多個的話,不勾選【模式匹配規則】中的【或者】,則為併集模式,即全部匹配成功才斷言成功。

自定義失敗消息(Custom failure message):當判斷返回值為錯誤的時候,自定義的失敗消息會在斷言結果中顯示。

下面用看一個小例子。

請求百度:

響應數據:


在【百度一下】請求下添加響應斷言:


執行請求,查看結果樹:


結果被標紅,接口判定為失敗。可見,你預設的斷言決定了接口是否被判定成功。把上面斷言中的「百度兩下」改為「百度一下」,再次執行,則接口判定為成功。

2.2 JSON斷言

JSON斷言針對響應結果是applicaton/json格式的請求進行斷言。

在取樣器下右鍵–>添加–>斷言–>JSON斷言,就創建了一個JSON斷言,界面如下:

Assert JSON PATH exists:針對響應結果中特定欄位進行提取的路徑表達式。

Additionally assert value:附加斷言值,勾選此項後才能填寫Expected value。

Match as regular expression:作為正則表達式匹配。

Expected value:預期值,這個值將與Assert JSON PATH exists提取到的值對比,一致則判定接口成功。

下面照例進行一個實例演示。

首先,創建一個Beanshell取樣器模擬接口,返回JSON數據。

return "{\"code\":0,\"message\":\"操作成功\",\"data\":{\"student\":[{\"name\":\"zhangxu\",\"age\":18},{\"name\":\"zhoushuang\",\"age\":18},{\"name\":\"changhua\",\"age\":17}]}}";

在該取樣器下添加JSON斷言,照下圖寫入:

這裡解釋一下【JSON Path expression】的寫法,首先$.這部分是固定寫法,後面根據層級關係去逐級獲取數據。

1、$.data表示在JSON串以"data"為key獲取value,也就是{「student」:[{「name」:「zhangxu」,「age」:18},{「name」:「zhoushuang」,「age」:18},{「name」:「changhua」,「age」:17}]}。
2、$.data.student對應的是[{「name」:「zhangxu」,「age」:18},{「name」:「zhoushuang」,「age」:18},{「name」:「changhua」,「age」:17}],因此要通過索引定位到數組中的具體對象,也就是$.data.student[0]獲取到了{「name」:「zhangxu」,「age」:18}
3、$.data.student[0].name就定位到了「zhangxu」這個值。

運行腳本,察看結果樹顯示接口成功。

如果我們把Expected value改為"zhangxu2",再次運行,發現接口被判定失敗:

2.3 BeanShell斷言

這種斷言是應對複雜校驗的利器,為什麼這麼說呢?因為BeanShell斷言可以寫較複雜的邏輯判斷來對結果進行校驗。

還以2.2中的模擬接口為例,創建一個Beanshell斷言:

運行腳本,察看結果樹:


當然,這只是一個簡單的示例,更豐富的用法請見:JMeter BeanShell Sampler與JMeter BeanShell斷言

2.4 大小斷言&斷言持續時間

大小斷言:判斷響應結果選定部分的字節大小是否與預期的值相符。



斷言持續時間:判斷接口的響應時間是否小於等於設定值。


文章來源:https://blog.csdn.net/mu_wind/article/details/108204489

歡迎同學們掃描二維碼報名吧!

快,關注這個公眾號,一起漲姿勢~

IT測試人的自媒體

微信號:Tester006

QQ : 869120106


長按二維碼關注吧

一起成長,一起分享,希望能對您有所幫助,我們是TestMadman,期待您的關注。

相關焦點

  • JMeter安裝與接口測試入門
    >」進行關注,微信公眾號TestMadman前言點進來的朋友你們好,雖然我們素未謀面,但對知識同樣的渴求讓我們在網絡世界實現思想交匯!JMeter當初是為性能測試而生,與loadrunner形成競爭之勢,相對於loadrunner,JMeter在性能測試方面有自己的優點:JMeter開源,而loadrunner收費。JMeter輕量級,安裝包只有幾十兆,安裝簡便。loadrunner安裝包則有數個G,安裝繁瑣。JMeter有豐富的插件支持,擴展性非常強。
  • 全網獨家的 Jmeter 循環斷言
    前言 對於使用 jmeter 工具完成接口測試的測試工程師而言。在工作中,或者在面試中,都會遇到一個問題。 CSV 文檔做了一大筆測試數據後,怎麼去校驗這個結果呢?
  • Jmeter進行http接口測試,這一篇就搞定
    jmeter進行http接口測試的主要步驟(1.添加線程組    2.添加http請求     3.在http請求中寫入接口的URL,路徑,請求方式,參數     4.添加查看結果樹     5.調用接口,查看返回值)進行webservice測試的一般步驟
  • 用Groovy處理JMeter斷言和日誌
    本篇文章內容主要是自己在協助同事的時候一點點實踐,分享一下jmeter除BeanShell之外的另外一種腳本語言Groovy。本來想弄個斷言就好了,沒想到日誌模塊比較簡單,也就順手寫個Demo。總的來講,jmeter中Groovy語法兼容性一般,還是得老老實實按照Java的語法來寫比較穩妥,主要還是需要用jmeter自己的API,需要一點時間學習和實踐。序言Apache JMeter斷言是測試人員能夠設置標準的組件,這些標準確定將響應視為「通過」還是「失敗」。
  • 乾貨| JMeter接口測試實戰之參數化
    參數化如果需要測試另一種數據集合,需要修改請求、斷言等幾個地方腳本才能繼續使用,那麼參數化就是解決這個問題的一個辦法。 1.Jmeter引用變量:${變量名} 1.2 修改創建用戶的請求將請求中固定的參數值改成調用jmeter變量,結果如下  1.3 修改斷言判斷請求響應碼
  • 性能測試教程[7] jmeter接口自動化回歸測試
    SongTaste 用音樂傾聽彼此假設有一個登陸接口,要定期回歸測試以下幾個案例:1.正常登陸2.密碼沒填
  • 接口測試詳解JMeter學習(廣州中軟卓越)
    Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。 它可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、資料庫、FTP 伺服器, 等等。
  • Jmeter性能及自動化全集
    這篇博客,介紹下如何利用jmeter來測試dubbo接口,並進行性能測試。。。在jmeter中,有這樣一個插件,可以幫我們實現這個功能,這個插件就是:Stepping Thread Group 1、下載配置方法 Stepping Thread Group 閱讀全文jmeter(十九)HTTP屬性管理器摘要:jmeter是一個開源靈活的接口和性能測試工具,當然也能利用jmeter進行接口自動化測試。
  • 軟體測試之學習接口工具jmeter基礎使用及soapui的使用
    jmeter的基礎使用介紹 (jmeter更適合做http類型接口測試)http測試:進入jemeter-單擊測試計劃(可修改)-點擊添加-threads(users)-線程組(查看(線程組即模塊)添加各信息:注意:添加請求必須在新建線程組—添加—sampler 這裡添加,其他地方請求都無效依賴包:必須有一個插件才可以進行下一步的操作Eg: http註冊接口測試
  • 軟體測試之學習接口測試工具jemeter的參數化
    1.用jemeter測試soap類型接口(原理同http)先從soapui獲取URL地址,在jemeter發起soap請求,輸入獲取的地址,就可以察看結果樹,查看響應的結果重點:2、參數化(即批量測試)
  • jmeter單機最大負載_手把手教你用jmeter做壓力測試(詳圖)
    它可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、資料庫、FTP 伺服器, 等等。JMeter 可以用於對伺服器、網絡或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。另外,JMeter能夠對應用程式做功能/回歸測試,通過創建帶有斷言的腳本來驗證你的程序返回了你期望的結果。
  • 記一次jmeter壓測實戰總結
    >」進行關注,微信公眾號TestMadmanJmeter接口壓力測試學習總結一.創建測試用例Jmeter主界面:二.開始測試1.開始測試登錄成功後,獲取到token,對查詢接口進行接口調試,設置線程數為1,調試通過後,開始執行查詢接口的壓力測試,本次壓力測試線程數分別測試200,300,350,400,450
  • Jmeter生成壓力測試報告
    Jmeter生成壓力測試報告根據各大招聘網站上的需求來看,熟悉Jmeter做性能測試已經幾乎成為必要條件了。那麼今天在這個給大家安利一波。怎麼使用Jmeter生成壓力測試報告呢?條件準備:1、Jmeter3.2(推薦使用,比較穩定)2、JDK1.8(windows下安裝)3、已經寫好了接口腳本的測試計劃(jmx文件)
  • 接口&性能測試工具-JMeter環境部署
    , 按回車鍵顯示結果類似下圖所示, 即為 JDK 環境可用說明: JMeter 工具本身是免安裝的, 故此直接解壓下載好的文件即可解壓下載好的 apache-jmeter"環境變量" -> "系統變量" -> "新建"如下圖所示進行配置, 配置完成後, 點擊"確定"保存配置變量名: JMETER_HOME變量值: D:\apache-jmeter
  • itest(愛測試) 6.6.0 發布,新增拖拽生成接口測試斷言
    待接口測試幾輪迭代,比較完善後,就著手和CD/CI 打通的集成實現!30個更新詳情如下:18個功能增強:1:    接口測試工具中,首創拖拽方式生成斷言,對於不會寫代碼的測試人員來說,絕對是好消息,當然會寫代碼更好。
  • 初學者如何編寫Jmeter測試腳本?
    Jmeter的Sampler用來模擬向被測試系統發起請求的,Jmeter會記錄取樣的結果,也就是TPS、響應時間等性能指標。接下來就是使用Java請求進行一個接口測試。ext和junit目錄,否則無法調用相關jar包lib目錄下兩個兩個子目錄2.2 IDEA操作1、打開 File -> Project Structure (Ctrl + Shift + Alt + S)或者使用快捷鍵Project StructureModels添加依賴3.腳本編寫創建一個類並實現
  • Jmeter完整版中文操作手冊之四
    安裝目錄接口應該看到的像這樣一些東西(2.3.1版本):jakarta-jmeter-2.3.1jakarta-jmeter-2.3.1/binjakarta-jmeter-2.3.1/docsjakarta-jmeter-2.3.1/extrasjakarta-jmeter-2.3.1/lib/jakarta-jmeter-2.3.1
  • jmeter無法滿足敏捷理念怎麼辦,使用二次開發集中管理!
    apache jmeter是apache軟體基金會出品的一款用於接口測試,壓力測試的開源軟體,由於其免費開源,插件j自由擴展,跨平臺,所以理論上可以支持所有種類的接口測試。jmeter自身也已經提供了許多優秀的插件,極大地增強了jmeter的能力。
  • 接口測試的常考面試題+答案解析
    通常情況下,測試人員測試的接口主要就是web接口,而web接口又分為Web Service接口、Http接口和 RPC接口等等2、接口測試接口測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等以下是接口測試中常考的面試題目答案解析:1、請描述下
  • JMeter工具簡單介紹
    進入bin目錄運行jmeter.bat啟動jmeter   注意:打開的時候會有兩個窗口,JMeter的命令窗口和JMeter的圖形操作界面,不可以關閉命令窗口。2.  10、斷言(Assertions)斷言用於檢查測試中得到的相應數據等是否符合預期,斷言一般用來設置檢查點,用以保證性能測試過程中的數據交互是否與預期一致。 11、監聽器(Listener)這個監聽器可不是用來監聽系統資源的元件。