JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)

JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试。我们的 API 返回结果为 JSON 数据格式。JSON 简介JSON 教程

JSON 已经成为数据交换格式的事实标准:
1. Ajax 调用时的返回数据;
2. 在移动应用中,HTTP 调用时的返回数据;
3. REST webservice 交换格式;
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 也没关系,来,马上了解 Json Path 语法就可以了。

了解 jmeter-plugins.org

This project is an independent set of plugins for Apache JMeter, the popular Open-Source load and performance testing tool.

为 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.

Extras With Libs Set 这个插件集,目前最新 JMeterPlugins-ExtrasLibs-1.4.0.zip

  • 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 语法 要求取值

使用 Post Processor:JSON Path Extractor 抽取变量值,供后续使用


Add Post Processor:JSON Path Extractor

Json Path Extractor 抽取变量值用于后期使用,每个 Extractor 只能抽取一个变量
  1. 从 JSON response 中提取数据(每个 Extractor 只能抽取一个变量);
  2. 存放到 passcode 变量中为后续使用;
  3. 如果没有找到,则变量 passcode 中会包含 “NO DEFAULT VALUE”(Default Value);
  4. 我们可以使用 ${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 结果



 
posted on 2016-12-09 13:05  清明-心若淡定  阅读(786)  评论(0编辑  收藏  举报