websocket测试方式
作者:king发布时间:2023-04-26分类:日常常识浏览:53
导读:项目背景最近有一个超级表格的项目测试,支持多人实时协作编辑表格。项目选用了WebSocket这种基于TCP的全双工通讯协议,它可以实现服务端[服务端是为客户端服务的,服务的...
项目背景
最近有一个超级表格的项目测试,支持多人实时协作编辑表格。项目选用了WebSocket这种基于 TCP 的全双工通讯协议,它可以实现服务端[服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。]和客户端[客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。]之间的主动数据[数据就是数值,也就是我们通过观察、实验或计算得出的结果。]推送,具有资源占用少、实时性高等特点,消息推送模式包括:单对单、单对多(全体广播)。
我们的项目使用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相关的取样器[取样器是一种取样设备,用于锅炉房或电厂内汽水化验取样冷却,即用于温度较高的液体和气体等介质换热。]。
这几种取样器的作用如下表所示:
常用的取样器是WebSocket Open Connection和WebSocket request-response Sampler,前者用来建立连接[机械连接比胶接或点焊等连接技术可靠,而且容易更换,所以在现代飞行器制造中仍占有重要地位。]不发送数据,后者建立连接并发送data或者只发data。
创建脚本
在编写脚本前先通过浏览器[浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件。]查看建立连接的过程,首先打开一个文档时通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式将连接升级为WebSocket。
返回的状态码为101则说明WebSocket连接建立成功,协议已经变为了WebSocket,如下图所示,浏览器先后发送三个数据帧,包括CONNECT建立连接、SUBSCRIBE订阅文档、SEND类型为CLIENT_READY消息,客户端收到的数据包括服务端返回的响应和每25s一个的心跳帧。
后续通过WebSocket协议提交、广播、拉取各种类型的增量数据。
了解了这些之后就可以开始在测试场景中添加和配置WebSocket的sampler编写脚本。
1.右键单击测试计划[测试计划Testing plan,描述了要进行的测试活动的范围、方法、资源和进度的文档;是对整个信息系统应用软件组装测试和确认测试。],选择添加-线程-线程组,将一个线程组添加到测试计划。
2.在线程组添加WebSocket request-response Sampler建立连接,选择建立新连接,并发送请求数据如下:
说明:
(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,配置条件过滤掉不需要的数据帧,如心跳帧等。
右键添加-断言-响应断言,添加断言对建立连接的响应帧进行判断。
第一个建立连接的请求成功后,后续WebSocket request-response Sampler的连接类型选择使用已存在的连接,下面的Server URL全置灰只读不可操作。
添加后续的SUBSCRIBE订阅文档,通过固定请求数据中的文档id可以使所有用户打开同一个文档,添加SEND类型为CLIENT_READY消息请求后,就完成了基本的打开文档建立连接的操作,之后可以添加循环控制器并用类似的方法添加发送编辑文档的请求。
运行脚本
脚本完成之后配置线程组的线程数,循环次数或执行时间,即可模拟并发用户同时编辑文档,添加结果树、聚合报告等监听器后可以查看测试的运行情况:
从浏览器也可以验证收到了其他并发用户广播的数据。
除了多用户协同编辑用一个文档的场景,性能测试的过程中还覆盖了协同用户保存同一文档、不同文档同时保存等场景,确保测试场景的充分性。哈哈社推荐内容:关于立夏的风俗有哪些家居搭配技巧有什么?苏州特产最好吃的糕点是什么呀?丝瓜是发物吗手术后能吃吗伊朗的历届总统是谁?韩沐晨这个名字怎么样?冰箱二级能效好还是一级能效好五十六个民族的服饰和生活习惯白酒和蜂蜜一起喝对身体有什么好处黑色玫瑰花语霸气为什么小宝宝可以只吃奶不吃盐?盐分不是人体必需的吗活动隔断十大品牌
- 上一篇:2020福布斯中国最具创新力企业榜
- 下一篇:精梳棉和纯棉哪个好
- 日常常识排行