1. 安裝 WebSocket 插件
方法一:通過 Plugins Manager
- 下載并安裝 JMeter Plugins Manager
- 在 JMeter 中:
Options
?→?Plugins Manager
- 搜索?
WebSocket
?并安裝
方法二:手動安裝
- 下載?
jmeter-websocket-samplers
?插件 - 將 jar 文件放到?
JMeter/lib/ext/
?目錄 - 重啟 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 接口的功能和性能了。