一、Websocket接口性能测试的场景
场景1: 大量链接的创建和关闭——不断模拟大量用户对Websocket链接的创建、关闭过程。
场景2: 长时间保持大量连接——创建大量链接,保持链接较长时间。
场景3:大量推送消息——可以少量链接较长时间保持,不断触发消息推送
二、测试工具
JMeter
下载插件及依赖包
插件地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.2.23.363f59572g7WZB
需要的依赖包:
将下载的插件包、依赖包放到 JMeter的 libext 目录下,之后启动JMeter。
三、测试步骤
1、步骤一
右键单击左侧导航树中的 Test Plan,选择
右键单击左侧导航树中的 Test Plan,选择
右键单击左侧导航树中的 Test Plan,选择
Sampler 名称 | 说明 |
---|---|
WebSocket Open Connection | 建立一个 WebSocket 连接 |
WebSocket Ping/Pong | 控制帧,发送 ping 并接收 pong |
WebSocket request-response Sampler | 发送和接收文本或二进制 WebSocket 帧 |
WebSocket Single Write Sampler | 发送文本或二进制 WebSocket 帧 |
WebSocket Single Read Sampler | 接收文本或二进制 WebSocket 帧 |
WebSocket Close | 关闭 Websocket 连接 |
下一步,需要配置这些 Sampler。
2、步骤二
下面将演示如何在测试场景中添加并配置 Sampler。以下为简单示例,您可以根据业务需要进行调整。
相关的配置如下:
配置项 | 示例值 | 说明 |
---|---|---|
协议 | WS | 协议可以是 WS 或 WSS(Secure WebSocket)。使用 WSS 进行加密连接。 |
Server name or IP | echo.websocket.org | 域名或 IP |
Port | 443 | 端口 |
Path | - | 可为空 |
Connection timeout(ms) | 20000 | 建连的超时时间 |
Read timeout(ms) | 6000 | 等待服务器响应的超时时间 |
相关配置如下:
配置项 | 示例值 | 说明 |
---|---|---|
Connection | use existing connection | 创建新的连接或复用已有连接。 |
数据类型 | 文本 | 指定数据类型、请求数据和响应超时值。 |
Request data | PTS | 请求数据,这里以文本为例 |
Response(read)timeout(ms) | 6000 | 响应超时时间 |
相关配置如下:
配置项 | 示例值 | 说明 |
---|---|---|
Connection | use existing connection | 创建新的连接或复用已有连接 |
数据类型 | 文本 | 指定数据类型、请求数据和响应超时值 |
Request data | PTS | 请求数据,这里以文本为例 |
Response(read)timeout(ms) | 6000 | 响应超时时间 |
相关配置如下:
配置项 | 示例值 | 说明 |
---|---|---|
Connection | use existing connection | 创建新的连接或复用已有连接 |
数据类型 | 文本 | 指定数据类型、请求数据和响应超时值 |
Response(read)timeout(ms) | 6000 | 响应超时时间 |
相关配置如下:
配置项 | 示例值 | 说明 |
---|---|---|
Close Status | 二进制 | 关闭连接时定义的状态码,数据帧的头两个字节 |
Response(read)timeout(ms) | 6000 | 响应超时时间 |
此采样器将关闭现有的 WebSocket 连接,由于是协商关闭,显示原因为 “1000:sampler requested close”。
3、步骤三:运行脚本
脚本编辑完成后,单击页面顶部的开始按钮,运行脚本。
通过 View Results Tree 监听器查看脚本是否运行正常。在左侧导航树中,选择View Results Tree,检查所有 Sampler 是否都配置正确并符合预期。在该监听器中,如果 Sampler 前面有绿色对勾表示运行正常。
如出现运行异常的 Sampler,请参见步骤二:创建脚本进行调试。
部分示例结果如下:
WebSocket request-response Sampler
根据脚本配置,Request 信息如下:
根据脚本配置,Binary 格式的 Response data 如下:
WebSocket Single Read Sampler
根据脚本配置,Text 格式的 Response data 如下:
根据脚本配置,Binary 格式的 Response data 如下:
转载:https://help.aliyun.com/document_detail/93627.html#section-rvj-q97-lii