在 http Load Testing 中。json 数据的提交是个让人头疼的问题。本文具体介绍怎样进行 JMeter 的 json 測试提交,以及怎样将其參数化。
        Step 1 http json 请求採样器的录制
        这个工具非常多,能够使用 JMeter 代理录制。也能够使用 Badboy。

该採样器录制好以后例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVmb25kcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="录制好採样器" />
        Step 2 为该採样器加入 HTTP 信息管理器
        鼠标右击该採样器。右键菜单选择 "加入" -> 配置元件 -> HTTP 信息头管理器,然后信息头加入一条名称为 Content-Type。值为 application/json 就可以:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVmb25kcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="HTTP信息头管理器" />
        加入好 HTTP 信息管理器之后,选中该採样器,编辑其 Content encoding 为 UTF-8:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVmb25kcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="HTTP请求的content encoding设置" />
        Step 3 为该採样器加入响应断言
        比方请求返还的 json 串里,"status":0 代表处理成功,status 值为其它表示各种处理失败。那么鼠标右击该採样器,右键菜单选择 "加入" -> 断言 -> 响应断言。要測试的响应字段选中 "响应文本",模式匹配规则选中 "Substring",要測试的模式加入并编辑其内容为 "status":0。

        Step 4 编辑採样器的 json 格式
        选中该採样器,Parameters 叶项里复制该 json 串,然后点击 Body Data 叶项,粘贴该 json 串于当中的输入域中(关于 json 串的提取,能够使用 Badboy 自己录制的,也能够使用 Chrome 浏览器自带工具 "JavaScript 控制台 - Network" 进行捕捉)。最后调整 json 数据的展现格式例如以下图所看到的:

        这时能够进行 http json 提交了,可是数据还都是写死的。那么怎么样把这些 json 数据參数化呢,就像其它非 json 提交的採样器一样?
        Step 5 使用函数将 http json 数据參数化
        像其它採样器一样使用函数助手生成一个引用字符串,比方 ${__Random(0,9,random_num_0_9)},它的作用是随机生成 0 - 9 之间的一个数字。
        然后编辑 Body Data 里的 json 串里须要參数化的地方。使用 ${__Random(0,9,random_num_0_9)} 覆盖须要參数化的部分:

        Step 6 使用 CSV Data Set Config 将 json 数据參数化
        右键单击 Thread Group,右键菜单选择 "加入" -> 配置元件 -> CSV Data Set Config。Filename 输入 e:/defonds/work/20141105/json.txt(要使用绝对路径),Variable Names 输入 cityCode,cityName,subCategoryCode,subCategoryName。编辑 e:/defonds/work/20141105/json.txt 内容例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVmb25kcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="json.txt内容" />
        最后编辑 Body Data 里的 json 串里须要參数化的地方。使用 ${cityCode} 等參数覆盖须要參数化的部分:

        这时候你就能够使用參数化的 json 串进行压力測试啦:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVmb25kcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="能够进行压力測试了" />
        參考资料

JMeter 压力測试使用函数和 CSV 文件參数化 json 数据的更多相关文章

  1. 站点系统压力測试Jmeter+Badboy

    近期项目须要压力測试,因此搜了几款试用,首选的是LoadRunner这款大名鼎鼎的測试软件: LoadRunner11 下载请猛戳这里 传送门LoadRunner破解文件 下载请猛戳这里 传送门Loa ...

  2. 学习使用Jmeter做压力測试(一)--压力測试基本概念

    一.性能測试的概念         性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...

  3. 怎样使用 Apache ab 以及 OneAPM 进行压力測试?

    下一个 release 准备小长假后就要 go-live .全部的測试 case 都 cover 过了.但还未进行过压力測试,有点不放心,刚好过节期间家人都回家去了,假期最终能够抽点时间压測一把. A ...

  4. MySQL Study之--MySQL压力測试工具mysqlslap

    MySQL Study之--MySQL压力測试工具mysqlslap 一.Mysqlslap介绍     mysqlslap是MySQL5.1之后自带的benchmark基准測试工具,类似Apache ...

  5. Android开发之按键、触摸屏和手势输入专业压力測试方法

    按键输入.触摸屏输入和手势笔画输入等功能是Android开发的基本功能.其稳定性和健壮性对移动应用系统开发很重要.按键.触摸屏和手势输入专业压力測试方法能够使用Monkey,相应用程序进行压力測试,检 ...

  6. php性能优化(一)压力測试工具篇

    ab使用 Apache附带的压力測试工具ab,很easy使用,而且全然能够摸你各种条件对Webserver发起測试请求.ab能够直接在Webserver本地发起測试请求.这对于须要了解server的处 ...

  7. .Net之路(十五)图解LoadRunner压力測试

    在项目编码阶段结束后,就须要进行软件測试. 成为软件开发过程中一个不可缺少的环节.而自己主动化測试也是将逐步取代人工繁杂的測试.压力測试就是软件測试对软件性能评估的一个方面,以下就简介我在使用load ...

  8. ubuntu 14.04 LTS 安装webbentch压力測试工具

    近期在做 压力測试工具,除了apache的ab測试工具外,发现webbentch工具也不错,这里简介下这两个工具. 一.webbentch安装: wget http://blog.s135.com/s ...

  9. CentOS6.5 64位站点压力測试工具webbench

    在Apache中有自带的ab命令能够測试服务的压力,而nginx没有自带的命令,必需要採用第三方软件来測试.今天就简介一下webbench对nginx的压力測试,压力測试是对系统管理员和运维人员必须的 ...

随机推荐

  1. 28、editText只输入英文字母和'-',用于授权码输入

    InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence source, i ...

  2. python 学习分享-文件操作篇

    文件操作 f_open=open('*.txt','r')#以只读的方式(r)打开*.txt文件(需要与py文件在同一目录下,如果不同目录,需写全路径) f_open.close()#关闭文件 打开文 ...

  3. 缓存淘汰算法之LRU实现

    Java中最简单的LRU算法实现,就是利用 LinkedHashMap,覆写其中的removeEldestEntry(Map.Entry)方法即可 如果你去看LinkedHashMap的源码可知,LR ...

  4. javascript学习笔记 - 引用类型 单体内置对象

    七 单体内置对象 1.Global对象 不属于任何对象的属性和方法,都归于它.全局作用域中定义的变量.函数,都属于Global对象 1.1 URI编码  encodeURI <=>deco ...

  5. 机器学习实战之AdaBoost算法

    一,引言 前面几章的介绍了几种分类算法,当然各有优缺.如果将这些不同的分类器组合起来,就构成了我们今天要介绍的集成方法或者说元算法.集成方法有多种形式:可以使多种算法的集成,也可以是一种算法在不同设置 ...

  6. Goal Oriented Action Planning for a Smarter AI

    Goal Oriented Action Planning for a Smarter AI by Brent Owens23 Apr 2014 Goal Oriented Action Planni ...

  7. java异常处理及400,404,500错误处理

        java代码中经常碰到各种需要处理异常的时候,比如什么IOException  SQLException  NullPointException等等,在开发web项目中,遇到异常,我现在做的就 ...

  8. iOS学习笔记48-Swift(八)反射

    一.Swift反射 所谓反射就是可以动态获取类型.成员信息,在运行时可以调用方法.属性等行为的特性. 在使用OC开发时很少强调其反射概念,因为OC的Runtime要比其他语言中的反射强大的多.不过在S ...

  9. Caused by: java.io.FileNotFoundException: class path resource

    异常: java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.c ...

  10. JSR310 时间类型的相互转换

    参数申明: final Date date = new Date(); final Timestamp timestamp = new Timestamp(date.getTime()); final ...