批量轨迹(缓存轨迹)上传并发测试(jmeter)

项目背景

这次测试的是外海项目的接口,我们的轨迹上传走是的2条不通的通道,一个是MQTT协议(实时上传,付费通道),一个是HTTP协议(断网时缓存下来的轨迹在联网后上传,免费通道)。目前先搞定的是HTT协议,固先过程记录下来,防止自己也忘啦

测试结构

因为我们上传轨迹需要先绑定设备,才能上传。但因为我们的账号有个唯一标识码(相当于身份证),所以要请求到这个标识码才能上传轨迹。所以请求接口顺序为:绑定设备→请求服务器获取账号唯一标识码→上传轨迹。

EXCEL造数据

      因为我们要模拟不同的用户上传,所以先用excel根据API接口文档格式按按绑定设备要求传入“imei(手机标识))、mac(车机唯一标识)参数”,先造些数据然后导出.csv文本格式等待导入使用(为了方便测试脚本构建后看下是否能执行通,数据可先弄少一下,脚本能够正常执行,再按照你们的业务场景需求去造用户数,一般先从从少的往上加:如造50个用户、再造100个、依次往上加)。

这是整个测试接口请求的顺序

1:HTTP消息头管理器

      因为我们的HTTP请求需要有请求头,固先添加请求头,请求的类型视服务器需要的类型上传,此处我们需要上传的是:content-type,值为application/json,Accept,值为*/*(如果不知道服务器需要上传的是什么类型,问下写这个业务的开发同事)

2:HTTP请求默认值

因此次测试的接口有多个,共用的一些信息是相同的,所以为了简化脚本固添加了一个HTTP请求默认值:

此时在线程组→配置原件→CSV文件设置,读取配置的上传文件(为文章开始造的.csv文本)

3:CSV数据文件上传

4:【绑定设备接口】

5:设备号接口调用接口生成的校验码

6:正则表达式提取器

7:缓存轨迹上传

此处测试遇到的一个坑是:

上传压缩的数据时,jmeter自动去掉了压缩数据里面的一个转义符,所以我们再在上面添加个转义符再上传(上传数据报错时,我们可以根据上传到服务器的数据来排查是否上传的数据报错)

原压缩数据:

"data": "\u001f\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000­Á\rÀ0\b\u0003\u0017¢M Àn\u0019¾\"j;AN²?'\u001dÝi°\u0019\u0004 3)«r¾¸\\T\u001dHÃ\n\u0006Dû¾±+Ì;Û\/\u001emÖùfl¿\u001eúĶYü\u0000\u0000\u0000"

8:此时,我们的测试脚本结构构件完成,可以先添加个测试结果看下请求是否成功。但因为我们要模拟大量用户请求数据,为了在请求接口时不消耗计算机大量资源,所以使用命令行(即非GUI模式)来进行请求接口(jemter官方文档也说了不要使用GUI模式请求)。

备注一(查看结果的错误日志需要做出配置的地方。):

估计jmeter为了减轻客户机负担,在请求时默认没把请求信息和响应信息保存,为了我们导出来的测试结果可以查看请求信息和响应数据,我们需要先需要做出如下配置:

修改bin目录下的user.properties文件,追加配置:

jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true

修改bin 目录下的jmeter.properties

jmeter.save.saveservice.response_data=true

jmeter.save.saveservice.samplerData=true

建议做性能测试还是不要开这些配置,可能是因为写入这些信息页会消耗计算机一部分性能,感兴趣的话大家也一起去查下资料吧

 

备注二(查看结果的请求响应不是乱码需要配置的地方。):

正常来说在请求上面编码方式填写为:UTF-8就可以,但发现试过了很多次,这里修改并不生效,如下2种方法可以参考:

1修改jmeterbin目录下的jmeter.properties文件,查找关键字“ISO”,出来结果后,找到:

#sampleresult.default.encoding=ISO-8859-1(默认使用的的是ISO-8859-1,将它改为:UTF-8),切记要将前面的注释“#”去掉,保存后重启jmeter再进行测试

2jmeter线程组下添加:后置处理器→BeanShell PostProcessor→在“Script”添加代码:prev.setDataEncoding("utf-8"),即可解决!这也是我最喜欢的一种方法,通常我不用前面2种,直接用这个方法

 

10:测试完成之后,我们再次打开这个脚本,此时如果需要只查看结果的话,可以直接添加聚合报告→所有数据写入一个文件→找到生成的测试报告即可(如果需要查看请求的错误响应信息排查原因,建议添加“查看结果树”→所有数据写入一个文件→导入文件,最后勾选“仅错误日志”即可查看请求信息和响应数据)

测试报告:

网上百度了一大堆各种各样的测试接口报告,感觉不太适合,就自己简短的汇总了下信息:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值