*Jmeter 性能测试(一)

  • 首先开发会给你一个接口文档、我们这边是做支付方面的,所以我们要求给下单支付接口做下压测。
  • 由于我们这边接口都是有加密参数的,所以都是直接在JAVA工程包里直接跑的,因为这次是做压测,所以我们要用上Jmeter这个工具来配合,Jmeter这个工具我就不做详细介绍了。
  • 然后我们打开Jmeter这个工具,打开Jmeter下载文件进入bin目录下双击jmeter.bat,即可打开Jmeter。
  • 打开Jmeter创建一个线程组,给他命名Test_Pressure(这个名字随便自己取)。
  • jemeter 压测设置参数 jmeter如何做压测_jemeter 压测设置参数

  • 在线程组下的Sampler添加http请求

jemeter 压测设置参数 jmeter如何做压测_性能测试_02

这时候就要根据所提供的接口来了,由于我们这边的接口是写在Java工程包里的,所以我们就要在工程包里面看了。首先在开始之前,我们这边从下单到完成支付,是由三个接口来完成的。附上接口数据,由于是公司内部数据,我打上了马赛克,能看懂就行。(一共有三个接口,1.发送下单接口获取Token,2.根据下单接口返回的Token去关联下一个接口去发送请求支付接口,3.再根据下单支付接口的订单状态去做回调,先知道有这么个回事,后面我会说清楚

获取TOKEN接口(图一)

jemeter 压测设置参数 jmeter如何做压测_jmeter_03


获取TOKEN接口(图二)

jemeter 压测设置参数 jmeter如何做压测_jmeter_04


获取TOKEN接口(图三)

jemeter 压测设置参数 jmeter如何做压测_jmeter_05


获取TOKEN接口(图四)

jemeter 压测设置参数 jmeter如何做压测_性能测试_06


这一串代码是动态聚合码支付获取token,根据开发所提供的代码我们先要通过第一个接口去获取TOKEN。

懂java的可能容易看的懂些,楼主也不是很懂java,但是天天接触这些东西,时间久了,开发写的这些还是能看懂的,哈哈哈哈,若有解释错误的,还麻烦留言指出来哦。

我们要进行的是对dmOrderToken()这个接口进行添加,那么先找到这个接口的URL,我们根据TOKEN接口(图三)的第77行代码显示:

HttpResponse response = HttpRequest.post(dmUrl).body(jsonParams,“application/json”).charset(“utf-8”).execute();
String result = response.body();
(不懂的看下方截图)

l

jemeter 压测设置参数 jmeter如何做压测_jar包_07


Ctrl+左键点击dmUr跳转到图一的32行

jemeter 压测设置参数 jmeter如何做压测_jmeter_08


这个时候我们已经知道了获取TOKEN的接口地址

然后我们可以根据代码上写的地址放到Jmeter的Http请求上面去(代码上怎么写的,就怎么填)

jemeter 压测设置参数 jmeter如何做压测_jemeter 压测设置参数_09


这个时候我们继续看接口代码

jemeter 压测设置参数 jmeter如何做压测_jemeter 压测设置参数_10


我们继续看到这行代码

HttpResponse response = HttpRequest.post(dmUrl).body(jsonParams, “application/json”).charset(“utf-8”).execute(); 说明用的是POST请求、请求数据格式是application/json

这个时候我们到Jmeter上去添加就好

jemeter 压测设置参数 jmeter如何做压测_jar包_11


这个时候我们添加一个HTTP请求默认值,为什么要在默认值这里添加呢,是为了后面有可能会用到,所以添加一个这样的默认值,具体怎么用后面会说到,先知道有这么个回事。

jemeter 压测设置参数 jmeter如何做压测_jmeter_12


jemeter 压测设置参数 jmeter如何做压测_性能测试_13


再添加一个查看结果树,结果树是从监听器下面添加的,不用解释也应该明白吧,就是用来监听的,这么说吧,就是用来看结果的,看运行的结果是个什么样的,这样说可能好理解一些。

jemeter 压测设置参数 jmeter如何做压测_jemeter 压测设置参数_14


这个时候我们来运行一下看接口有没有通,发现返回的响应参数为空,我们没有用上参数数据,我们再继续去看代码需要用到哪些参数。

jemeter 压测设置参数 jmeter如何做压测_jar包_15


继续可以看上方代码图片,参数太多我就不一一说了,还有一些代码逻辑,我们可以根据上面代码

把他写在JMETER里面去,然后去进行调用,这样就方便很多,这个时候我们添加一个

BeanShell PreProcessor(然后肯定有小伙伴问,为什么要添加一个beanshell preprocessor呢,他又是干嘛的呢?)为什么参数不直接添加到Body上面去呢,这个慢慢细讲哈。

BeanShell PreProcessor是一个前置处理器,它可以进行一些处理,比如执行一个算法并将结果存储到参数中。它只支持java语言。

在这里我提前说一个jar包导入的事,之前楼主在这里研究了半天,哈哈哈

如使用jar包,需要先在Eclipes把jar包Export出来,然后把导出的jar包提前放入jmeter安装目录的\lib\ext下,并重新启动jmeter。当然也可以在Jmeter测试计划中的Library,选择jar,导入Jmeter 保存后,重新启动下jmeter。(为什么要导入jar包,因为你在BeanShell PreProcessor的Script下写代码,会有包导入失败无效,因为Jmeter没有这个东西,Jmeter它本身找不到这个jar,所以他不知道。)下面附上截图流程

jemeter 压测设置参数 jmeter如何做压测_json_16


jemeter 压测设置参数 jmeter如何做压测_jmeter_17


jemeter 压测设置参数 jmeter如何做压测_json_18


然后就导出成功了,把导出的jar包放到jmeter安装目录的\lib\ext下就可以了。然后我们继续进入到Jmeter

打开BeanShell PreProcessor

Script

使用import来导入,import的路径就是在eclipse中import的路径

使用vars.get(“xxx”)来将jmeter中的参数的值获取到java中。

使用vars.put(“xxx”)来将java中的参数的值储存到jmeter中。这个的话我后面会说到

jemeter 压测设置参数 jmeter如何做压测_jmeter_19


jemeter 压测设置参数 jmeter如何做压测_性能测试_20


然后我们把里面所用到的代码写进去,具体怎么写进去我就不说了,这。。。。太多了,懂一点基础的可以直接把开发写的给复制进来,然后稍微修改一下就好了,你就把这些代码看作是body参数,后面会引用到的。

jemeter 压测设置参数 jmeter如何做压测_性能测试_21


jemeter 压测设置参数 jmeter如何做压测_jar包_22

String jsonParams = JSONUtil.toJsonStr(pubParamMap);
vars.put(“dmjsonParams”,jsonParams);

上面说了,这些都是作为参数去调用,把所有需要用到的参数全部集合在jsonParams上了,然后我们vars.put(“dmjsonParams”,jsonParams)这个意思就是说给jsonParams起了另外一个变量名,名为dmjsonParams 我们只需要把dmjsonParams传到Body上面去就可以调用Script的参数代码了。(前提是代码一定要写对哦,不然会报错,我第一次写的时候也报了很多错,一步一步爬得坑,慢慢爬上来了,这个我就不说了,自己去操作的时候碰到了就自行百度吧,还有jar包导入的问题,一般情况下按照我上面说的去导入不会有问题)

然后我们打开HTTP请求,下方点击Body Data

jemeter 压测设置参数 jmeter如何做压测_json_23

然后我们现在可以去运行一下 看可以不可以

jemeter 压测设置参数 jmeter如何做压测_jar包_24


OK 这样的话 我们在data里看到了token,这个token的获取方式有点怪啊,这个得问开发。然后我们再加一个响应断言吧,这样可以更好的判断错误

jemeter 压测设置参数 jmeter如何做压测_性能测试_25


jemeter 压测设置参数 jmeter如何做压测_json_26


好了,这样的话第一个接口就算是调通了。

说明:这还没到做性能阶段,只是把接口调通,(这才第一个接口)后面我会更新