作为一名软件研发者,我们都知道Jmeter是一款强大的图形界面压力测试工具,但是你知道在JMeter中对Json数据的三种处理方法吗?如果不知道,那就由小编一一为你讲述吧。
Json作为一种在网络开发的数据交换格式,它的应用的越来越广泛,特别是Ajax与Restful的两种架构中。而Apache的JMeter也是比较受欢迎的压力测试工具之一,但它本身是没有提供对于Json数据的响应处理的。小编在本文中假设需要从HTTP的响应头中返回的Json格式的数据流中抽取某些特定的数据。
它的数据格式如下:
{
"name":"Simpsonsfamily",
"members":
[{"firstName":"Homer","lastName":"Simpson"},
{"firstName":"Marge","lastName":"Simpson"},
{"firstName":"Bart","lastName":"Simpson"},
{"firstName":"Lisa","lastName":"Simpson"},
{"firstName":"Maggie","lastName":"Simpson"}]
}
下面小编会使用不同的方法来进行数据的抽取工作。
1.正则表达式提取
JMeter在安装了正则表达式插件之后,可以按照固定的格式从字符串中提取数据,而本例中的正则表达式如下所示:
"firstName":"(.+?)"
使用了该表达式之后会返回所有服从表达式的字符串,但是只有一个表达式是我们所要关注的。可以使用$1$来作为模板,而3则会返回第三个数据。如图所示:
当偶尔需要对Json数据进行处理时,正则表达式是一个合适的选择,它的一个优势在于JMeter本身就内置了Json处理模块。但是,阅读处理正则表达式却是比较复杂的,特别是对于某些复杂的Json数据。
2.JMeterJSON插件
JMeterJSON插件是另一种处理Json数据的方法是使用JMeter的插件,该插件可以使用JSONPath来获取JSON数据中特定位置的数据。它类似于XML文件中的XPath,JSONPath可以使用简单的表达式来操作Json对象。JSONPathExtractor是一个开源,增加了post处理器的插件,可以将该插件的Lib文件拷贝到JMeter的lib目录下即可。
而上文中所提及的需要定位的数据可以使用如下的JSONPath进行描述:
$.members[2].firstName
在JMeter中,只需要从PostProcessor菜单中打开JSONPathExtractor然后输入变量名与默认值即可,如图所示:
JSONPath表达式较短并且易于阅读,能够有效提高测试脚本的易维护性,该插件并不随着标准的JMeter一起安装。
3.BeanShellPostProcessor
最后一种方法是BeanShellPostProcessor,它即是借用了JMeter的对于BeanShell支持的特性,BeanShell是一个轻量级的面向Java的脚本语言。BeanShellPostProcessor允许使用标准的Java语法来处理Json数据,使用方法如图所示:
总结
小编在本文中列举出了三种可用的从Json格式的返回值中提取数据的方法,正则表达式的处理方法对于简单的Json格式的数据的快速标准化非常占优势。而JsonPath插件可用于创建能够被维护修改的脚本,但就需要额外的插件用来安装工作。而最后的带JSON库的BeanShell确实非常详细并且可以依赖于Java语言的灵活性从而进行进一步的开发。
小编结语:
相信你看到这里,也已经知道了JMeter中对Json数据的三种处理方法了吧,希望能帮到你。当然,这只是小编的一些个人看法,仅供参考。
课课家会一直更新软件研发的文章,请继续关注我们的网站:课课家教育。谢谢!