美文网首页
利用JMeter实现WebSocket接口测试

利用JMeter实现WebSocket接口测试

作者: 吱吱菌啦啦 | 来源:发表于2019-04-24 15:03 被阅读0次

WebSocket协议

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要一次握手,浏览器和服务器就可以建立连接,两者之间互相发送数据。

彩蛋:https://www.runoob.com/html/html5-websocket.html

JMeter环境搭建

以Mac版本为例,需要先安装jdk8环境然后安装JMeter

下载地址:https://pan.baidu.com/s/1BuTsi-9n6jUj8YrWkBjZ0A 提取码: wc7m 

安装完成,运行安装目录下bin-jmeter就能正常启动jmeter了

测试WebSocket接口需要安装相应的补丁插件

下载地址: https://pan.baidu.com/s/1CIlepRcOHcA-2jZUSdcqLg  提取码: 2it4 

下载解压完成把文件放置到jmeter-bin-ext文件夹下面

启动WebSocket接口测试

以直播间多用户文字聊天刷屏为例

1、启动jmeter,文件-新建测试计划,命名为【文字聊天】

2、右击测试计划【文字聊天】,添加线程组

新建线程组

3、右击线程组-Sampler-WebSocket Open Connection,命名为【创建WebSocket连接】

创建WebSocket连接

设置WebSocket连接的协议(wss加密连接相当于https,需要在jmeter中安装证书,否则可能不支持)、IP、端口和路径

WebSocket连接设置

4、因为是模拟聊天消息发送,需要有用户登录信息,所以需要向服务器创建一个登录请求

右击线程组-Sampler-WebSocket request-response Sampler,命名为【向服务器发起登录请求】

向服务器发起请求

勾选use existing connection使用上面已经创建好的链接,设置好发送的请求参数

设置登录请求信息

5、读取服务器返回的登录请求,右击线程组-Sampler-WebSocket Single Read Sampler,命名为【读取服务器返回的登录请求】

创建服务器返回请求 读取登录请求信息

6、请求服务器登录返回成功之后,下一步开始模拟发送聊天消息和接收聊天消息,同理需要再次创建一个WebSocket request-response Sampler【向服务器发起聊天消息请求】和WebSocket Single Read Sampler【读取服务器返回的聊天消息请求】,如图所示

创建聊天请求

7、关闭WebSocket连接,右击线程组-Sampler-WebSocket Close,命名为【关闭WebSocket 连接】

关闭连接

8、查看运行结果,右击测试计划-添加-监听器-察看结果树

察看结果树

点击运行按钮,通过察看结果树可以看到返回结果,绿色表示通过,红色表示error

查看结果返回状态

以上流程仅实现相同用户发消息,要模拟不同用户发送聊天消息,需要进行用户变量设置

9、右击线程组-添加-配置元件-随机变量

设置用户变量

10、设置变量参数,变量名称、格式,取值范围等

设置变量参数

11、请求中利用正则表达式引用该变量,如图所示

引用变量

以上,就能实现多用户同时发送聊天消息的WebSocket接口测试啦,线程数和循环次数等可以在线程组中调节即可

注:修改Response(read)timeout(ms)时间,可以调节请求服务器和接收时间。

根据需求,要实现气泡刷屏效果是由老师端来操作开关,所以同上所示需要新建一个线程来创建一个老师登录请求,向教室内广播一条打开信令,此处就不公布具体信令了。

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

相关文章

网友评论

      本文标题:利用JMeter实现WebSocket接口测试

      本文链接:https://www.haomeiwen.com/subject/vomtgqtx.html