linux入门基础 websocket测试方式

项目背景
最近有一个超级表格的项目测试,支持多人实时协作编辑表格 。项目选用了WebSocket这种基于 TCP 的全双工通讯协议,它可以实现服务端和客户端之间的主动数据推送,具有资源占用少、实时性高等特点,消息推送模式包括:单对单、单对多(全体广播) 。
我们的项目使用WebSocket协议提交、广播增量数据,并广播提示其他用户拉取全量数据以达到同步的目的 。

linux入门基础 websocket测试方式

文章插图
在性能测试中需要模拟多个用户协同编辑一个文档的场景,选用Jmeter作为测试工具 。
Jmeter插件
在Jmeter中测试WebSocket协议接口,需要先安装WebSocket插件和依赖包;
需添加的插件为:
jmeter-websocket-samplers-1.2.1.jar
依赖包:jetty-http
jetty-io
jetty-util
websocket-api
websocket-client
websocket-common
把插件放到Jmeter的libext,依赖包放到Jmeter的lib目录,打开Jmeter即可看到WebSocket相关的取样器 。
linux入门基础 websocket测试方式

文章插图
这几种取样器的作用如下表所示:
linux入门基础 websocket测试方式

文章插图
常用的取样器是WebSocket Open Connection和WebSocket request-response Sampler,前者用来建立连接不发送数据,后者建立连接并发送data或者只发data 。
创建脚本
在编写脚本前先通过浏览器查看建立连接的过程,首先打开一个文档时通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式将连接升级为WebSocket 。
linux入门基础 websocket测试方式

文章插图
返回的状态码为101则说明WebSocket连接建立成功,协议已经变为了WebSocket,如下图所示,浏览器先后发送三个数据帧,包括CONNECT建立连接、SUBSCRIBE订阅文档、SEND类型为CLIENT_READY消息,客户端收到的数据包括服务端返回的响应和每25s一个的心跳帧 。
linux入门基础 websocket测试方式

文章插图
后续通过WebSocket协议提交、广播、拉取各种类型的增量数据 。
了解了这些之后就可以开始在测试场景中添加和配置WebSocket的sampler编写脚本 。
1.右键单击测试计划,选择添加->线程->线程组,将一个线程组添加到测试计划 。
2.在线程组添加WebSocket request-response Sampler建立连接,选择建立新连接,并发送请求数据如下:
linux入门基础 websocket测试方式

文章插图
说明:
(1)Connection:有两个选项,第一项是使用已有连接,就是上一个WebSocket请求所建立的连接通道,选择后Server URL全置灰只读不可操作 。第二项是新建连接通道 。
(2)Server URL:可以发送ws协议和加密的WebSocket,即wss协议 。Server Name Or IP处填写WebSocket服务器的地址,Port和Path依照实际填写即可 。
(3)Request data:支持文本(包括JSON)和Binary二进制数据的发送,可以将浏览器中查看到的数据根据需求参数化之后填写 。默认请求响应的超时时间为6S,超过这个时间报错 。
因为要通过收到返回包含CONNECTED字样的报文来判断是否发送后续的消息 。需要把收到的服务端返回的其他数据帧过滤掉,再用断言进行判断 。
右键单击WebSocket request-response Sampler添加->配置元件->WebSocket Text Frame Filter,配置条件过滤掉不需要的数据帧,如心跳帧等 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: