JMeter中对于Json数据的处理方法

  • Post author:
  • Post category:其他




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

安装了正则表达式插件之后,可以按照固定的格式从字符串中提取数据,而本例中正则表达式如下所示:


“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


语言的灵活性可以进行进一步的开发。