一文读懂jmeter的websocket接口性能测试

Posted 大话性能

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文读懂jmeter的websocket接口性能测试相关的知识,希望对你有一定的参考价值。


1
Websocket简介


WebSocket protocol 是html5一种新的协议。它实现了浏览器与服务器全双工通信,即有效解决了HTTP 协议的一个缺陷(通信只能由客户端发起)。

在以前如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务器有没有新的信息,这种方式性能比较差,就算在空闲的时候也要消耗资源。利用websocket协议可以解决此类问题。最典型的场景就是聊天室、实时更新状态的系统等。


2
Websocket优势


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

最主要的2个特点是:

1、数据header很小,传输开销小;

2、server push,服务端也可以主动的推送消息;


3
Websocket性能关注点


性能测试针对不同协议,关注的指标还是会略有不同。对于基于websocket协议开发的系统,性能测试关注点侧重于连接数(可以建立多少个并发连接)和连接处理能力(模拟websocket并发地发消息)。


4
Jmeter添加jar包



默认情况下,jmeter是没有websocket的sample请求的,需要自己去扩展。

首先,我们需要准备Jmeter的WebSocket协议的支持插件:

JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar

这插件依赖一下几个jar包

1、jetty-http-9.1.2.v20140210.jar

2、jetty-io-9.1.2.v20140210.jar

3、jetty-util-9.1.2.v20140210.jar

4、websocket-api-9.1.1.v20140108.jar

5、websocket-client-9.1.1.v20140108.jar

6、websocket-common-9.1.1.v20140108.jar

我们准备好这些jar包后,把它们拷贝到Jmeter目录的\lib\ext\目录下即可。


为了便于大家统一下载所以的依赖jar包,我上传到了网盘。

下载的链接为:

https://share.weiyun.com/5KpGmxu


5
组件介绍


一文读懂jmeter的websocket接口性能测试

1、WebServer

(2)Port Number:WebSocker服务器监听的端口号。

2、Timeout

(1)Connection发送一个连接请求后,Jmeter等待连接完成的最长时间,单位是毫秒。

(2)Response对响应消息的最大等待时间。


3、WebSocket Request

(1)Implementation:只支持RFC6455(v13) ,WebSocket协议标准的最新版。

(2)Protocol:有ws与wss之分, ws前缀是WebSocket连接的辨别标识,wss前缀是WebSocket安全连接的辨别标识。根据自己的实际情况填写

(3)Streaming Connection :TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么得到第一次响应后该链接就会被关闭。

(4)connection id:会话的id标志。

(5)Request data:填入将要发送的请求,要跟开发沟通好,这个是什么格式的消息。


4.WebSocket Response

(1)Response Pattern – 采样器将等待含有该标识的消息并继续通信(或者直到timeout,该连接关闭)

(2)Close Connection Pattern – 如果服务器返回的消息含有这样的字符,就结束会话。

(3)Message Backlog – 定义服务器返回消息保留的最大长度。


6
例子讲解


1、Streaming Connection勾选与否的影响


线程组设置1个并发,循环2次。

2个websocket sample请求都不勾选Streaming Connection

发现每次请求都会opening new connection。


一文读懂jmeter的websocket接口性能测试


都勾选Streaming Connection,

发现4个请求都在同一个connection中

一文读懂jmeter的websocket接口性能测试

一文读懂jmeter的websocket接口性能测试


因此,当勾选了streaming connection时,不仅会在结束会话后保留连接,而且勾选了的sampler会在有可用连接是直接使用,而没有勾选的sampler即使存在可用连接也会重新打开一个新的连接。因此,如果是要在一个会话中发送多条消息,请勾选这个streaming connection。


2、connection id的设置

Connection id 代表会话的标志,不同的connection会话有不同的id值。

线程组设置1个并发,循环2次。

在2个websocket sample请求中都勾选了streaming connection复用连接,但是connection id填的不同。

结果是websocket sample2会新建一个connection会话,而不是复用websocket sample1的connection会话。


一文读懂jmeter的websocket接口性能测试

一文读懂jmeter的websocket接口性能测试

一文读懂jmeter的websocket接口性能测试


3、response pattern和close pattern的设置


Response pattern是对响应结果的匹配和响应断言配合使用。Close pattern是可以人工的停止会话。

Response pattern的设置


一文读懂jmeter的websocket接口性能测试

一文读懂jmeter的websocket接口性能测试



如上websocket sample1的response pattern填的是test:002,而正确的是test:001,故websocket sample1的运行结果就是didn’t match any pattern。若是为空不填,代表什么都可以匹配。

一文读懂jmeter的websocket接口性能测试


close pattern的设置


在websocket sample1请求中设置close connection pattern为test:001,2个websocket sample都勾选streaming connection,按理说4个请求都应该是复用同一个连接(connection id不设置)。但是由于现在设置了close connection pattern,第一个websocket sample1第一次请求满足了这个条件,就close了session,导致后面的websocket sample没有连接可以复用,报如下错误。

一文读懂jmeter的websocket接口性能测试

一文读懂jmeter的websocket接口性能测试

一文读懂jmeter的websocket接口性能测试



以上就是对jmeter中的websocket中核心设置的讲解,希望以后在做websocket接口或性能测试的时候有帮助。

大家可以先收藏着,以备不时之需。


      若文章对你有帮助,
还请大家分享或转发给 和你一样好学的朋友



往期推荐

内推直通


欢迎大家投稿)
内容:测试技能相关
测试交流qq群:868778467
测试交流微信群:加我即可入群
每一篇,我们都用心
把时间交给阅读

我们致力于

帮助测试快速进阶成长
提供高薪职位内推直通
组织分享培训大牛经验


喜欢就点个赞吧

以上是关于一文读懂jmeter的websocket接口性能测试的主要内容,如果未能解决你的问题,请参考以下文章

性能工具之Jmeter压测WebSocket接口

一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本

一文读懂 WebSocket 通信过程与实现

Jmeter性能实战--实现接口压测完整流程(一)

压测工具JMeter的使用

Jmeter接口压测快速入门