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
英文地址,請注明出處:http://en.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;結…