JMeter中返回Json數據的處理方法


Json 作為一種數據交換格式在網絡開發,特別是 Ajax 與 Restful 架構中應用的越來越廣泛。而 Apache 的 JMeter 也是較受歡迎的壓力測試工具之一,但是它本身沒有提供對於 Json 數據的響應處理。本文中假設需要從 HTTP 的響應頭中返回的 Json 格式的數據流中抽取某些特定的數據,數據格式如下:

{

   "name":"Simpsons family",

   "members":[

                {"firstName":"Homer", "lastName":"Simpson"},

                {"firstName":"Marge", "lastName":"Simpson"},

                {"firstName":"Bart", "lastName":"Simpson"},

                {"firstName":"Lisa", "lastName":"Simpson"},

                {"firstName":"Maggie", "lastName":"Simpson"}

            ]

}

下面我們使用不同的方法來進行數據的抽取工作:

正則表達式提取

JMeter 安裝了正則表達式插件之后,可以按照固定的格式從字符串中提取數據,而本例中正則表達式如下所示:

"firstName":"(.+?)"

使用了該表達式之后會返回所有服從表達式的字符串,但是只有一個表達式是我們所關注的。可以使用$1$ 來作為模板,而 3 則會返回第三個數據。

 當偶爾需要對Json數據進行處理時,正則表達式是一個合適的選擇,它的一個優勢在於JMeter本身就內置了Json處理模塊。但是,閱讀處理正則表達式卻是比較復雜的,特別是對於某些復雜的Json數據。

JMeter JSON 插件

另一種處理 Json 數據的方法是使用 JMeter 的插件,該插件可以使用 JSONPath 來獲取 JSON 數據中特定位置的數據。類似於 XML 文件中的 XPath , JSONPath 可以使用簡單的表達式來操作 Json 對象。 JSON Path Extractor 是一個開源的增加了 post處理器的插件,可以將該插件的 Lib 文件拷貝到 JMeter 的 lib 目錄下即可。

而上文中提及的需要定位的數據可以使用如下的JSONPath 進行描述:

$.members[2].firstName

 JMeter 中,只需要從 PostProcessor 菜單中打開 JSON Path Extractor 然后輸入變量名與默認值即可,如下所示:

 

JSONPath 表達式較短並且易於閱讀,能夠有效提高測試腳本的易維護性,該插件並不隨着標准的 JMeter 一起安裝。

BeanShell Post Processor

最后一種方法即是借用了 JMeter 的對於 BeanShell 支持的特性, BeanShell 是一個輕量級的面向 Java 的腳本語言。 BeanShell Post Processor 允許使用標准的 Java 語法來處理 Json 數據,使用方法如下圖所示:

 

總結

本文列舉出了三種可用的從 Json 格式的返回值中提取數據的方法,正則表達式對於簡單的 Json 格式的數據的快速標准化非常占優勢。而 JsonPath 插件可以用於創建能夠被維護修改的腳本,但是需要額外的插件安裝工作。而最后的帶 JSON 庫的BeanShell 確實非常詳細並且依賴於 Java 語言的靈活性可以進行進一步的開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM