jmeter请求提示nocokies_最强辅助Jmeter,测试WebSocket协议应用

a8e7e86f78fef05e025789c79b00abd7.png

出品 | 51Testing软件测试网

0 1

项目背景

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

我们的项目使用WebSocket协议提交、广播增量数据,并广播提示其他用户拉取全量数据以达到同步的目的。

在性能测试中需要模拟多个用户协同编辑一个文档的场景,选用Jmeter作为测试工具。

0 2

Jmeter插件

在Jmeter中测试WebSocket协议接口,需要先安装WebSocket插件和依赖包;

需添加的插件为:jmeter-websocket-samplers-1.2.1.jar

依赖包:jetty-http

   jetty-io

   jetty-util

   websocket-api

   websocket-client

   websocket-common

把插件放到Jmeter的lib\ext,依赖包放到Jmeter的lib目录,打开Jmeter即可看到WebSocket相关的取样器。

0e7464d668e5529de33f5109ab51536f.png

这几种取样器的作用如下表所示:

73e21be24a598f5b20b0f0387d765309.png

常用的取样器是WebSocket Open Connection和WebSocket request-response Sampler,前者用来建立连接不发送数据,后者建立连接并发送data或者只发data。

0 3

创建脚本

在编写脚本前先通过浏览器查看建立连接的过程,首先打开一个文档时通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式将连接升级为WebSocket。

10882db73d3adbc748ced8514896afa4.png

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

518083f59b984e27043634b033db283f.png

后续通过WebSocket协议提交、广播、拉取各种类型的增量数据。

了解了这些之后就可以开始在测试场景中添加和配置WebSocket的sampler编写脚本。

1.右键单击测试计划,选择添加->线程->线程组,将一个线程组添加到测试计划。

2.在线程组添加WebSocket request-response Sampler建立连接,选择建立新连接,并发送请求数据如下:

b30f9157f0033d90f45b69c7015c3c7c.png

说明:

(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,配置条件过滤掉不需要的数据帧,如心跳帧等。

a6d152307681db9ce0a0a7e7a4885c31.png

右键添加->断言->响应断言,添加断言对建立连接的响应帧进行判断。

180873bc125508f5e78255a8d30bc563.png

第一个建立连接的请求成功后,后续WebSocket request-response Sampler的连接类型选择使用已存在的连接,下面的Server URL全置灰只读不可操作。

7a5c04c3903cceebcceb020f09dce3a6.png

添加后续的SUBSCRIBE订阅文档,通过固定请求数据中的文档id可以使所有用户打开同一个文档,添加SEND类型为CLIENT_READY消息请求后,就完成了基本的打开文档建立连接的操作,之后可以添加循环控制器并用类似的方法添加发送编辑文档的请求。

0 4

运行脚本

脚本完成之后配置线程组的线程数,循环次数或执行时间,即可模拟并发用户同时编辑文档,添加结果树、聚合报告等监听器后可以查看测试的运行情况:

66505e479491d3b3a110cb4272d3ddde.png

从浏览器也可以验证收到了其他并发用户广播的数据。

dfc8b64eab92525f72255421077919e6.png

除了多用户协同编辑用一个文档的场景,性能测试的过程中还覆盖了协同用户保存同一文档、不同文档同时保存等场景,确保测试场景的充分性。

e79e0e7588a755f29ac2d9d2b5a87ac8.pngEND 575da2fed905a7eeeabc0934a77179f2.png 如果你有任何关于 测试的问题 或者 想要了解的知识 ,欢迎评论区留言给我们,小编会在第一时间给你解答的~

6773fdfa269642378cb38c545ab53d2a.png

推荐阅读

点击阅读☞入门必会:小白必看的Jmeter负载测试实例

点击阅读☞Jmeter压力测试中关于Http的那些事儿

点击阅读☞JMeter也可以实现自动化测试啦!

点击阅读☞看完这篇就能实战,JMeter实现分布式压测

点击阅读☞Jmeter实现接口压测的完整流程,不要再说你不会了!

f7d57746ddfe7809cb1d7b4f1259f15d.png

b6605d9e793063cfaa2ae019cd60651a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值