既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
jetty-http
jetty-io
jetty-util
websocket-api
websocket-client
websweocket-common
相关依赖下载:
https://pan.baidu.com/s/1PTOyTBzmOwLPNhxB-TxR7g ,提取码:uq25
下面内容基于JMeter5.1.1
将相关jar包放入JMeter安装目录的/lib/etc中,重启JMeter。在取样器中,可以看到比之前多了websweocket相关的取样器。
脚本编写
在编写脚本之前,先要搞清楚推送服务的逻辑,它的逻辑是这样的:
首先,客户端向服务端发送请求,建立连接
建立连接后,客户端需要定时向服务端发送ping-pong消息,维持心跳
客户端发送主动断开连接的请求,服务端断开该连接
建立连接,使用【WebSocket request-response Sampler】,顾名思义,这个取样器既能发送请求也能接收响应。
说明一下各项内容:
Connection:有use existing connection和setup new connection两种模式,前者是使用已有连接,即上一个websocket请求所建立的连接通道,选择后Server URL全置灰只读不可操作。后者指新建连接通道。
Server URL:ws协议和wss(加密的websocket)可选,sever name or IP(服务器地址)、Port(端口号)、Path(路径)、Connection timeout(连接超时时间)这些含义也很明了。
Data:发送数据,可以选择Text(文本,包括JSON)和Binary(二进制)形式,也可以通过勾选Read request data from file来从文件中获取data。
这个请求要与连接请求是同一个线程,并且要定时运行,因此设计脚本结构如下:
注意两点:
1.想要建立3000个连接的话,一定是将【线程数】设置为3000,循环次数设置为1,而不是相反,这是许多人容易弄混淆的。
2.【Ramp-up 时间】这个参数是全部线程启动的时间,如果想给服务器较大的瞬时压力,就把时间设置短一些。经过实测,这个时间太短的话,最终成功建立的连接会明显少于设置的【线程数】,所以一般设置长一点。
一般的websocket推送服务,会设计定时心跳检测机制,也就是客户端定时向服务端发送一条特定的消息,这样服务端就会保持这个连接,否则的话,这个客户端就被服务端判定为不活跃而被断掉连接。因此,为了让我们的脚本持续跑下去,就需要加入心跳检测请求。
因为线程循环次数是1次(多次的话,就是一个线程反复建立连接了),因此我们要把【心跳检测】放到一个循环控制器中。
而【固定定时器】的作用,就是控制【心跳检测】发送的频率:
心跳检测:
尤其要注意两点:
1.Connection项一定要选择 use existing connection,表示使用该线程已经建立的连接,否则就重新创建连接了。
2.Request data 根据服务端的实现而定。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**