利用JMeter实现WebSocket接口测试
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 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。