天天看點

JMeter中對于Json資料的處理方法

無意間看到的一篇文章,對我這個初學者而言,對于Json資料的處理隻會使用正規表達式,然後看到這個圖文并茂的文章,對于笨拙的我來說,真心感覺有圖真是太棒啦!!!再次感謝原文部落客!

http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/

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安裝了正規表達式插件之後,可以按照固定的格式從字元串中提取資料,而本例中正規表達式如下所示:

使用了該表達式之後會傳回所有服從表達式的字元串,但是隻有一個表達式是我們所關注的。可以使用 1 <script type="math/tex" id="MathJax-Element-22">1</script>來作為模闆,而3則會傳回第三個資料。

JMeter中對于Json資料的處理方法

當偶爾需要對Json資料進行處理時,正規表達式是一個合适的選擇,它的一個優勢在于JMeter本身就内置了Json處理子產品。但是,閱讀處理正規表達式卻是比較複雜的,特别是對于某些複雜的Json資料。

JMeter JSON插件

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

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

在JMeter中,隻需要從PostProcessor菜單中打開JSON Path Extractor然後輸入變量名與預設值即可,如下所示:

JMeter中對于Json資料的處理方法

JSONPath表達式較短并且易于閱讀,能夠有效提高測試腳本的易維護性,該插件并不随着标準的JMeter一起安裝。

BeanShell Post Processor

最後一種方法即是借用了JMeter的對于BeanShell支援的特性,BeanShell是一個輕量級的面向Java的腳本語言。BeanShell Post Processor允許使用标準的Java文法來處理Json資料,使用方法如下圖所示:

JMeter中對于Json資料的處理方法

總結

本文列舉出了三種可用的從Json格式的傳回值中提取資料的方法,正規表達式對于簡單的Json格式的資料的快速标準化非常占優勢。而JsonPath插件可以用于建立能夠被維護修改的腳本,但是需要額外的插件安裝工作。而最後的帶JSON庫的BeanShell确實非常詳細并且依賴于Java語言的靈活性可以進行進一步的開發。