业务场景:我们有一个微直播服务,类似于聊天室。需要模拟主播切图(学员会收到消息)、学员和游客发送消息,然后统计一共发出去多少条消息,学员成功收到了多少条消息。
业务流程:1,内部用户通过http协议登录,获取assessToken和用户名;2,通过token和用户名和微直播id建立进入直播间的websocket连接,学员发送消息,主播可以切换图册;3,游客直接使用直播id和昵称建立进入直播间的websocket链接,发送消息。
一,安装jmeter的插件管理器,下载插件
1,下载地址:https://jmeter-plugins.org/install/Install/
2,下载完成后,将下载的jar包放入 jmeter的 lib/ext目录中,然后重启jmeter
3,打开jmeter— Options — Plugins Manager
二,安装websocket插件
1,在jmeter工具中,点击Options — Plugins Manager
image.png
2,在Available Plugins标签下搜索websocket,选中WebSocket Samplers by Peter Doornbosch,然后点击Apply Changes and Restart JMeter按钮。
image.png
3,新建测试计划,建立线程组,右键线程组>添加>取样器,就可以看到WebSocket相关的sampler了
image.png
三,构建业务场景
1,在jmeter中,几个websocket请求意思大致如下:
image.png
2,内部用户登录后进入直播间发送消息
-
通过后置处理器“json提取器”提取assessToken变量,命名为token。这里的参数我都是用的变量,http协议就不多写了,直接上图
image.png
image.png -
内部用户通过websocket链接直播间,提取 authToken。我这里是从控制台获取的地址,部分参数使用的变量
image.png
image.png
image.png -
添加一个循环控制器,在控制器下添加一个http请求,模拟内部用户发送消息
image.png -
给上一步中的http请求添加一个计数器,并设置为全局变量
image.png
image.png
3,主播进入直播间,发送消息( 主播登录进入直播间和内部学员一样,不同的是主播id是固定值,这里不重复写了)
-
主播获取相册列表,提取图片id
image.png
image.png -
主播切图,添加计时器
image.png
image.png
4,游客进入直播间,发送消息,添加计时器
游客只需要输入昵称就能进入直播间,昵称通过读取CSV文件获取
image.png
image.png
5,获取游客、学员和直播发送消息数
-
新添加一个线程,添加一个HTTP请求,消息体引用计数器的值
image.png -
内部用户线程数设置为1.循环10次,主播+游客线程数设置为1,循环5次。运行结果如下:
image.png