jmeter查看结果报文_一种用Jmeter进行json+base64报文测试的方法

摘要:我们在接口测试过程中,可能会遇到一类报文,它是在json报文中嵌套了一部分base64编码数据,而这部分数据恰恰包含需要参数化的部分,因此必须对其进行重编码。对于我这样的代码手残党,以前只会使用base64工具,对其中的base64编码解码后,手工替换其中的参数部分,然后再用工具重新编成base64码,进行报文发送。

自从开始学习使用Jmeter之后,我就被它在性能测试和接口测试过程中表现出来的灵活性和扩展性所吸引。于是就在大神的指导下找到了一种使用Jmeter对base64编码部分通过解码+参数化+重新编码进行报文重构的方法。这个过程用到了两个Jmeter插件:Dummy Sampler和 JSON Extractor。

一、两个插件

Dummy Sampler

Dummy Sampler 即虚拟采样器,常用于在服务端尚未开发完毕时,模拟服务器响应。

Dummy Sampler 可通过Jmeter的Plugins Manager 进行下载安装,如图:

7f77f27c735ddb9982caf4d3a56e6fd5.png

下载完成后,即可在取样器中找到它:

35b42e5e0aaf93b7ca604e0e3be7e253.png

JSON Extractor

JSON Extractor即JSON提取器,可用于提取响应报文中的单个参数。

我们可以在后置处理器中找到它:

e8daadc789c419d61deb4307c7ab65bf.png

二、实现方法

第一步,解码:

首先在线程组中添加Dummy Sampler。在这里我们不是为了模拟服务响应,而只是借用它的输出进行base64解码。

参数如下:

7d81a3d6791e0100cf70577844eb8888.png

其中,Response Code和Response Message设定为默认值即可。为了不对交易响应时间产生较大影响,我们把Dummy Sampler的模拟连接时间(Connect Time)、延迟时间(Latency)、响应时间(Response Time)均设置为1ms。并在Response Data部分用base64Decode()函数进行解码,并保存在Content变量中。

第二步,提取:

接下来,添加JSON Extractor,将Dummy Sampler模拟输出中需要参数化的变量提取出来:

3062c65c2abc63f5a5ddb10dace54784.png

其中:Names of created Variables即保存变量名,本例中为ReqSeqNo。

JSON Path expressions即json 路径表达式,也就是Dummy Sampler输出中我们要提取的字段名。

Match Numbers即匹配数字,0代表随机,1代表第一个,-1代表所有。

Default Values即默认值。

Compute concatenation var(suffix_ALL):是否统计所有,即保存所有匹配到值。

第三步,替换:

之后,就是把真正的HTTP请求报文中,base64编码部分提取出的变量用参数进行替换,然后重新编码,组成新的报文了:

6f84825eb49570268f00b397585bd77d.png

这里我们用strReplace()函数将Content中ReqSeqNo变量对应的部分使用time()函数生成的字符串替换后,重新利用base64Encode()进行base64编码,这样一个新的报文就大功告成了。

如果你想看响应报文是否符合预期,还可以按照上面的说明如法炮制,把HTTP请求响应结果中的base64报文通过JSON Extractor提取,并使用另一个Dummy Sampler对其进行解码。

最后添加监听器组件,这样整个测试计划基本完成了:

8c58eaed943c9a6dcf0c7f1a0e5589c7.png

三、总结

通过上述方法,我不必再使用其它工具对base64编码进行手工解码、编码,而且参数也是自动生成,轻松又愉快。当然你也可能会说,使用Dummy Sampler 只是用来对base64进行解码,为什么不直接在HTTP请求中用公式进行Decode和 Encode呢?这个方法我确实也尝试了,但是最后出来的结果始终存在差错,手残党的悲哀啊。恰好我刚学习了两个新的插件Dummy Sampler和 JSON Extractor,于是就想出了这个像拼乐高一样的办法。学习的过程是循序渐进,在不断尝试的过程中灵活应用,往往也能有新的发现。希望随着自己对Jmeter学习的深入,能够想出更简单有趣的方法和大家交流。

版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Mac上搭建JMeter性能测试平台,需要进行以下步骤: 1. 安装Java JDK 首先需要在Mac上安装Java JDK,可以在Oracle官网上下载最新版本。 2. 安装JMeter 可以在JMeter官网上下载最新版本的JMeter,下载后解压缩即可。 3. 安装MySQL 可以在MySQL官网上下载最新版本的MySQL,安装完成后需要创建一个数据库用于存储JMeter执行的测试结果。 4. 安装InfluxDB 可以在InfluxDB官网上下载最新版本的InfluxDB,安装完成后需要创建一个数据库用于存储JMeter执行的测试结果。 5. 安装Grafana 可以在Grafana官网上下载最新版本的Grafana,安装完成后可以通过Web界面进行数据可视化。 6. 配置JMeter 需要在JMeter的bin目录下找到jmeter.properties文件,将以下配置项的值修改为相应的值: ``` # JMeter结果输出到InfluxDB jmeter.save.saveservice.output_format=influxdb jmeter.save.saveservice.hostname=<InfluxDB服务器IP> jmeter.save.saveservice.port=<InfluxDB服务器端口> jmeter.save.saveservice.db=<InfluxDB数据库名称> jmeter.save.saveservice.username=<InfluxDB用户名> jmeter.save.saveservice.password=<InfluxDB密码> # JMeter从MySQL加载数据 jmeter.save.saveservice.autoflush=true jmeter.save.saveservice.thread_counts=true jmeter.save.saveservice.sample_count=true jmeter.save.saveservice.time=true jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS jmeter.save.saveservice.label=true jmeter.save.saveservice.response_code=true jmeter.save.saveservice.response_data=false jmeter.save.saveservice.response_data.on_error=false jmeter.save.saveservice.bytes=true jmeter.save.saveservice.sent_bytes=true jmeter.save.saveservice.url=true jmeter.save.saveservice.filename=false jmeter.save.saveservice.hostname=true jmeter.save.saveservice.thread_name=true jmeter.save.saveservice.successful=true jmeter.save.saveservice.assertions=true jmeter.save.saveservice.latency=true jmeter.save.saveservice.connect_time=true jmeter.save.saveservice.sent_bytes=true jmeter.save.saveservice.idle_time=true jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS jmeter.save.saveservice.timezone=Asia/Shanghai jmeter.save.saveservice.jdbc.url=<MySQL数据库URL> jmeter.save.saveservice.jdbc.driver=com.mysql.jdbc.Driver jmeter.save.saveservice.jdbc.username=<MySQL用户名> jmeter.save.saveservice.jdbc.password=<MySQL密码> ``` 7. 执行测试计划 执行JMeter测试计划后,结果会被自动保存到InfluxDB中。 8. 可视化数据 在Grafana中添加InfluxDB数据源,选择保存的数据库,即可通过图表展示测试结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值