JMeter 测试 WebSocket 接口的详细教程

1. 安装 WebSocket 插件

方法一:通过 Plugins Manager

  1. 下载并安装 JMeter Plugins Manager
  2. 在 JMeter 中:Options → Plugins Manager
  3. 搜索 WebSocket 并安装

方法二:手动安装

  1. 下载 jmeter-websocket-samplers 插件
  2. 将 jar 文件放到 JMeter/lib/ext/ 目录
  3. 重启 JMeter

手动安装可参考这个文档:jmeter报错CannotResolveClassException: WebSocketSampler ,JMeter 缺少 WebSocket 插件依赖解决方案_jmeter选择websocket sampler error: java.lang.classca-CSDN博客


2. 创建 WebSocket 测试计划

2.1 添加线程组

测试计划 → 右键 → Add → Threads → Thread Group

2.2 添加 WebSocket Sampler

Thread Group → 右键 → Add → Sampler → WebSocket Single Read Sampler

Thread Group → 右键 → Add → Sampler → WebSocket Single Write Sampler


3. 配置 WebSocket 连接

3.1 WebSocket Open Connection

名称: WebSocket Open Connection
Server Name or IP: localhost
Port Number: 8080
Path: /websocket
Protocol: ws 或 wss (安全连接)

示例配置:

Server: echo.websocket.org
Port: 80
Path: /
Protocol: ws

3.2 连接参数

Connection timeout: 5000 (毫秒)
Response timeout: 20000 (毫秒)
Ignore SSL certificate: 勾选(如果是 wss)

4. WebSocket 操作类型

4.1 发送消息 (Write Sampler)

Thread Group → Add → Sampler → WebSocket Single Write Sampler

配置:

- Request data: {"message": "Hello WebSocket"}
- Data type: Text 或 Binary

4.2 接收消息 (Read Sampler)

Thread Group → Add → Sampler → WebSocket Single Read Sampler

配置:

- Timeout: 等待响应时间
- Message count: 期望接收的消息数量

4.3 关闭连接 (Close Connection)

Thread Group → Add → Sampler → WebSocket Close

5. 完整测试示例

5.1 测试计划结构

Test Plan

├── Thread Group├── WebSocket Open Connection├── WebSocket Single Write Sampler (发送消息)├── WebSocket Single Read Sampler (读取响应)├── WebSocket Single Write Sampler (发送第二条消息)├── WebSocket Single Read Sampler (读取第二个响应)└── WebSocket Close

5.2 配置示例

Open Connection:

Server: localhost
Port: 8080
Path: /chat
Protocol: ws

Write Sampler:

Request data: {"type":"join","username":"testuser"}

Read Sampler:

Timeout: 10000Message Count: 1

6. 添加断言和监听器

6.1 响应断言

WebSocket Read Sampler → 右键 → Add → Assertions → Response Assertion
Pattern to Test: Response Text
Pattern Matching Rules: Contains
Patterns to Test: "success" 或期望的响应内容

6.2 查看结果

Thread Group → Add → Listener → View Results TreeThread Group → Add → Listener → Summary Report

7. 高级配置

7.1 使用变量

// 在 User Defined Variables 中定义
SERVER_HOST: localhost
WS_PORT: 8080
WS_PATH: /websocket
// 在 WebSocket Sampler 中使用
Server: ${SERVER_HOST}
Port: ${WS_PORT}
Path: ${WS_PATH}

7.2 动态消息内容

// 使用函数
{"userId": "${__UUID()}", "message": "Hello ${__time()}"}
// 使用 CSV 数据
{"userId": "${userId}", "message": "${message}"}

7.3 处理认证

// 在消息中包含 token
{"token": "${access_token}", "data": "test message"}
// 或在 URL 中
Path: /websocket?token=${access_token}

8. 实际测试场景

8.1 聊天应用测试

1. 连接 WebSocket

2. 发送加入房间消息

3. 等待确认响应

4. 发送聊天消息

5. 验证消息广播

6. 断开连接

8.2 实时数据测试

1. 建立连接

2. 订阅数据流

3. 持续接收数据

4. 验证数据格式

5. 测试连接稳定性


9. 性能测试

9.1 并发连接测试

Thread Group 配置:

- Number of Threads: 100
- Ramp-up Period: 60
- Loop Count: 1
测试场景:
- 100个并发用户同时连接
- 每个用户发送多条消息
- 监控服务器性能

9.2 压力测试

// 大量消息发送
for (int i = 0; i < 1000; i++) {send({"index": i, "data": "test message " + i});Thread.sleep(10); // 10ms 间隔
}

10. 常见问题处理

10.1 连接失败

- 检查服务器地址和端口

- 确认 WebSocket 服务正在运行

- 检查防火墙设置

10.2 消息格式问题

// 确保 JSON 格式正确
正确:{"message": "hello"}
错误:{message: "hello"}

10.3 超时问题

- 适当增加 timeout 值

- 检查网络延迟

- 确认服务器响应时间

11. 监控指标

关注以下指标:

  • 连接建立时间
  • 消息发送/接收延迟
  • 连接成功率
  • 错误率
  • 吞吐量

这样就可以全面测试 WebSocket 接口的功能和性能了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92986.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

飞算JavaAI智慧教育场景实践:从个性化学习到教学管理的全链路技术革新

目录一、智慧教育核心场景的技术突破1.1 个性化学习路径推荐系统1.1.1 学习者能力建模与评估1.2 智能教学管理系统1.2.1 自动化作业批改与学情分析1.3 教育资源智能管理系统1.3.1 教育资源智能标签与推荐二、智慧教育系统效能升级实践2.1 教育数据中台构建2.1.1 教育数据整合与…

Java面试场景题大全精简版

1.分布式系统下如何实现服务限流核心算法&#xff1a;固定窗口&#xff1a;将时间划分为固定窗口&#xff08;如 1 秒&#xff09;&#xff0c;统计窗口内请求数&#xff0c;超过阈值则限流。实现简单但存在临界值突发流量问题。滑动窗口&#xff1a;将固定窗口拆分为多个小窗口…

红帽 AI 推理服务 (vLLM) - 入门篇

《教程汇总》 RedHat AI Inference Server 和 vLLM vLLM (Virtual Large Language Model) 是一款专为大语言模型推理加速而设计的框架。它是由加州大学伯克利分校 (UC Berkeley) 的研究团队于 2023 年开源的项目&#xff0c;目前 UC Berkeley 和 RedHat 分别是 vLLM 开源社区…

Sql server 命令行和控制台使用二三事

近来遇到了几件关于sql server的事情。 第一&#xff1a;低版本sqlserver备份竟然无法还原到高版本 奇怪&#xff01;从来未碰到过。过程如下&#xff1a; 1.在低版本上中备份好了数据库 2.通过共享将文件拷贝到新服务器上 3.打开控制台&#xff0c;还原数据库&#xff0c;结果…

vue excel转json功能 xlsx

需求&#xff1a; 完成excel表格内容转json&#xff0c;excel表格内可能存在多个表格&#xff0c;要求全部解析出来。完成表格内合服功能&#xff0c;即&#xff1a;提取表格内老服务器与新服务器数据&#xff0c;多台老服务器对应合并到一台新服务器上 3.最终输出结果为:[{‘1…

Qwen-OCR:开源OCR技术的演进与全面分析

目录 一、Qwen-OCR的历史与发展 1.1 起源与早期发展(2018-2020) 1.2 技术突破期(2020-2022) 1.3 开源与生态建设(2022至今) 二、技术竞品分析 2.1 国际主流OCR解决方案对比 2.2 国内竞品分析 三、部署需求与技术规格 3.1 硬件需求 3.2 软件依赖 3.3 云部署方案 四、…

可视化+自动化:招聘管理看板软件的核心技术架构解析

引言&#xff1a;现代招聘的挑战与转型随着全球化和科技的迅速发展&#xff0c;企业的人力资源管理面临着前所未有的挑战。尤其是在招聘环节&#xff0c;随着人才市场的竞争日益激烈&#xff0c;企业必须在确保招聘质量的同时&#xff0c;提升招聘效率。这不仅要求招聘人员具备…

【数据结构】——栈(Stack)的原理与实现

目录一. 栈的认识1. 栈的基本概念2.栈的基本操作二. 栈的核心优势1. 高效的时间复杂度2. 简洁的逻辑设计3. 内存管理优化三. 栈的代码实现1.栈的结构定义2. 栈的初始化3. 入栈 &#xff08;动态扩容&#xff09;4. 出栈5. 取栈顶数据6. 判断栈是否为空7. 获取栈的数据个数8.销毁…

使用TexLive与VScode排版论文

前言 中文稿目前已经完成了&#xff0c;现在要转用latex排版&#xff0c;但我对这方面没有接触过&#xff0c;这里做一个记录。 网页版Overleaf&#xff1a;Overleaf, 在线LaTeX编辑器。 TeXWorks&#xff1a;论文神器teXWorks安装与使用记录。 这里我还是决定采用Vscode作…

每日一题:2的幂数组中查询范围内的乘积;快速幂算法

题目选自2438. 二的幂数组中查询范围内的乘积 还是一样的&#xff0c;先讲解思路&#xff0c;然后再说代码。 题目有一定难度&#xff0c;所以我要争取使所有人都能看懂&#xff0c;用的方法会用最常规的思想。关于语言&#xff0c;都是互通的&#xff0c;只要你懂了一门语言…

Ceph数据副本机制详解

Ceph 数据副本机制详解 Ceph 的数据副本机制是其保证数据可靠性和高可用性的核心设计&#xff0c;主要通过多副本&#xff08;Replication&#xff09; 和 纠删码&#xff08;Erasure Coding&#xff0c;EC&#xff09; 两种方式实现。以下是对 Ceph 数据副本机制的全面解析&am…

【八股】Mysql中小厂八股

MySQL 基础 数据库三大范式&#xff08;中&#xff09; 第一范式: 要求数据库表的每一列都是不可分割的原子数据项 如详细地址可以分割为省市区等. 第二范式: 非主键属性必须完全依赖于主键, 不能部分依赖 第二范式要确保数据库表中的每一列都和主键相关, 而不能只与主键的某一…

怎么使用python查看网页源代码

使用python查看网页源代码的方法&#xff1a;1、使用“import”命令导入requests包import requests2、使用该包的get()方法&#xff0c;将要查看的网页链接传递进去&#xff0c;结果赋给变量xx requests.get(urlhttp://www.hao123.com)3、用“print (x.text)”语句把网页的内容…

C# 多线程:并发编程的原理与实践

深入探讨 C# 多线程&#xff1a;并发编程的原理与实践引言在现代应用开发中&#xff0c;性能和响应速度往往决定了用户体验的优劣。尤其在计算密集型或者IO密集型任务中&#xff0c;传统的单线程模型可能无法有效利用多核CPU的优势。因此&#xff0c;多线程技术成为了解决这些问…

react 常用组件库

1. Ant Design&#xff08;蚂蚁设计&#xff09;特点&#xff1a;国内最流行的企业级 UI 组件库之一&#xff0c;基于「中后台设计体系」&#xff0c;组件丰富&#xff08;表单、表格、弹窗、导航等&#xff09;、设计规范统一&#xff0c;支持主题定制和国际化。适用场景&…

Python 爬虫获取淘宝商品信息、价格及主图的实战指南

在电商数据分析、竞品调研或商品信息采集等场景中&#xff0c;获取淘宝商品的详细信息&#xff08;如价格、主图等&#xff09;是常见的需求。虽然淘宝开放平台提供了官方的 API 接口&#xff0c;但使用这些接口需要一定的开发和配置工作。本文将通过 Python 爬虫的方式&#x…

Ruby面向对象编程中类与方法的基础学习例子解析

代码示例&#xff1a; Ruby面向对象编程中类与方法的基础学习详细例子 1. 引言 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;类是定义对象结构和行为的蓝图。Ruby是一种纯面向对象的编程语言&#xff0c;它将一切视为对象&#xff0c;包括基本数据类型。本文将…

[ Mybatis 多表关联查询 ] resultMap

目录 一. resultMap 1. 使用场景: 2. 查询映射: (1)单表查询映射: (2)多表查询映射: a. 在学生表里查专业 b. 在专业表里查学生 二. 其他注意事项 1. 插件下载 2. #{ } 和 ${ }的区别 一. resultMap 1. 使用场景: (1)当数据库列名和java类中的属性名不同时,可⽤ r…

Rust 性能提升“最后一公里”:详解 Profiling 瓶颈定位与优化|得物技术

一、Profiling&#xff1a;揭示性能瓶颈的“照妖镜”在过去的一年里&#xff0c;我们团队完成了一项壮举&#xff1a;将近万核的 Java 服务成功迁移到 Rust&#xff0c;并收获了令人瞩目的性能提升。我们的实践经验已在《RUST练习生如何在生产环境构建万亿流量》一文中与大家分…

STM32H5 的 PB14 引脚被意外拉低的问题解析 LAT1542

关键字&#xff1a;STM32H5&#xff0c; GPIO 1. 问题现象 客户反馈&#xff0c;使用 STM32H523RET6 应用中配置了两个 IO 口&#xff0c;PC9 为输出模式&#xff0c;内部下拉&#xff1b;PB14 为输入模式&#xff0c;内部上拉。在程序中将 PC9 引脚输出高电平&#xff0c;结…