使用JMETER进行DUBBO接口测试
1. 分享背景:
dubbo接口进行接口的访问测试
2.Dubbo插件的安装:
(1)下载地址:
https://github.com/thubbo/jmeter-plugins-for-apache-dubbo
image.png(2)存放路径:
…\apache-jmeter-5.2.1\lib\ext
(3)重新启动jmeter即可。
3. Dubbo接口测试的使用:
(1) 新建线程组“
右键testplan – 添加 – 线程(用户) - 线程组
(2) 增加dubbo取样器:
右键线程组 – 添加 – 取样器 – dubbo sample
(3) Protocol介绍和使用:
注册协议,包括zookeeper、multicast、Redis、simple
我们使用泛化调用,不需要考虑他的注册中心。
<u>泛化调用是什么?服务的消费者直接调用接口方式(不需要引入服务接口),也可以实现服务功能的使用</u>。
(4) Address:
注册地址,目前我们使用dubbo直连,直接写IP+PORT即可
(5) Timeout:
超时时间,正常情况下默认即可,如jmeter返回超时错误,接口功能正常,可适当延长超时时间。
(6) Version:
版本号,不需要指定版本号
(7) Interface:
接口名称
(8) Method:
方法名称
(9) paramType:
参数类型:参数支持任何类型,包装类直接使用java.lang下的包装类,类型使用:int、float、shot、double、long、byte、boolean、char,自定义类使用类完全名称
我们目前使用的类型:java.util.Map
(10) paramValue:
参数值
image.png
4. 实战演示:
并发接口测试实现演示:
注册接口正常情况下同一个id/手机号/邮箱/用户名等唯一信息只允许存在一次,同一个用户并发提交注册不会出现重复id/手机号/邮箱/用户名的情况。
(1)接口信息:
接口名:用户注册接口
接口路径:com.qiming.qqzw.customer.api.IRegisterProvider.register()
接口功能:注册
接口参数:
image.png(2) 环境信息:
地址:172.31.132.***
端口:28465
影响数据库:172.31.63.***:3306/mysql1_10/usercenter_user
(3)用例设计:
测试内容:唯一序列号校验
前置条件:准备从未注册过的手机号;10个用户
用例步骤:10个用户使用同一个未注册过的手机号提交注册。
检查点:
1.接口仅有一个返回成功,其他接口返回错误提示,未注册成功
2.数据库存在新增数据,有且仅有一条。
(4)jmeter实现:
1.添加线程组:右键点击Test Plan – 添加 – 线程组
2.在线程组下添加dubbo取样器:右击点击线程组 – 添加 – 取样器 – Dubbp Sample
3.配置Dubbo Sample:
Address:172.31.132.***:28465
Version:空
InterFace: com.qiming.qqzw.customer.api.IRegisterProvider
Method: register
paramType:java.util.Map
paramValue: {"clientType":"ios","code":"111111","appCode":"qiuqiu","type":"mobile_code","account":"17888888881"}
image.png(5)添加断言:用于判断接口是否正常返回
1.右击dubbo取样器 – 添加 - 断言 - 响应断言:
image.png(6)接口掉通调试:保证当前脚本的正确性
image.png(7)设计测试场景,增加同步定时器
1.增加同步定时器,用于模拟并发请求:
右击线程组- 添加 – 定时器 – 同步定时器,设置模拟用户数量5(可根据需求或与研发沟通设定此数值),设置超时时间0(代表一直等待)
image.png- 设置线程组中线程数5,循环次数1次。
(8)参数化:为方便多次测试,可将改动频繁的参数参数化
1.右击线程组-添加- 前置处理器 – 用户参数,设置如下:
image.png2.更改传参设置参数化的值:
image.png除此之外,还可以通过脚本的方式随机生成手机号,感兴趣可以自行去探索一下!
(9)执行脚本:
最终的脚本内容如下:
image.png点击执行按钮执行脚本,查看结果:
image.png测试结果仅有一个接口返回成功,其他接口均返回错误提示。
5. 结语:
以上为使用jmeter进行dubbo接口测试文档的全部内容,另外根据以往的测试经验总结了一下类似于提交、上传、报名等即此接口特殊的测试点如下:
1.单用户接口并发下,带有唯一序列号的字段是否会出现重复。
2.单用户或者多用户接口并发下,新增数据是否正常,是否出现重复新增。
3.多用户接口并发下,拥有名额限制的功能,是否超出正常限制。
4.单用户接口并发下,扣减功能是否出现多扣多减情况。
5.单用户或者多用户接口并发下,接口是否出现异常报错。
以上测试点仅供参考,实际的场景设计还需要根据业务需求和后端设计进行分析得出。
网友评论