使用JMeter模拟设备通过MQTT发送数据

需求: 需要一个工具能够支持MQTT协议发送各种不同的数据。

目的: 模拟小型温室设备反馈,搭建一个测试环境,根据测试的数据显示硬件的状态和数值。

工具:JMeter

环境:需要配置Java运行环境。

操作步骤:

1. 下载JMeter运行包

下载地址:jmeter.apache.org/download_jm…,下载后可以解压到任意目录

2. 安装JDK,配置Java的运行环境(请自行用谷歌或必应搜索)
3. 启动jmeter的执行程序

打开解压文件的bin目录,执行命令:sh jmeter

打开后如下图,在新增测试计划的具体事例时,我们是找不到MQTT协议的。所以我们还需要安装MQTT的插件包

4. 安装MQTT插件
  1. 从 GitHub 上下载最新版本插件 mqtt-xmeter-2.0.2-jar-with-dependencies.jar,该插件支持 JMeter 3.2 及以上版本。
  2. 将插件 jar 包拷贝到 JMeter 的插件目录:$JMETER_HOME/lib/ext
  3. 重新启动 JMeter。

这时候在去创建测试事例,就能看到支持MQTT协议的测试入口了

5. 切换到中文

默认是英文,可以手动切换成中文。

如果想修改默认的语言配置,打开bin目录下的jmeter.properties文件,搜索language,把#language=en 改成language=zh_CH

重启后,默认打开就是中文了。接下来我们开始创建一个MQTT的测试。

6. 创建测试用例

a. 创建线程组

主要设置线程数、Ramp-Up时间和循环次数。下面表示的1秒钟内启动2个线程,发送1次请求数据。如果循环次数勾选永远,就会一直发送。

b. 创建MQTT连接

  1. 先创建一个Connect连接MQTT

注意超时时间,这里默认的是10毫秒,如果MQTT服务不稳定,可能会出现偶尔连不上的问题,建议1000毫秒

  1. 创建MQTT pub Sampler录入要发送MQTT的topic,如果需要发送不同数据,可以创建一个CVS,从表里获取数据。这时候在Pub sampler 里就需要使用${}来获取数据,字符串要加“”。

如果想要重复获取数据,在遇到文件结束符再次循环要选true,停止线程那里要选false。

  • 最好设置一个定时器,控制发送的频率。比如设置10毫秒一次,相当于1个线程1秒发送100次数据

最后,创建一个查看结果数,可以查看发送的明细。看汇总就创建一个汇总报告。

如果要模拟多个设备,那就创建多个线程组即可。如果想要测试MQTT服务能承受多大的并发, 可以根据需要设置线程数和间隔时间,不过这个数量如果特别大的话,并发量会不精准,但总体上还是可以达到我们的测试目的。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/580748.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器人操作系统ROS2学习—编译工作空间colcon build报错问题

在ROS2中,工作空间创建完成后,会经常需要编译工作空间。在工作空间dev_ws 下打开一个终端,通过指令Colcon build来编译工作空间。 1、这个过程有可能会出现如下错误: "colconbuild:Duplicate package names not supported" 根据…

阅读笔记——《BLEEM: Packet Sequence Oriented Fuzzing for Protocol Implementations》

【参考文献】Zhengxiong Luo, Junze Yu, Feilong Zuo, Jianzhong Liu, Yu Jiang, Ting Chen, Abhik Roychoudhury, and Jiaguang Sun. Bleem: Packet sequence oriented fuzzing for protocol implementations. In 32nd USENIX Security Symposium (USENIX Security 23), pages…

西湖大学赵世钰老师【强化学习的数学原理】学习笔记2节

强化学习的数学原理是由西湖大学赵世钰老师带来的关于RL理论方面的详细课程,本课程深入浅出地介绍了RL的基础原理,前置技能只需要基础的编程能力、概率论以及一部分的高等数学,你听完之后会在大脑里面清晰的勾勒出RL公式推导链条中的每一个部…

github two-factor authentication是个啥?

最近在逛github时,总是时不时会弹出一下界面,很烦 看到红框里的文字,这明显是强制要求做这个认证,如果不认证4天后账号将不可访问,所以今天花点时间看看怎么做这个认证,点“Enable 2FA now”进入这个界面&a…

Vue后台系统demo小计

创建项目 1.报错 Error: command failed: npm install --loglevel error --legacy-peer-deps 措施1:node.js文件夹属性 》高级 》选择第一个允许 Users(XXX\Users) (对我无用) 措施2:PowerShell(以管理员身份运行) 》 cd 想存…

java基础之java容器-Collection,Map

java容器 java容器分类一. Collection1. List①. ArrayList② . LinkedList③ . Vector 2. Queue队列①. LinkedList②. PriorityQueue 3. Set集合①. HashSet②. TreeSet 二. Map1. HashMap2.TreeMap3. Hashtable java容器分类 java容器分为两大类,分别是Collecti…

VMWare下建的CentOS7 扩容

记录一下扩容过程中踩过的坑 背景:一年半以前私有化部署了一个gitLab服务,当时只分配了30G的磁盘容量,这两天小伙伴总是反馈gitLab登不上。排查发现是因为磁盘满了 然后就开始了磁盘扩容之旅 各种 vgs\pv\pvdisplay\lv\lvm 等等都没用 一下…

ChatGPT记忆功能终于上线了, OpenAI 官方:用得越久越聪明!

原文 ChatGPT记忆功能终于上线了, OpenAI 官方:用得越久越聪明! Aitrainee | 公众号:AI进修生 🌟 记得今年2月份OpenAI发布过ChatGPT上线记忆功能的消息,我记得当时还弹出过这个窗口给我,但是仅仅体验了几…

【书生浦语第二期实战营学习笔记作业(六)】

课程文档:https://github.com/InternLM/Tutorial/tree/camp2/agent 课程作业:https://github.com/InternLM/Tutorial/blob/camp2/agent/homework.md Lagent & AgentLego 智能体应用搭建 1、Agent 理论1.1 为什么要有智能体1.2 什么是智能体1.3 智能体…

【兼职宝典】七大靠谱手机兼职副业平台,让你乐在其中,轻松实现财务自由!

数字化时代已经到来,互联网的普及与技术的飞速发展让越来越多的人开始关注兼职工作,以此增加收入、锻炼能力或追求兴趣爱好。本文将为您详细解读几种热门的兼职方式,助您找到最适合自己的兼职岗位。 一,自媒体运营:创…

Java 循环语句

文章目录 Java 循环语句一,for 循环1. for 循环结构2. for 循环案例: 输出5行HelloWord3. for 循环案例: 写出输出的结果 (格式多样性)4. for 循环案例: 遍历100以内的偶数。并获取偶数的个数,获取所有的偶数的和5. for 循环案例: 输出所有的水仙花数6. …

Jmeter中http请求时加HTTP Cookie管理器,cookie不生效问题

只是想加个cookie,就新建了cookie管理器,用的都是默认的,然后跑到怀疑自己的jmeter是不是出问题了。 还好没卸载重装。只是把策略改成netscape就好了。

【代码随想录刷题记录】LeetCode844比较含退格的字符

题目地址 1. 思路 1.1 基本思路 拿到这个题,我们要单独写一个函数去将退格后的字符串结果返回出来(生成退格后的真实的字符串),我还是想魔改 O ( n ) O(n) O(n)时间复杂度的删除数组元素的算法:【代码随想录刷题记录…

GoLand 2021.1.3 下载与安装

当前环境:Windows 8.1 x64 1 浏览器打开网站 https://www.jetbrains.com/go/download/other.html 找到 2021.1.3 版本。 2 解压 goland-2021.1.3.win.zip 到 goland-2021.1.3.win。 3 打开 bin 目录下的 goland64.exe,选择 Evaluate for free -- Evalu…

RunnerGo四月更新:强化UI自动化测试与UI录制插件功能

RunnerGo最近更新的 UI自动化测试和UI录制插件可以让测试人员更高效地布置UI自动化场景。这次优化升级的插件录制能力,可以更准确的定位元素并执行步骤,并增加了局部截图功能,准确查看定位的元素位置等。 UI插件V2.0介绍 接下来,让…

vue2左侧菜单栏收缩展开功能

目录 1. Main.vue页面代码 a. 修改侧边栏属性 b. 修改头部导航栏 c. 定义我们的变量 d. collapse函数 2. Header.vue页面代码 3. Aside.vue页面代码 vue2左侧菜单栏收缩展开目前是非常常见的,我们在日常开发过程中经常会碰到。这一小节我们就详细了解一下这个…

java多功能手机

随着科技的发展,手机的使用已经普及到每个家庭甚至个人,手机的属性越来越强大,功能也越来越多,因此人们在生活中越来越依赖于手机。 任务要求,使用所学知识编写一个手机属性及功能分析程序设计,测试各个手机…

3步教你成为微信客户管理高手,助你事半功倍!

在如今的商业世界中,与客户建立良好的关系并提供个性化的服务已成为企业成功的关键。今天就 分享三个简单的步骤,让大家成为微信客户管理的高手,事半功倍! 第一步:客户分类与精细化服务 为了更好地管理客户&#xff…

--菱形继承--

#include<iostream> using namespace std;class Animal { public:Animal(){m_Age 0;}int m_Age; };//利用虚继承 解决菱形继承的问题 //继承之前 加上关键字 virtual 变为虚继承 // Animal类称为 虚基类 //羊类 class Sheep:virtual public Animal { public:};//驼类 cl…

力扣数据库题库学习(4.28日)--1581.进店却未进行过交易的顾客

1581. 进店却未进行过交易的顾客 问题链接 思路分析 有一些顾客可能光顾了购物中心但没有进行交易。请你编写一个解决方案&#xff0c;来查找这些顾客的 ID &#xff0c;以及他们只光顾不交易的次数。返回以 任何顺序 排序的结果表。 要求&#xff1a; 获取只浏览不消费的…
最新文章