2021-09-14 websocket接口测试 同步定时器 性能

WebSocket协议

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要一次握手,浏览器和服务器就可以建立连接,两者之间互相发送数据。

彩蛋:https://www.runoob.com/html/html5-websocket.html

JMeter环境搭建

以Mac版本为例,需要先安装jdk8环境然后安装JMeter

下载地址:https://pan.baidu.com/s/1BuTsi-9n6jUj8YrWkBjZ0A 提取码: wc7m 

安装完成,运行安装目录下bin-jmeter就能正常启动jmeter了

测试WebSocket接口需要安装相应的补丁插件

下载地址: https://pan.baidu.com/s/1CIlepRcOHcA-2jZUSdcqLg  提取码: 2it4 

下载解压完成把文件放置到jmeter-bin-ext文件夹下面

启动WebSocket接口测试

以直播间多用户文字聊天刷屏为例

1、启动jmeter,文件-新建测试计划,命名为【文字聊天】

2、右击测试计划【文字聊天】,添加线程组

新建线程组

3、右击线程组-Sampler-WebSocket Open Connection,命名为【创建WebSocket连接】

创建WebSocket连接

设置WebSocket连接的协议(wss加密连接相当于https,需要在jmeter中安装证书,否则可能不支持)、IP、端口和路径

WebSocket连接设置

4、因为是模拟聊天消息发送,需要有用户登录信息,所以需要向服务器创建一个登录请求

右击线程组-Sampler-WebSocket request-response Sampler,命名为【向服务器发起登录请求】

向服务器发起请求

勾选use existing connection使用上面已经创建好的链接,设置好发送的请求参数

设置登录请求信息

5、读取服务器返回的登录请求,右击线程组-Sampler-WebSocket Single Read Sampler,命名为【读取服务器返回的登录请求】

创建服务器返回请求

读取登录请求信息

6、请求服务器登录返回成功之后,下一步开始模拟发送聊天消息和接收聊天消息,同理需要再次创建一个WebSocket request-response Sampler【向服务器发起聊天消息请求】和WebSocket Single Read Sampler【读取服务器返回的聊天消息请求】,如图所示

创建聊天请求

7、关闭WebSocket连接,右击线程组-Sampler-WebSocket Close,命名为【关闭WebSocket 连接】

8、查看运行结果,右击测试计划-添加-监听器-察看结果树

察看结果树

点击运行按钮,通过察看结果树可以看到返回结果,绿色表示通过,红色表示error

查看结果返回状态

以上流程仅实现相同用户发消息,要模拟不同用户发送聊天消息,需要进行用户变量设置

9、右击线程组-添加-配置元件-随机变量

设置用户变量

10、设置变量参数,变量名称、格式,取值范围等

设置变量参数

11、请求中利用正则表达式引用该变量,如图所示

引用变量

以上,就能实现多用户同时发送聊天消息的WebSocket接口测试啦,线程数和循环次数等可以在线程组中调节即可

注:修改Response(read)timeout(ms)时间,可以调节请求服务器和接收时间。

根据需求,要实现气泡刷屏效果是由老师端来操作开关,所以同上所示需要新建一个线程来创建一个老师登录请求,向教室内广播一条打开信令,此处就不公布具体信令了。

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

Synchronizing Timer 同步定时器
作用:用来设置集合点,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力

1、添加线程组-右键添加-定时器-同步定时器


字段意思:
Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量,若设置为0,等于设置为线程组中的线程数量;
Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数;如果设置为0,该定时器将会等待线程数达到了设置的线程数才释放,若没有达到设置的线程数会一直等待。如果设置了最大等待时间,超过Timeout inmilliseconds中设置的最大等待时间后还没达到设置的线程数,将不再等待释放已到达的线程。


————————————————


版权声明:本文为CSDN博主「玛卡巴卡AI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42048124/article/details/105856301

 

 



作者:吱吱菌啦啦
链接:https://www.jianshu.com/p/5d9ab3f9de7b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值