Parsing JSON responses with JMeter

What is JSON


JSON is becoming more and more important as a data exchange format, especially in Ajax web frameworks and RESTful web services. Apache JMeter, which is a very popular tool to perform load tests for web applications, does not come with native support to handle HTTP responses with JSON bodies. This post shows different possibilities how to deal with JSON responses in JMeter.

Task


Let’s assume the task is to extract a specific value from an HTTP response body, containing data in JSON format (e.g. for validation or further processing in the JMeter test script).As an example, the response body consists of the following JSON snippet:

{
   "name":"Simpsons family",
   "members":[
                {"firstName":"Homer", "lastName":"Simpson"},
                {"firstName":"Marge", "lastName":"Simpson"},
                {"firstName":"Bart", "lastName":"Simpson"},
                {"firstName":"Lisa", "lastName":"Simpson"},
                {"firstName":"Maggie", "lastName":"Simpson"}
            ]
}

I’ll demonstrate the different techniques with the task to extract the first name of theinfamous oldest son of the Simpson family, which is the third element in the members
array.

Regular Expression Extractor


With each JMeter installation comes the Regular Expression Extractor which allows to extract data from a String, using the notorious regular expressions.
In our example, the expression

"firstName":"(.+?)"

returns the values of all firstName attributes. Only one attribute is interesting to us (the first name), so $1$ can be used as a template. Match No. 3 returns the third match of the expression which is the first name of the third element of the members array:


Regular expressions are a valid choice for occasional parsing of JSON. An advantage is also that it is a default feature of every JMeter installation. However creating and reading regular expressions requires some practice, and they get complicated very soon when it comes to more complex JSON constructs.

JMeter JSON plug-in


Another way is to install a JMeter plug-in which allows to use JSONPath to access specific elements in JSON. Similar to XPath for XML, JSONPath offers a simple expression syntax to navigate through JSON objects. The JSON Path Extractor is an open source plug-in which adds a post processor for JSON responses to JMeter. For installation, the JAR files of the plug-in simply have to be copied to the lib
folder of the JMeter installation folder.
The attribute in need can be located using the following JSONPath expression:

$.members[2].firstName

In JMeter, simply insert a JSON Path Extractor from the Post-Processors menu and enter variable name, JSONPath expression and default value:


JSONPath expressions are short and easy to read, improving considerably the maintainability of the test script. They do not come with a standard JMeter installation but have to be installed separately. One small drawback is the forced bundling of the plug-in with other plug-ins, summing up to more than 5 MB of JARs to be installed.

BeanShell Post Processor with external JSON library


Another powerful feature of JMeter is its support for the BeanShell which is a scripting language for Java. The BeanShell Post Processor allows to access the JSON response body as a String. For practical use however, the standard String operations offered by Java are too cumbersome to use for JSON parsing.
Fortunately it is possible to add external Java libraries to JMeter which (since BeanShell is a supplement on top of Java) can be used from within the BeanShell scripts. Simply put a JAR file containing your favorite Java JSON Parser into the lib
folder of the JMeter installation directory and restart JMeter.
In our example, I added Ralf Sternberg’s slim JSON parser for Java to JMeter and afterwards used its classes from within the BeanShell:


The BeanShell is very powerful since it offers the full capabilities of the Java world. To parse JSON, installation of additional libraries is highly recommended. In comparison with the JSONPath expression, extracting data with the BeanShell is quite verbose. It’s the best choice however when additional, more complex operations have to be performed after extraction of the data.

Conclusion


This post lined out three possibilities to extract data from JSON response bodies. Regular expressions are excellent for quick prototyping and simple JSON constructs, or if you want to have a life-long job guarantee. The JSONPath extractor plug-in allows to create maintainable test scripts due to its simplicity and the shortness of the expressions, but requires additional installation steps. So does the BeanShell with external JSON library, which tends to be quite verbose but offers the full flexibility of the Java language for further processing of the data.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的閱讀 13,551評論 5 6
  • 經歷了一次又一次的欺騙和背叛,我已經心如死灰。其實也是我一直抱有幻想,不想去相信十幾年相伴的身邊人其實我真的沒有看...
    出發MM閱讀 258評論 0 0
  • 最舒適的老歌 是你把著搖籃 輕柔的月光彌漫 夢鄉里 我聲喃喃 最舒適的老歌 是你扶著欄桿 黃昏的夕陽還在打鬧 ...
    壟上行云閱讀 276評論 5 1
  • 文/卡蘭諾 01 古人云:“做官當做執金吾,娶妻當娶陰麗華。” 可見陰麗華是典型美女加賢妻的代表人物,那么陰麗華到...
    卡蘭諾閱讀 1,776評論 27 31
  • 我的朋友少,大部分人都被我自動屏蔽啦,留下來的心中還有些溫情在。姑娘的心氣都高,很正常啊!我的心氣也高啊!既然當啦...
    兔子1235閱讀 421評論 0 0