JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据
JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试。我们的 API 返回结果为 JOSN数据格式。JOSN简介,JOSN介绍。
JSON 已经成为数据交换格式的事实标准:
1. Ajax 调用时的返回数据;
2. 在移动应用中,HTTP 调用时的返回数据;
3. REST Web Service 交换格式;
4. MongoDB 等 NO-SQL 数据库的数据存储格式;
5. ...
一定要安装 Json Path 插件?
- JSON 数据结构简单的情况
在JSON 数据结构简单的情况下,使用原生内置的Regular Expression Extractor(正则表达式)后置处理器来提取数据是可以自如应对的,不一定非要安装 Json Path 相关插件; - 使用正则表达式的一个优势在于 JMeter 安装时就内置了,不用额外安装;
- 创建和阅读正则表达式并不容易,随着 JSON 数据结构复杂度上升,正则表达式是难以理解的,其可维护性自然大打折扣;
安装 Json Path 相关的插件就是一个较好的解决 JSON 数据结构复杂度的方法。
了解 Json Path语法
对于熟悉 XPath 语法的人来说(XML 数值提取语法),使用 Json Path 解析 JSON 格式的响应数据比较方便;不过,即使你不熟悉 XPath 也没关系,来,马上了解 JOSN Path语法就可以了。
了解 jmeter-plugins.org
This project is an independent set of plugins for Apache JMeter, the popular Open-Source load and performance testing tool.
免费领取Python自动化学习资料 工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流
为 JMeter 定制插件,提供独立的插件集。完整的插件集列表 有六大类:
1. Standard Set
2. Extras Set
3. Extras with Libs Set
4. WebDriver Set
5. XMPP Set
6. Hadoop Set
本次我们要安装的 Json Path 就包含在 Extras with Libs Set 里面。
安装 Extras With Libs Set
Installation and Usage
Just copy the JAR file into JMeter's lib/ext directory.
Then you can start JMeter and add additional items to your Test Plan.
Java version 1.6 and JMeter 2.4 are required.
- JMeterPlugins-ExtrasLibs-1.4.0.zip 包
│ LICENSE
│ README
│
└─lib
│ asm-5.0.3.jar
│ commons-beanutils-1.8.3.jar
│ commons-lang-2.6.jar
│ commons-pool-1.6.jar
│ ezmorph-1.0.6.jar
│ jedis-2.2.1.jar
│ json-lib-2.4-jdk15.jar
│ json-path-2.1.0.jar
│ json-smart-2.2.jar
│ qpid-client-0.20.jar
│ qpid-common-0.20.jar
│ spring-core-2.5.6.jar
│ spring-jms-2.5.6.jar
│ xom-1.2.10.jar
│
└─ext
JMeterPlugins-ExtrasLibs.jar
- JMeter 基本目录
├─bin
├─docs
├─extras
├─lib
│ ├─ext
│ └─junit
├─licenses
└─printable_docs
- 将 Extras with Libs Set 解压到 JMeter 对应目录即可;
- 重启 JMeter;
目前在使用中还没发现什么问题。
使用Json Path Assertion检查返回值是否符合预期
在一个 [HTTP Request] 上加一个 [Json Path Assertion]
依据 [JSON Path 语法][JsonPath] 要求取值
使用 Post Processor:JSON Path Extractor 抽取变量值,供后续使用
Add Post Processor:JSON Path Extractor
Json Path Extractor 抽取变量值用于后期使用,每个 Extractor 只能抽取一个变量
- 从 JSON response 中提取数据(每个 Extractor 只能抽取一个变量);
- 存放到 passcode 变量中为后续使用;
- 如果没有找到,则变量 passcode 中会包含 “NO DEFAULT VALUE”(Default Value);
- 我们可以使用 ${passcode} 在后续元件中注入数据;
对照:使用 Regular Expression Extractor 一次提取多个数据
-
在一个请求下加一个 Regular Expression Extractor;
-
进行配置:
Reference Name: myVar
Regular Expression: {"succ":"(.+?)","passcode":"(.+?)"}
Template: $1$$2$
1)提取两个变量,使用 ${myVar_g1} 和 ${myVar_g2} 访问,加个 Debug Sampler 可以在 View Results Tree 查看;
2)即使使用 Regular Expression Extractor,也建议每个 Extractor 只提取一个变量值,直观有语义;Regular Expression Extractor 的配置
-
通过 View Results Tree 查看 Debug Sampler 的结果
通过 View Results Tree 查看 Debug Sampler 的结果
-
通过View Results Tree listener 内置的 Regex Tester 对正则表达式进行即时测试
通过 [View Results Tree] listener 内置的 Regex Tester 对正则表达式进行即时测试
使用 Listener:Assertion Results 以观察 Assertion 结果