背景
我们可以通过Jmeter添加插件实现webSocket脚本编写。WebSocket的插件较多,我选择以WebSocket Samplers by Peter Doornbosch为例来进行配置。
步骤1、WebSocket Samplers插件安装
- 下载地址:JMeter WebSocket Samplers,建议下载最新版本。
- 下载的插件放置在jmeter安装目录下的lib->ext文件夹下
- 打开jemter添加取样器,查看是否安装成功,如果可以选择到websocket相关链接代表成功。
-
采集器名称
说明
WebSocket Close
用于正常关闭 websocket 连接
WebSocket Open Connection
用于显式设置websocket连接
WebSocket Ping/Pong
用于发送ping和接收pong请求
WebSocket Single Read Sampler
用于接收一个(文本或二进制)WebSocket 帧
WebSocket Single Write Sampler
用于发送一个(文本或二进制)WebSocket 帧
WebSocket request-response Sampler
用于执行基本的请求-响应请求
- 注意:
因为WebSocket是长连接流式通讯,所以可能存在发送一个请求收到多条响应的情况。收到的响应会以先后顺序排在一个响应队列中。当执行一个有读操作的Sampler时,就从队列头部取出一个响应;每当收到一个响应时,就将其放到队列尾部。
WebSocket Single Read Sampler是一个只读Sampler,它只从队列头部读取一个响应,如果读不到就等待,直至超时。
WebSocket Single Write Sampler是一个只写Sampler,它只向连接通道发送一个请求且不等待响应。
WebSocket Request Response Sampler是一个读写Sampler,它向连接通道发送一个请求,然后从响应队列头部读取一个响应,如果读不到就等待,直至超时。
如果放置的读Sampler和写Sampler数量不合适,可能会出现读到的数据错位的现象。
(比如:服务端每2秒固定生成1个通知消息,添加到队列中,那么20秒以后,队列中已经有10条消息,此时,你触发1条请求,服务端对该请求进行响应,你需要读取11次才会拿到该响应值,前10次拿到的是已经生产的队列中的通知消息)
步骤2:采集器使用
下面对JMeter WebSocket Samplers各采集器的配置与使用进行说明
- 首选创建一个线程组,添加到测试计划中,添加->线程(用户)->线程组
- 添加一个WebSocket Open Connection采集器,线程组->添加->取样器->WebSocket Open Connection,该采集器为建立WebSocket连接
-
相关配置说明:
配置项
说明
协议
协议可以是WS或WSS,WSS是进行加密连接。
Server name or IP
域名或IP地址
Port
端口号
Path
路径,可为空
Connection timeout(ms)
建连的超时时间
Read timeout(ms)
等待服务器响应的超时时间
- . 添加一个WebSocket Single Read Sampler采集器,线程组->添加->取样器->WebSocket Single Read Sampler,用于接收一个(文本或二进制)WebSocket 帧
配置项
说明
use existing connection
复用已有连接
setup new connection
创建新的连接
Response (read) timeout (ms)
响应超时时间
- 添加一个WebSocket Single Write Sampler采集器,线程组->添加->取样器->WebSocket Single Write Sampler,用于发送一个(文本或二进制)WebSocket 帧
配置项
说明
use existing connection
复用已有连接
setup new connection
创建新的连接
Request data
填写请求数据
- 添加一个WebSocket request-response Sampler采集器,线程组->添加->取样器->WebSocket request-response Sampler,用于执行基本的请求-响应请求
配置项
说明
use existing connection
复用已有连接
setup new connection
创建新的连接
Request data
填写请求数据
Response (read) timeout (ms)
响应超时时间
- . 添加一个WebSocket Close采集器,线程组->添加->取样器->WebSocket Close,用于正常关闭 websocket 连接
配置项
说明
Close Status
关闭连接时定义的状态码,数据帧的头两个字节
Response (read) timeout (ms)
响应超时时间
- 右键单击线程组,选择添加 -> 监听器 -> 查看结果树,在线程组中添加监听器查看结果树,用于接收服务端的消息响应。