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