• “Jmeter WebSocket协议压测”,助你轻松应对高并发场景!


    目录

    引言

    背景说明

    步骤1:安装插件JMeter WebSocket Samplers

    步骤2:采集器使用

    步骤3:脚本执行

     结语


    引言

    在当今高并发的网络环境下,WebSocket协议已经成为了最受欢迎的实时通信技术之一。然而,对于开发人员来说,如何有效地压测WebSocket协议仍是一个挑战。

    Jmeter是一款功能强大、易用的负载测试工具,而它也可以轻松地对WebSocket协议进行压测。通过使用Jmeter测试WebSocket协议,您可以验证您的应用程序在高并发场景下的性能表现,并及时发现和解决潜在的性能问题。

    因此,如果您正在寻找一种可靠且高效的方式来测试WebSocket协议,那么使用Jmeter进行WebSocket协议压测将是您不错的选择!

    背景说明

    目前市面上的协议种类繁多,我们可以通过Jmeter添加插件实现脚本编写,这里以WebSocket协议的业务压测为例来说明。

    WebSocket的插件较多,本文以JMeter WebSocket Samplers为例来进行压测。JMeter WebSocket Samplers具有以下特性:

    • 提供 6 个不同的 WebSocket 采样器
    • 采样器不会创建额外的线程,因此可以使用大量的 JMeter 线程,
    • 支持 wss(基于 TLS 的 WebSocket)
    • wss 支持与 JMeter 的 SSLManager 完全兼容,包括客户端证书
    • 支持二进制 WebSocket 帧
    • 用于检查二进制响应的断言
    • 在“查看结果树”中查看二进制结果
    • 与 JMeter 的 Header Manager 集成以在 WebScoket 升级请求上设置额外的 HTTP 标头
    • 在每次升级请求(即发起 WebSocket 连接的 HTTP 请求)时发送由 JMeter 的 Cookie Manager 定义的 cookie
    • 代理支持
    • 提供用于丢弃与测试无关的帧的过滤器
    • 许多示例 JMeter 测试计划说明了各种功能。

    步骤1:安装插件JMeter WebSocket Samplers

    1. 下载地址:JMeter WebSocket Samplers,建议下载最新版本。
    2. 将下载的插件 .jar包存放在/lib/ext路径下。
    3. 打开JMeter工具,查看插件是否安装成功:

    线程组->添加->取样器,可以看到以下添加的采样器选择,具体说明如下:

    采集器名称

    说明

    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

    用于执行基本的请求-响应请求

    步骤2:采集器使用

    下面对JMeter WebSocket Samplers各采集器的配置与使用进行说明

    1. 首选创建一个线程组,添加到测试计划中,添加->线程(用户)->线程组
    2. 添加一个WebSocket Open Connection采集器,线程组->添加->取样器->WebSocket Open Connection,该采集器为建立WebSocket连接

    相关配置说明:

    配置项

    说明

    协议

    协议可以是WS或WSS,WSS是进行加密连接。

    Server name or IP

    域名或IP地址

    Port

    端口号

    Path

    路径,可为空

    Connection timeout(ms)

    建连的超时时间

    Read timeout(ms)

    等待服务器响应的超时时间

    3. 添加一个WebSocket Ping/Pong采集器,线程组->添加->取样器->WebSocket Ping/Pong,该采集器用于发送ping和接收 pong请求

    相关配置说明:

    配置项

    说明

    ping/pong(send ping,expect pong)

    用于发送ping和接收pong

    pong(just send pong)

    仅发送未经请求的pong

    pong(read) timeout(ms)

    表示如果JMeter在20秒内没有收到Pong消息,则Sampler将失效。此Sampler会复用已有连接

    4. 添加一个WebSocket Single Read Sampler采集器,线程组->添加->取样器->WebSocket Single Read Sampler,用于接收一个(文本或二进制)WebSocket 帧

    配置项

    说明

    use existing connection

    复用已有连接

    setup new connection

    创建新的连接

    Response (read) timeout (ms)

    响应超时时间

    5. 添加一个WebSocket Single Write Sampler采集器,线程组->添加->取样器->WebSocket Single Write Sampler,用于发送一个(文本或二进制)WebSocket 帧

    配置项

    说明

    use existing connection

    复用已有连接

    setup new connection

    创建新的连接

    Request data

    填写请求数据

    6. 添加一个WebSocket request-response Sampler采集器,线程组->添加->取样器->WebSocket request-response Sampler,用于执行基本的请求-响应请求

    配置项

    说明

    use existing connection

    复用已有连接

    setup new connection

    创建新的连接

    Request data

    填写请求数据

    Response (read) timeout (ms)

    响应超时时间

    7. 添加一个WebSocket Close采集器,线程组->添加->取样器->WebSocket Close,用于正常关闭 websocket 连接

    配置项

    说明

    Close Status

    关闭连接时定义的状态码,数据帧的头两个字节

    Response (read) timeout (ms)

    响应超时时间

    8. 右键单击线程组,选择添加 -> 监听器 -> 查看结果树,在线程组中添加监听器查看结果树,用于接收服务端的消息响应。

    步骤3:脚本执行

    根据上面步骤二选择需要的采集器进行脚本编辑完成后,单击页面顶部的开始按钮,运行脚本。

    通过查看结果树查看脚本是否运行正常。在左侧导航树中,选择查看结果树,查看请求结果是否符合预期。如果出现请求失败的,需要根据步骤二重新调整脚本。

    ---------------------------------------

     获取方式:留言【软件测试学习】即可

     结语

    这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

    如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

  • 相关阅读:
    程序员如何具备跨行业视角
    Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
    基于JAVA网络教学平台计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    IOC容器创建bean实例的4种方式
    Stream流总结
    【语音编码】基于matlab ADPCM编解码(Matlab代码实现)
    Linux开机启动流程/socket/软中断和硬中断
    剑指 Offer 31. 栈的压入、弹出序列
    Qt应用开发(基础篇)——普通按钮类 QPushButton QCommandLinkButton
    AttributeError: ‘bytes‘ object has no attribute ‘encode‘异常解决方案
  • 原文地址:https://blog.csdn.net/weixin_67553250/article/details/130912922