性能测试培训:WebSocket协议的接口性能之Jmeter
性能测试培训:WebSocket协议的接口性能之Jmeter
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。poptest测试开发工程师就业培训感兴趣,请大家咨询qq:908821478
WebSocket protocol 是一种新的协议,loadrunner中已经有涉及到,那么jmeter如何操作呢?
我们先介绍下WebSocket,它HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。
浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:
1. Header 互相沟通的Header是很小的-大概只有 2 Bytes
2. Server Push
下面是客户端浏览器请求和服务器回应
浏览器请求
GET /demo HTTP/1.1
Host: 你的网址.com
Connection: Upgrade
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
Upgrade: WebSocket
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5
Origin: http://你的网址.com
^n:ds[4U
服务器回应
HTTP/1.1 101
WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://你的网址.com
Sec-WebSocket-Location: ws://你的网址.com/demo
Sec-WebSocket-Protocol: sample
8jKS’y:G*Co,Wxa-
以上算是一个WebSocket的不算详细的解释和定义吧,下面我们看下怎么使用Jmeter实现WebSocket的接口测试和性能测试:
首先,我们需要准备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\目录下。
其次,启动Jmeter,鼠标右键选择测试计划->添加->Threads(users)->线程组,如下图:

再次,选择鼠标右键选择上步添加的线程组->添加->Sampler->WebSocket Sampler,如下图:

WebSocket创建完成后,测试计划树如下图:

图中,还创建了,查看结果树、生成概要结果合用表格查看结果,这个三个都可以在鼠标右键选择线程组->添加->监听器中找到,主要是为了查看Jmeter执行WebSocket的结果。
最后,我们需要配置WebSocket的地址、端口、请求和参数了,如下图:

图中:
1、Server Name or IP:WebSocket服务器的地址;
2、Port Number:WebSocket服务访问的端口;
3、Protocol【ws/wss】:根据自己的实际情况填写;
4、Request data:需要发送的请求,根据实际情况来,我的是发送一个Json串,上图中的Request data是做了参数化处理的,可以直接填入串:
{"openid":"o-8pqwY4nb5k_n2NN-ydzj3mLJ8U","servCode":"900001"},执行,在结果树种查看结果。
到此,我们完成了Jmeter的WebSocket的访问设置,那么,我们要做接口和性能测试必须要有参数化,否则,不都是一个请求反复执行吗,怎么去参数化呢。
首先,我们需要建立一个文本文件,讲需要参数化的字段按照逗号进行分割(当然也可以用其他的分隔符),例如:a,b -- 表示两个字段内容,特别注意的是,如果串中本身有双引号的,此处也要加上。
将建立好的文本文件保存,并改为.bat结尾的文件。
其次,鼠标右键选择线程组->添加->配置元件->选择:CSV Data Set Config,添加参数化文件(Jmeter有几种参数化方式,此处以CSV举例),如下图:

在Configure the CSV Data Source组中:
1、Filename:上步中要求建立的.bat文件的全路径;
2、File encoding:文件的编码格式,根据实际情况来;
3、Variable Names(comma-delimited):字段名,多个以逗号分隔
4、Delimiter(use'\t' for tab):定义分隔符,例如逗号的话,直接填写 逗号的符号即可
5、Allow quoted data?:选项选为“true”的时候对全角字符的处理出现乱码
6、Recycle on EOF:是否循环读入,CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入
7、Stop thread on EOF ?:当Recycle on EOF为False时,当读取文件到结尾时,停止进程,当Recycle on EOF为True时,此项无意义
根据实际情况进行设置。将所有的设置完成后,保存。
值得注意的是,如果不确实配置是否正确,可以暂缓参数化,直接在WebSocket页面填入Request data,运行,查看结果,如果成功返回,在开始参数化。
执行Jmeter测试计划,在结果树中可以查看发送和服务器返回的结果,如下图:

上图就是执行结果的查看树,可以在右边的窗口中看到取样器结果、请求、响应数据,其中,请求是客户端向服务器发送的请求,响应数据是服务器接收请求后返回的结果,可以选择不同的结果查看方式,有json、html、xpath等等。
至此,我们的jmeter对WebSocket的设置完成,可以根据各自的需求添加其他的任务来完成接口和性能测试了,当然,在这篇文中,我并没有写检查点之类的结果判断,大家可以根据自己的需求来进行检查点的设置。
性能测试培训:WebSocket协议的接口性能之Jmeter的更多相关文章
- Jmeter实现WebSocket协议的接口和性能测试方法
WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一 ...
- dotnet core 开发无缝兼容Http和Websocket协议的接口服务
在应用接口开发中往往要针对不同协义开发相应的代理服务,但对于Websocket和http这两种协议来说就有些不同,从实现上来看Websocket可以说是Http的升级子协议, 两者在协议处理上基本一致 ...
- Jmeter实现WebSocket协议的接口
1.下载websocket插件的jar包 网盘链接:https://pan.baidu.com/s/1FDcTHdQcDo6izgROMgB96w 密码:uags 该包下载完成后直接放在jmeter的 ...
- Fiddler抓websocket协议的包,用jmeter做并发测试
1.Fiddler: 左边为ws请求url.右边为请求数据,响应数据 jmeter:
- 性能测试培训:Ajax接口级性能测试之jmeter版
性能测试培训:Ajax接口级性能测试之jmeter版 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest认为工具 ...
- 性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具
性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在popte ...
- 性能测试培训:tomcat性能调优方法
性能测试培训:tomcat性能调优方法 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner ...
- 基于WebSocket协议的性能测试
互联网应用时代,用户获取信息的方式从传统媒体到新媒体,信息时效性对通信技术要求越来越高, HTTP协议已经不能适用.于是WebSocket出现了,它实现浏览器与服务器的全双工通信,服务端主动向客户端发 ...
- jmeter随笔(34)-WebSocket协议接口测试实战
2017年春节结束了,一切再次回归到正轨,我们飞测也开始继续分享,小怪在这里预祝大家在2017年工作顺利,满满的收获. 背景:今天研发哥们QQ我,请教websocket协议的接口测试,这哥们自己开发了 ...
随机推荐
- 《剑指offer》— JavaScript(21)栈的压入、弹出序列
栈的压入.弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5, ...
- Java中String类型的部分用法
1.如何将字符串转换为整型数值? int i = Integer.parseInt("20"); 2.如何用“==”还是equals比较两个字符串? “==”是用来比较俩引用是不是 ...
- Linux 下文件操作 shell
删除目录下的所有文件ls *.log | xargs rm -f当前目录所有文件大小的总和ll | awk '{sum += $5}; END {print sum/1048576}'将命令推送到后台 ...
- 最简单的 RabbitMQ 监控方法 - 每天5分钟玩转 OpenStack(158)
这是 OpenStack 实施经验分享系列的第 8 篇. 先来看张图:这是 Nova 的架构图,我们可以看到有两个组件处于架构的中心位置:数据库和Queue.数据库保存状态信息,而几乎所有的 nova ...
- C#异步的世界【下】
接上篇:<C#异步的世界[上]> 上篇主要分析了async\await之前的一些异步模式,今天说异步的主要是指C#5的async\await异步.在此为了方便的表述,我们称async\aw ...
- smarty模板调数据库并做添加删除修改和分页
smarty模板只要就是实现分离效果所以每个功能都需要两个页面一个是HTML 和 PHP 两部分组成 使用smarty模板要在main文件夹下面创建login.php文本,要用smarty模板首先 ...
- JVM client模式和Server模式的区别
在“你知道自己执行的是哪个jre吗?”一文中我们知道安装JDK时会安装了两套JRE:专用和公用,殊不知这两套JRE还有秘密. 专用和公用JRE的不同 不同点在于专用JRE的bin里不仅有“client ...
- 关于JAVA中抽象类和接口的区别辨析
今天主要整理一下新学习的有关于Java中抽象类和接口的相关知识和个人理解. 1 抽象类 用来描述事物的一般状态和行为,然后在其子类中去实现这些状态和行为.也就是说,抽象类中的方法,需要在子类中进行重写 ...
- idiom - Initialization-on-demand holder 延迟加载的单例模式
参考:https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom idiom - 一个线程安全的.无需synchroniza ...
- 九度OJ题目1443:Tr A (JAVA)
题目描述: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. 输入: 数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n(2 <= n & ...