当前位置: 首页 > news >正文

基于 JMeter 完成 Dubbo 接口的测试

JMeter 默认是不支持 Dubbo 接口测试的,但是我们可以通过拓展的插件或 jar 包实现此功能。

JMeter 插件拓展

1.1 插件下载

测试 Dubbo,我们需要下载 Dubbo 的插件,在 Apache 的 Dubbo 插件 GitHub 中可以找到:https://github.com/thubbo/jmeter-plugins-for-apache-dubbo 3

点击进入,这里我们选择当前的最新版本 2.7.8 进行下载。

1.2 插件安装

插件下载好后只需要将 jar 包放入到 jmeter 的 lib 下的 ext 文件夹即可。

由于我的 JMeter 是使用 Mac 的 Homebrew 安装的,所以我的路径为 /usr/local/Cellar/jmeter/5.3_1/libexec/lib/ext,具体的根据自己的安装路径寻找即可,如下可以看到我的 jar 包已放入。

% pwd
/usr/local/Cellar/jmeter/5.3_1/libexec/lib/ext
% ls | grep jmeter-plugins-dubbo-2.7.8-jar-with-dependencies.jar
jmeter-plugins-dubbo-2.7.8-jar-with-dependencies.jar

1.3 重启 JMeter

重启 Jmeter 后再采样器可,以看到 Dubbo Sample 的存在。

测试接口准备

这里在本地准备好了一个 Dubbo 的测试 demo 供演示使用,provider的方法如下,直接调用方法,返回一个用户信息列表:

public class UserServiceImpl implements UserService {

@Override
public List<UserAddress> getUserAddressList(String userId) {
UserAddress userAddress1 = new UserAddress(1, "杭州市西湖区", "1", "Tester1", "12345678", "Y");
UserAddress userAddress2 = new UserAddress(2, "杭州市余杭区", "2", "Tester2", "12345678", "N");
return Arrays.asList(userAddress1, userAddress2);
}
}

通过 dubbo-admin 可以查到当前的服务已经提供完成:

测试 Dubbo 接口

这里选择以直连的方式进行接口的测试,也就是利用了 Dubbo 的泛化调用的方式,不需要知道注册中心,只需要知道服务接口,方法名以及服务提供者的地址即可。关于 Dubbo 的泛化调用,后续再单独介绍。

3.1 修改配置

打开 Dubbo Sample 后我们会看到如上图的配置(可能根据版本的不同会有所变化),如果遇到了相同的情况,将 Version 中的"1.0"删除,否则会影响我们的传参,然后再填入接口的信息即可,如下:

注意:这里要注意入参的类型要按照 Java 的数据类型填完整的类型格式。

3.2 结果展示

执行测试,查看测试结果如下:

可以看到接口成功响应,结果成功返回,测试 Dubbo 接口成功

免费领取:性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档


相关文章:

  • hyperf笔记
  • 使用Postman并发测试接口关于RedisTemplate线程安全的一些理解
  • Java八锁现象
  • 谷氨酸三方突触丨SYSY谷氨酸GluA解决方案
  • 做一个校园跑腿小程序需要多少成本?
  • js实现pdf、word、excel、图片、html文件预览及下载
  • 孙卫琴的《精通Vue.js》读书笔记-注册全局组件和局部组件
  • 28、iNeRF
  • 相关性 与 独立性
  • set和map的模拟
  • window环境下安装大数据环境
  • 解决navicat premium连接数据库自动断开问题
  • 学历提升中的我,入职产品经理之路
  • 网络安全专家,这5本入门秘籍人手一套
  • 智源AI日报(2022-08-30): 华为谢凌曦:关于视觉识别领域发展的个人观点
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【comparator, comparable】小总结
  • 【刷算法】求1+2+3+...+n
  • angular组件开发
  • Brief introduction of how to 'Call, Apply and Bind'
  • ESLint简单操作
  • java概述
  • JS函数式编程 数组部分风格 ES6版
  • js如何打印object对象
  • Linux后台研发超实用命令总结
  • Making An Indicator With Pure CSS
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • mysql innodb 索引使用指南
  • PAT A1092
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SSH 免密登录
  • ucore操作系统实验笔记 - 重新理解中断
  • 半理解系列--Promise的进化史
  • 排序(1):冒泡排序
  • 深度学习中的信息论知识详解
  • 详解移动APP与web APP的区别
  • 学习笔记:对象,原型和继承(1)
  • 一个项目push到多个远程Git仓库
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #HarmonyOS:基础语法
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (23)Linux的软硬连接
  • (52)只出现一次的数字III
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)关于pipe()的详细解析
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .net下的富文本编辑器FCKeditor的配置方法
  • .sdf和.msp文件读取
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚