JMeter中的WebSocket请求元素(WebSocket Request)是用来做什么的?

JMeter中的WebSocket请求元素(WebSocket Request)用于通过WebSocket连接发送消息和接收响应,实现对WebSocket服务器/服务的测试。

使用WebSocket请求元素需要配置以下参数:

  1. 连接地址,例如:ws://echo.websocket.org
  2. 请求头(可选),例如:Origin等
  3. WebSocket握手请求,可以手动输入或自动生成
    例如自动生成的握手请求:
GET / HTTP/1.1 
Host: echo.websocket.org
Upgrade: websocket  
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
  1. 消息类型:文本或二进制
  2. 消息内容:需要发送的消息。文本消息需以\r\n结束。
    例如:{“name”:”tom”}\r\n\r\n
  3. 响应断言和正则表达式提取器(可选)来判断响应和提取数据
    使用WebSocket请求元素可以实现以下测试场景:
  • 功能测试:测试WebSocket连接、发送各种消息等。
  • 压力测试:设置高并发线程组测试WebSocket性能。
  • 长连接测试:WebSocket请求可以保持长连接,用于测试长连接的稳定性。
  • 参数化测试:通过使用变量和循环控制器对消息内容进行参数化遍历。

一个简单的示例:

线程组:
线程数:1  

Websocket请求:
连接地址:ws://echo.websocket.org

WebSocket握手请求: 
自动生成

消息类型:文本
消息内容:{"name":"tom"}

响应断言:  
响应包含:{"name":"tom"}  

Websocket请求:
连接地址:ws://echo.websocket.org  

WebSocket握手请求:
自动生成

消息类型:二进制  
消息内容:dGhlIHNhbXBsZSBub25jZQ==  

响应断言:  
响应包含:dGhlIHNhbXBsZSBub25jZQ==

运行测试计划,会通过WebSocket连接发送文本和二进制消息,并判断接收到相同响应。