首页 > 其他分享 >使用JMeter模拟设备通过MQTT发送数据

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

时间:2023-08-21 14:35:07浏览次数:77  
标签:插件 创建 发送 MQTT 线程 发送数据 JMeter

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

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

工具:JMeter

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

操作步骤:

1. 下载JMeter运行包

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

2. 安装JDK,配置Java的运行环境(请自行用谷歌或必应搜索)

3. 启动jmeter的执行程序

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

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

使用JMeter模拟设备通过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协议的测试入口了

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

5. 切换到中文

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

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

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

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

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

6. 创建测试用例

a. 创建线程组

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

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

b. 创建MQTT连接

  1. 先创建一个Connect连接MQTT

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

使用JMeter模拟设备通过MQTT发送数据_获取数据_07

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

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

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

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

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

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

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

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

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

标签:插件,创建,发送,MQTT,线程,发送数据,JMeter
From: https://blog.51cto.com/u_14184689/7174787

相关文章

  • 【JMeter】JMeter控制RPS
    JMeter控制RPS目录JMeter控制RPS一、前言二、配置RPS三、运行结果一、前言​ RPS(RequestPerSecond)一般用来衡量服务端的吞吐量,相比于并发模式,更适合用来摸底服务端的性能。我们可以通过使用JMeter的常数吞吐量定时器来限制每个线程的RPS。对于RPS,我们可以把他理解为我......
  • Jmeter 接口测试工具入门
    1)Jmeter介绍JMeter是一款JAVA桌面应用程序,常常被用来做接口测试、负载测试等等JMeter是一款开源测试工具:开源免费软件,不需要任何使用费用小巧绿色,相比LoadRunner的庞大,它非常小巧并且不需要安装(需要安装JDK)功能强大,设计之初只是一个简单的性能测试工具,经过无数次更......
  • jmeter详解-线程组详解(6)-jp@gc - Stepping Thread Group
    jp@gc-SteppingThreadGroup线程组模拟测试场景:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间。添加方式:页面说明:thisgroupwillstart:表示总共要启动的线程数;若设置为100,表示总共会加载到100个线程first,waitfor:从运行之后多长时间开始启动线程;若......
  • jmeter详解-线程组详解(5)-jp@gc - Ultimate Thread Group
    添加方式:右键测试计划->添加->Threads(Users)->jp@gc-UltimateThreadGroup页面说明:StartThreadsCount:当前行的线程总数InitialDelay/sec:延时启动当前行的线程,单位:秒StartupTime/sec:启动当前行所有线程达峰值所需时间,单位:秒HoldLoadFor/sec:当前行线程达到峰值......
  • jmeter详解-线程组详解(4)-tearDown Thread Group
    tearDownThreadGroup线程组:在测试任务线程组运行结束后被运行。通常用来做清理测试脏数据、登出、关闭资源等工作。应用场景举例:A、测试数据库操作功能时,用于执行关闭数据库连接的操作。B、测试用户购物功能时,用于执行用户的退出等操作。tearDownThreadGroup线程的行为与......
  • Jmeter中的ramp-up时间指的是什么?请举说明
    在JMeter中,ramp-up时间指的是测试中逐渐增加并发用户数的时间。它表示从测试开始到达最大并发用户数所需的时间。举例说明:假设我们需要对一个网站进行性能测试,设置最大并发用户数为100,并且希望在30秒内逐渐增加并发用户数。那么,ramp-up时间就是30秒。在测试开始时,JMeter会逐渐......
  • jmeter详解-线程组详解(3)-再看Ramp-Up(seconds)
    在jmeter线程组的第一篇文章中对Ramp-Up时间讲过一点:jmeter详解-线程组详解(1)-ThreadGroup 这里我们再来看一下Ramp-Up(seconds)在jmeter中Ramp-Up是什么?JMeterRamp-up周期是以秒为单位,ApacheMeter将花费多少时间将所有测试用户(线程)添加到测试执行中。或者换句话说,需要多......
  • Jmeter的常用设置(一)
    https://blog.csdn.net/weixin_45272371/article/details/131608920 文章目录前言一、Jmeter设置中文方法一(临时改为中文)方法二(永久改成中文)二、启动Jmeter的两种方式方法一(直接启动,不打开cmd窗口)方法二(带有cmd窗口的启动)三、调整Jmeter使用界面不同区域的字体或图标大小方法1......
  • 【JMeter】常用线程组设置策略
    常用线程组设置策略目录常用线程组设置策略一、前言二、单场景基准测试1.介绍2.线程组设计3.测试结果三、单场景并发测试1.介绍2.线程组设计3.测试结果四、单场景容量/爬坡测试1.介绍2.线程组设计3.测试结果五、混合场景容量/并发测试1.介绍六、稳定性测试1.介绍2.线程组设计3.测......
  • jmeter实例
    1.jmeter安装配置2.(1)添加线程组 (2)设置HTTP请求默认值(如果是HTTPS,则需要额外配置,证书导入https://www.cnblogs.com/may18/p/9268441.html)鼠标在线程组标题右击添加 (3)设置http请求 (4)HTTP信息头管理 (5)添加断言--响应断言(根据需要) (5)监听--查看结果树(6)监听--报......