如何使用JMeter进行WebSocket测试?

JMeter可以通过websocket请求(WebSocket Request)取样器来进行WebSocket测试。具体步骤如下:

  1. 添加websocket请求取样器。选择 “浏览器独立(Browser-specific implementation)” 或随机选一个基于浏览器的属性。
  2. 设置连接地址,例如:ws://echo.websocket.org
  3. 可以设置请求头(可选),例如:
  • Origin:http://websocket.org
  • 浏览器请求头(例如 Firefox、Chrome等)
  1. 构造WebSocket握手请求(手动或自动生成)。
    例如自动生成的握手请求如下:
GET / HTTP/1.1
Host: echo.websocket.org
Upgrade: websocket
Connection: Upgrade 
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
  1. 设置消息的发送内容和类型(文本或二进制)。文本消息一般需要以\r\n两次换行进行结束。
    例如:
{"name":"tom"}\r\n\r\n
  1. 添加响应断言和提取器来判断响应结果并提取数据。
    例如:判断是否接收到发送的文本消息等。
7. 运行测试计划,JMeter将通过WebSocket连接发送消息和接收响应。
  1. 可以添加逻辑控制器来控制测试流程,构建复杂的WebSocket测试场景。

一个简单的示例:

线程组:
线程数:1

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

WebSocket握手请求:
自动生成

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

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

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

WebSocket握手请求: 
自动生成  

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

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

运行测试计划,会首先连接到WebSocket服务器,发送文本消息和判断接收到相同消息。然后发送二进制消息和判断接收到相同响应。