【Jmeter测Dubbo接口(1)】使用阿里巴巴给Jmeter开发的Dubbo sampler取样器进行dubbo接口测试【图解剖析】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/cyjs1988/article/details/84258046

(本文图片过于横长,请右键新窗口打开本文截图,或直接点开图片)

【一】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

============================以 下 为 经 验 之 谈============================

【2019年7月12日更新 最新:jmeter-plugins-dubbo-1.4-SNAPSHOT.jar (为了防止fastjson漏洞)】

          链接: https://pan.baidu.com/s/1V0Rs_fQ2j0R2wqURgpHwzQ 提取码: taf4

【2019年7月15日更新:

如果你的lib目录下,有jmeter-plugins-dubbo-1.3.8-jar-with-dependencies.jar诸如此类带有-with-dependencies字样的,表示“这jar包里面包含一些基础jar包(基础jar包如下)”,也就是说,如果你再在lib目录下,傻乎乎地被你再放一些基础jar包(如下),就会造成jar包冲突。

所以,如果你使用了“xxx--with-dependencies.jar”这个包,一定要保证你的lib目录下,不能有如下5个基础包文件:

dubbo-2.5.3.jar
javassist-3.15.0-GA.jar
zookeeper-3.4.6.jar
zkclient-0.1.jar
netty-3.7.0-Final.jar

如果有,请移出或删除,否则接口永远调不通!!!切记!!!(如下图)   】

============================以 上 为 经 验 之 谈============================

言归正传,说明一下:

插件包可以去github上下载。插件安装目录:${JMETER_HOME}\lib\ext.

如果使用的是:jmeter-plugins-dubbo-${version}-jar-with-dependencies.jar包含必要的依赖,推荐使用这个包。

如果使用的是:jmeter-plugins-dubbo-${version}.jar需要自行添加插件的依赖包,依赖包版本如下:

dubbo-2.5.3.jar
javassist-3.15.0-GA.jar
zookeeper-3.4.6.jar
zkclient-0.1.jar
jline-0.9.94.jar
netty-3.7.0-Final.jar
slf4j-api-1.7.5.jar
log4j-over-slf4j-1.7.5.jar

       将 jmeter-plugins-dubbo-1.0.0-SNAPSHOT-jar-with-dependencies.jar 包放入jmeter 的 lib 文件夹下 的 ext 文件夹中,就能使用该插件了。

咱们以jmeter 5.0为例,把如下图所示的6个支持dubbo测试的基本jar包,放在lib\ext中:

下载地址: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

2)如果参数类型使用的是含有泛型的DTO实体类,或者泛型里还包括List集合,这种情况,请参考本文续篇:https://blog.csdn.net/cyjs1988/article/details/95968182

接下来,我们用java decomplier工具(jd-gui.exe)进行反编译,网上都有这个工具下载,百度一下就能下载到:

那么,paramValue的值,我们可以根据这段参数类型User和QueryCwzxBankDTO,按着Ctrl键,可以直接链接过去:

同理,

把以上参数值以json的形式写进去:

最后我们运行一下,大功告成:

(有“???”这样的乱码是吧~~~如果返回的数据有乱码,加一个beanshell前置处理器,输入以下代码: prev.setDataEncoding("utf-8"); 就可以了~~)

这样的请求参数也太简单了,才一个普通的DTO实体类的json而已,如果遇到DTO实体类遇到泛型怎么办,也就是一个DTO实体类里面还有一个尖括号DTO实体类,怎么办?怎么办?

很好办!请看续篇———点击下方链接:

【续篇: 用Jmeter的Dubbo Sampler测试时,请求参数类型含有泛型和List集合数组 的解决办法

【续篇再续:用Jmeter的Dubbo Sampler测试时,请求参数类型含有枚举Enum类型的情况】

猜你喜欢

转载自blog.csdn.net/cyjs1988/article/details/84258046