jmeter 测试websocket接口(一)
jmeter 测试websocket接口时,需要对jmeter添加测试websocket的jar包。
下载地址:
https://download.csdn.net/download/qq_14913813/8568431
https://github.com/emqtt/mqtt-jmeter
https://github.com/emqtt/mqtt-jmeter/releases
一、添加Jmeter对WebSocket协议的支持插件
1、到https://github.com/maciejzaleski/JMeter-WebSocketSampler下载Jmeter的WebSocket协议的支持插件:JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar,并直接将这个jar包放到Jmeter软件的\lib\ext\目录下。2、另外,查阅https://github.com/maciejzaleski/JMeter-WebSocketSampler/wiki/Dependencies看到,这个插件需要以下几个jar包的支持:1、jetty-http-9.1.2.v20140210.jar2、jetty-io-9.1.2.v20140210.jar3、jetty-util-9.1.2.v20140210.jar4、websocket-api-9.1.1.v20140108.jar5、websocket-client-9.1.1.v20140108.jar6、websocket-common-9.1.1.v20140108.jar对于1.0.1的版本,这些可以到http://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.1.1.v20140108/网站下载。网上也有整理好的,可以到360云盘下载http://yunpan.cn/cFDUNhHywxsMh (提取码:2c0b),也可以到http://download.csdn.net/detail/qq_14913813/8568431CSDN网站下载。直接放到Jmeter目录的\lib\ext\目录下即可。3、以上jar包都准备好并放到Jmeter目录的\lib\ext\目录下后,重启Jmeter之后可以在sampler中看到websocket sampler这一项。
二、WebSocket Sampler简介
1、WebServer(1)Server Name or IP:WebSocket发送的目标服务器的地址或者名称
(2)Port Number:WebSocker服务器监听的端口号。(一般是HTTP 80端口,可以通过WireShark数据包得到)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)Request data:填入将要发送的请求,要跟开发沟通好,这个是什么格式的消息。4.WebSocket Response(1)Response Pattern – 采样器将等待含有该标识的消息并继续通信(或者直到timeout,该连接关闭)(2)Close Connection Pattern – 如果服务器返回的消息含有这样的字符,就结束会话。(3)Message Backlog – 定义服务器返回消息保留的最大长度。
三、试验
按照网上的例子,可以用http://www.websocket.org/echo.html这个网站做一些试验,网站会将收到的数据(你的request数据)在服务器响应中原样返回。将网站提供的host等信息填入即可与网站通信,下面是我的实验,用于理解Jmeter中websocket sampler
1、streaming选项的影响
(1)不勾选streaming
test plan设置如下:
不勾选streaming connection结果如下:
可以看出发送的Ground control to Major Tom被返回,这个实验是成功的,从result tree的sampler result中Execution FLow中可以看出测试的结果与上面我们的设置之间的关系:用了5000毫秒的时间等待服务器的连接,用了20000毫秒的时间等待服务器的消息,且在接受到第一条消息后,关闭了这个websocket会话。(2)勾上streaming connection
可以看到在结束测试的时候,勾上streaming那个小勾后,测试结束时streaming connection还是开着的。(3)发送两条消息
只发送一条消息可能看不出什么区别,将Websocket sampler复制一下,发送两条信息。这样就可以看出第二条消息发送时是直接用的第一条消息打开的连接,服务器的响应被归类到一次会话的响应窗口。
(4)、参照参考文档设置一个测试(添加一个loop controller,设置循环次数为3)
结果如下:循环中的sampler都勾选了streaming,最后一个sampler没有勾选此选项,结果中可以看出:在loop controller中的sampler使用的是一个连接,在loop外面的这个sampler会打开一个新的连接,可以得出一个结论,实际上,当勾选了streaming connection时,不仅会在结束会话后保留连接,而且勾选了的sampler会在有可用连接是直接使用,而没有勾选的sampler即使存在可用连接也会重新打开一个新的连接。因此,如果是要在一个会话中发送多条消息,请勾选这个streaming connection。
2、如何人为的结束一段对话
这就要用到之前提到过的response pattern和close pattern,先给出三个请求在没有设置response pattern和close pattern的运行结果以便于比较
然后在第一个sampler中设置response pattern和close pattern如下(由于只建立一次连接,所以只会读取第一个sampler中的pattern设置信息)
这样在第二个请求的响应返回不符合father这个标识,又符合了close pattern时,就会断开连接了,此时第三个websocket勾选了streaming使用上一个连接,但实际上却连接不上这个远程终端时就会报错了。(response响应在这种情况下不能设置为空,如果先检测到返回的内容符合response pattern,就不会再去判断是否符合close pattern了)
3、Message Backlog的设置
上面的试验使用的都是默认的3,因此如果试验中的三个socket都是是在一个会话中通信,点击第三个是可以看到最近的三个服务器响应的。当这个选项设置为1时,就只能看到最近的一条响应信息了
jmeter 测试websocket接口(一)的更多相关文章
- 『动善时』JMeter基础 — 50、使用JMeter测试WebSocket接口
目录 1.什么是WebSocket接口 2.为什么需要WebSocket 3.测试WebService接口前的准备 4.WebSocket Sampler组件界面详解 5.使用JMeter测试WebS ...
- jmeter 测试 websocket 接口
https://www.cnblogs.com/penghaihang/p/7724830.html(请求的亲测ok) https://www.jianshu.com/p/bb8b3e928607 h ...
- jmeter 测试websocket接口(二)
1.到https://github.com/maciejzaleski/JMeter-WebSocketSampler下载Jmeter的WebSocket协议的支持插件:JMeterWebSocket ...
- Jmeter测试Websocket接口
前言 websocket是什么? WebSocket 协议在2008年诞生,2011年成为国际标准.所有浏览器都已经支持了. 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器 ...
- 『动善时』JMeter基础 — 51、使用JMeter测试WebService接口
目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...
- jmeter测试dubbo接口
本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文 ...
- jmeter 测试restful接口
jmeter 测试restful接口,JSON数据格式 1.添加线程组 2.添加HTTP信息头管理器 请求发送JSON数据格式参数,需要设置Content-Type为application/json ...
- jmeter测试 flask 接口请求
jmeter测试 flask 接口请求 flask的代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- from flask import Flas ...
- 使用Jmeter测试thrift接口
术语描述 jmeter:一款性能压力测试工具,支持多种协议,java .http 等,但是不支持thrift thrift:跨语言的RPC调用框架,提供编译器,可以将thrift接口生成不同语言的接口 ...
随机推荐
- 【大数据系列】HDFS安全模式
一.什么是安全模式 安全模式时HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除.修改等变更请求.在NameNode主节点启动时,HDFS首先进入安全模式,DataNod ...
- GitHub 在使用命令行 git push 时报错:The requested URL returned error: 403
使用 git 的命令行向 GitHub 提交的时候,报错: [Young@localhost OtherLang]$ git push origin master error: The request ...
- truncate表恢复
Fy_Recover_Data 2014.03.07 更新 -- 现在可以从离线文件中恢复被Truncated的数据了 2014新版本的恢复思路 与 2012的不同 2014年是离线恢复 http:/ ...
- nginx fastcgi配置
1.1 nginx概述nginx简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/P ...
- Internet Explorer 9 已安装在此系统上
问题: win7系统,IE11浏览器,想换成IE9,安装IE9的时候,提示错误. 解决方案: 方案一: 1.打开 控制面板--程序--程序和功能--点击打开或者关闭Windows功能,找到Intern ...
- nagios监控报错 It appears as though you do not have permission to view...
今天在安装完nagios后,通过nagios网页界面点击主机.服务.问题页面时.均报错,报错的内容都差不多.如点击服务,报错: It appears as though you do not have ...
- 【CF633H】Fibonacci-ish II 莫队+线段树
[CF633H]Fibonacci-ish II 题意:给你一个长度为n的序列$a_i$.m个询问,每个询问形如l,r:将[l,r]中的所有$a_i$排序并去重,设得到的新数列为$b_i$,求$b_1 ...
- iOS - 原生的CIFilter生成二维码和条形码
使用CIFilter可以不引入任何第三方库,就可以生成想要的二维码和条形码,今天简单的介绍一下使用CIFilter生成二维码和条形码.系统CIFilter生成的二维码和条形码的大小有时并不能满足需求, ...
- 7.18 python进程间数据共享
# 管道# 数据共享 Manager# 进程池和回调函数 ! # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018/7/18 ...
- DevOps的概念
DevOps(英文Development和Operations的组合)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整合.它的出现是 ...