最近项目弄了基于websocket的通信接口,所以需要做一个websocket的接口压测。

  jmeter当前自带的插件无法进行jmeter接口的通信,所以 本人是下载的一套jar包插件,进行的安装

  1、插件下载地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.0.0.6cfd2486vZsEcu

  2、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 测试计划说明了各种功能

  3、将下载的插件 .jar包存放在<JMeter安装目录>/lib/ext路径下。

  4、插件名称与说明

采集器名称

说明

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

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

  5、在jmeter中创建线程组-add-sampler

  6、这些插件就是进行websocket通讯,首先设置open Connection进行建立连接

    

    1、websocket分为:ws\wss,相当于 http\https的区别

    2、输入socket地址或ip地址

    3、端口号

    4、接口路径 

  7、创建查看结果树,在结果树中查看返回结果

关于本文没有涉及的代理、过滤、分片等信息,请参见 JMeter WebSocket Samplers 插件介绍。

操作步骤如下:

步骤一:安装插件 JMeter WebSocket Samplers

  1. 下载 JMeter WebSocket Samplers,建议下载最新版本。
  2. 将下载的插件 .jar 包存放在 <JMeter安装目录>/lib/ext 路径下。
     
    注意 在 PTS 中发起压测时,此处下载的插件 .jar 包需要上传到 PTS。请参见步骤五:上传脚本、插件 JAR 包和其他文件至 PTS 进行压测。
  3. 重启 JMeter。

    重启 JMeter 之后,按照以下步骤查看插件是否安装成功:

    • 右键单击左侧导航树中的 Test Plan,选择 Add > Config Element,可看到新增的配件元件选项 WebSocket Binary Frame Filter、WebSocket Ping/Pong Frame Filter 和 WebSocket Text Frame Filter 。

    • 右键单击左侧导航树中的 Test Plan,选择 Add > Assertions,可看到新增的断言选项 Binary Response Assertion。

    • 右键单击左侧导航树中的 Test Plan,选择 Add > listener > View Results Tree,在编辑页面左下方的下拉列表中,可看到新增的选项 Binary。

    • 右键单击左侧导航树中的 Test Plan,选择 Add > Threads(Users) > Thread Group ,右键单击 Thread Group,选择 Add > Sampler,可看到以下新增的采样器选项,具体说明如下。

       
      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。

步骤二:创建脚本

下面将演示如何在测试场景中添加并配置 Sampler。以下为简单示例,您可以根据业务需要进行调整。

  1. 在 Jmeter 页面中,右键单击 Test Plan,选 Add > Thread (Users) > Thread Group,将一个线程组添加到测试计划中。
  2. 在线程组中依次添加采样器(Sampler),并进行配置。右键单击 Thread Group,选择 Add > Sampler > WebSocket Open Connection。当前的 Sampler 将建立 WebSocket 连接。

     
    说明 我们以 Gateway Echo 服务来创建脚本(wss://echo.websocket.org) 。这是一个 Echo 服务,因此发送到此服务的所有消息都将回显给客户端。

    相关的配置如下:

     
    配置项 示例值 说明
    协议 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 等待服务器响应的超时时间
  3. 右键单击 Thread Group,选择 Add > Sampler > WebSocket Ping/Pong。该 Sampler 用来测试 Ping/Pong 功能。

    相关配置如下:

    Pong(读)超时(ms):6000

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

  4. 右键单击 Thread Group,选择 Add > Sampler > WebSocket request-response Sampler。

    相关配置如下:

     
    配置项 示例值 说明
    Connection use existing connection 创建新的连接或复用已有连接。
    数据类型 文本 指定数据类型、请求数据和响应超时值。
    Request data PTS 请求数据,这里以文本为例
    Response(read)timeout(ms) 6000 响应超时时间
  5. 右键单击 Thread Group,选择 Add > Sampler > WebSocket Single Write Sampler 。此请求是非阻塞的,只是将数据发送到服务端不需要等待响应。

    相关配置如下:

     
    配置项 示例值 说明
    Connection use existing connection 创建新的连接或复用已有连接
    数据类型 文本 指定数据类型、请求数据和响应超时值
    Request data PTS 请求数据,这里以文本为例
    Response(read)timeout(ms) 6000 响应超时时间
  6. 右键单击 Thread Group,选择 Add > Sampler > WebSocket Single Read Sampler。接收服务端的消息响应需要使用这个 Sampler。

    相关配置如下:

     
    配置项 示例值 说明
    Connection use existing connection 创建新的连接或复用已有连接
    数据类型 文本 指定数据类型、请求数据和响应超时值
    Response(read)timeout(ms) 6000 响应超时时间
  7. 右键单击 Thread Group,选择 Add > Sampler > WebSocket Close。接收服务端的消息响应需要使用这个 Sampler。

    相关配置如下:

     
    配置项 示例值 说明
    Close Status 二进制 关闭连接时定义的状态码,数据帧的头两个字节
    Response(read)timeout(ms) 6000 响应超时时间

    此采样器将关闭现有的 WebSocket 连接,由于是协商关闭,显示原因为 “1000:sampler requested close”。

  8. 右键单击 Thread Group,选择 Add > Listener > View Results Tree,在线程组中添加监听器 View Results Tree。接收服务端的消息响应需要使用这个 Sampler。

步骤三:运行脚本

脚本编辑完成后,单击页面顶部的开始按钮,运行脚本。

通过 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 如下:

步骤四:导出脚本

当本地脚本调试成功后,选择顶部菜单栏的 File > Save Test Plan as,将脚本文件保存至本地。

步骤五:上传脚本、插件 JAR 包和其他文件至 PTS 进行压测

您需准备以下文件,上传到 PTS:

  1. 导出的 JMeter 脚本(.jmx 文件)
  2. JMeter WebSocket Samplers 的 JAR 包
  3. 脚本中使用的其他数据文件

关于在 PTS 中压测的操作步骤,请参见 JMeter 压测。

https://www.cnblogs.com/Jaredhan/p/15724026.html
https://www.cnblogs.com/sunyllove/p/14442257.html

jmeter进行websocket 通信的更多相关文章

  1. Jmeter实现WebSocket协议的接口和性能测试方法

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一 ...

  2. Jmeter中Websocket协议支持包的使用

    Jmeter中Websocket协议支持包的使用(转) 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan.cn/cFzwiyeQDKdh3 (提取码:9bcf)) 转自:ht ...

  3. 使用jmeter进行websocket协议压测

    第一步:添加websocket sampler组件 可以使用plugins manager进行添加,首先下载plugins manager组件: 下载路径:  https://jmeter-plugi ...

  4. jmeter 测试websocket接口(一)

    jmeter 测试websocket接口时,需要对jmeter添加测试websocket的jar包. 下载地址: https://download.csdn.net/download/qq_14913 ...

  5. Jmeter中Websocket协议支持包的使用(转)

    转自:http://blog.csdn.net/typing_yes_no/article/details/49512167 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan ...

  6. Jmeter进行webSocket接口测试

    一.运行Jmeter (1) 去官方网站下载jmeter(版本为3.3)并解压.点击bin/jmeter.bat启动jmeter (2)  新建线程组. (3) 在线程组中新建WebSocket Sa ...

  7. jmeter中websocket接口测试

    一.Websocket协议简介 Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说: HTTP协议: HTTP的生命周期通过 Request 来界定,也就是一个 Request  ...

  8. jmeter 测试 websocket 接口

    https://www.cnblogs.com/penghaihang/p/7724830.html(请求的亲测ok) https://www.jianshu.com/p/bb8b3e928607 h ...

  9. 『动善时』JMeter基础 — 50、使用JMeter测试WebSocket接口

    目录 1.什么是WebSocket接口 2.为什么需要WebSocket 3.测试WebService接口前的准备 4.WebSocket Sampler组件界面详解 5.使用JMeter测试WebS ...

  10. C#(SuperWebSocket)与websocket通信

    原文:C#(SuperWebSocket)与websocket通信 客户端代码 点击可以查看一些关于websocket的介绍 <!DOCTYPE html> <html> &l ...

随机推荐

  1. python之路38 SQL注入问题 索引触发器 事务 存储过程 函数 流程控制

    SQL注入问题 怪像1:输对用户名就可以登录成功 怪像2:不需要对的用户名和密码也可以登录成功 SQL注入:利用特殊符号的组合产生特殊的含义 从而避开正常的业务逻辑 select * from use ...

  2. CSP/S 2022 游寄

    初赛 HN 初赛分数线好像大 \(32\) 分左右,通过率极高!本人弱弱的拿了 \(60.5\) 分(周围的同学平均分 \(>80\).) Day -1 这一天晚上,我背了背 dijkstra, ...

  3. React中实现keepalive组件缓存效果

    背景:由于react官方并没有提供缓存组件相关的api(类似vue中的keepalive),在某些场景,会使得页面交互性变的很差,比如在有搜索条件的表格页面,点击某一条数据跳转到详情页面,再返回表格页 ...

  4. AIR32F103(八) 集成Helix MP3解码库播放MP3

    目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...

  5. 史上最简单 OpenCV for C++ 在 Windows 和 Ubuntu 上编译安装使用教程

    准备工作 原材料 Ubuntu 系统(非必须,Windows 也可以,主要是 Ubuntu 适合编译) OpenCV 3.4.1 压缩包 OpenCV contrib 3.4.1 压缩包 MinGW( ...

  6. Quartz.Net 官方教程 Tutorial 2/3(Listener 和 JobStore)

    Listener 调度任务的监听,当前版本支持添加调度,触发器和任务的监听,其中触发器和任务的监听支持通过监听名称进行添加(Add*ListenerMatcher方法) 监听不能对外抛出异常,需要内部 ...

  7. DJI Flight Simulator 无人机模拟器 功能介绍与使用说明

    0 前言 无人机是当前非常火热的"相机设备",而大疆又是其中翘楚,功能丰富,可以说是一个将带着云台的智能手机放到了天空中.如果你有自己玩过旋翼无人机航模的话,可能会体会到大疆的另一 ...

  8. ASP.NET Core - .NET 6 的入口文件

    自从.NET 6 开始,微软对应用的入口文件进行了调整,移除了 Main 方法和 Startup 文件,使用顶级语句的写法,将应用初始化的相关配置和操作全部集中在 Program.cs 文件中,如下: ...

  9. 断点调试/认证/权限/频率-源码分析/基于APIView编写分页/异常处理

    内容概要 断点调试 认证/权限/频率-源码分析 基于APIView编写分页 异常处理 断点调试 # 程序以 debug模式运行,可以在任意位置停下,查看当前情况下变量数据的变化情况 # pycharm ...

  10. P12_小程序API的3大分类

    小程序 API 概述 小程序中的 API 是由宿主环境提供的,通过这些丰富的小程序 API,开发者可以方便的调用微信提供的能力,例如:获取用户信息.本地存储.支付功能等. 小程序 API 的 3 大分 ...