对于开发给出的dubbo接口开发文档,必须具备以下几个条件:
1.依赖
2.组名
3.版本
4.类
5.方法名
6.入参类型
7.入参具体参数(参数名,数据类型,是否必填,备注)
8.出参格式 (eg:部分状态码定义)
9.请求示例 和 出参示例
【一】Dubbo sampler下载地址:
该插件支持jmeter 3.2及3.2以上版本。
现在很多互联 公司开发的系统中,越来越多的接口渐渐从http/https调用,改成了dubbo方式,原有的使用soapui测试webservice接口的方法也不再适用,所以,需要现在需要测试dubbo接口。
2015年到2017年, 上大部分同学仍是用jmeter来测Dubbo接口,还是使用的是搭建Maven环境才能测Dubbo,虽然有技术含量,但那太繁琐。于是,阿里巴巴在GitHub上提供了专门用于Jmeter来测dubbo接口的插件。
该插件下载地址具体如下:
综合介绍:https://www.oschina.net/p/jmeter-plugins-dubbo
用户指南:https://github.com/dubbo/jmeter-plugins-dubbo/wiki/用户指南
插件源码:https://github.com/dubbo/jmeter-plugins-dubbo
【划重点】插件下载:https://github.com/ningyu1/jmeter-plugins-dubbo/tree/master/dist
jmeter-plugins-dubbo使用
下载提供2种版本:
A. 第一种版本是jmeter-plugins-dubbo-1.3.8-jar-with-dependencies.jar类似带有with-dependencies的jar是包含一些基础包,建议下载这个
B. 第二种是不带依赖包的版本,例如jmeter-plugins-dubbo-1.3.8-SNAPSHOT.jar。然后获取以下依赖包,将它们放到jmeter安装目录下的lib/ext。如果是项目中使用 错,或者dubbo版本不是2.X版本的,建议下载这个
gson-2.8.2.jar
dubbo-2.8.4.jar
javassist-3.21.0-GA.jar
jline-0.9.94.jar
log4j-over-slf4j-1.7.5.jar
netty-3.7.0.Final.jar
slf4j-api-1.7.5.jar
zkclient-0.2.jar
zookeeper-3.4.9.jar
============================以 下 为 经 验 之 谈============================
【2019年7月12日更新 最新:jmeter-plugins-dubbo-1.4-SNAPSHOT.jar (为了防止fastjson漏洞)】
链接: https://pan.baidu.com/s/1V0Rs_fQ2j0R2wqURgpHwzQ 提取码: taf4
如果有,请移出或删除,否则接口永远调不通!!!切记!!!(如下图) 】
============================以 上 为 经 验 之 谈============================
言归正传,说明一下:
将 jmeter-plugins-dubbo-1.0.0-SNAPSHOT-jar-with-dependencies.jar 包放入jmeter 的 lib 文件夹下 的 ext 文件夹中,就能使用该插件了。
咱们以jmeter 5.0为例,把如下图所示的6个支持dubbo测试的基本jar包,放在libext中:
下载地址:https://pan.baidu.com/s/1UyQjfeGYgcdjorBz6-MgPA
除了以上6个基本jar包,还有两个最关键的东西,jmeter的dubbo sampler取样器的插件支持jar包,和你被测的jar包,还有你需要测的接口和抽象方法,都在里面,这个一定要跟开发要。
【二】使用Dubbo Sampler进行dubbo接口测试(举demo讲解):
有了上述几样jar包,关掉打开着的jmeter,再启动jmeter,这个时候jmeter在启动的时候,把这些jar包给读进内存了。
【特别补充说明】
1)如果参数类型使用的是java八大基本数据类型的 封装类(Integer、Long、Short、Byte、Float、Double、Character、Boolean),这前面要加上java.lang (例如Long,即java.lang.Long)。如果对数据类型的引用,想知道更多,请查看:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/wiki/ParameterComparisonTable
接下来,我们用java decomplier工具(jd-gui.exe)进行反编译, 上都有这个工具下载,百度一下就能下载到:
那么,paramValue的值,我们可以根据这段参数类型User和QueryCwzxBankDTO,按着Ctrl键,可以直接链接过去:
同理,
把以上参数值以json的形式写进去:
最后我们运行一下,大功告成:
(有“这样的乱码是吧~~~如果返回的数据有乱码,加一个beanshell前置处理器,输入以下代码: prev.setDataEncoding(“utf-8”); 就可以了~~)
这样的请求参数也太简单了,才一个普通的DTO实体类的json而已,如果遇到DTO实体类遇到泛型怎么办,也就是一个DTO实体类里面还有一个尖括 DTO实体类,怎么办么办/strong>
很好办!请看续篇———点击下方链接:
【续篇: 用Jmeter的Dubbo Sampler测试时,请求参数类型含有泛型和List集合数组 的解决办法】
【续篇再续:用Jmeter的Dubbo Sampler测试时,请求参数类型含有枚举Enum类型的情况】
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!