WebSocket protocol 是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的设置完成,可以根据各自的需求添加其他的任务来完成接口和性能测试了,当然,在这篇文中,我并没有写检查点之类的结果判断,大家可以根据自己的需求来进行检查点的设置。

Jmeter实现WebSocket协议的接口和性能测试方法的更多相关文章

  1. Jmeter实现WebSocket协议的接口

    1.下载websocket插件的jar包 网盘链接:https://pan.baidu.com/s/1FDcTHdQcDo6izgROMgB96w 密码:uags 该包下载完成后直接放在jmeter的 ...

  2. 性能测试培训:WebSocket协议的接口性能之Jmeter

    性能测试培训:WebSocket协议的接口性能之Jmeter poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试开 ...

  3. Jmeter中Websocket协议支持包的使用

    Jmeter中Websocket协议支持包的使用(转) 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan.cn/cFzwiyeQDKdh3 (提取码:9bcf)) 转自:ht ...

  4. Jmeter中Websocket协议支持包的使用(转)

    转自:http://blog.csdn.net/typing_yes_no/article/details/49512167 参考的来源是国外一篇文章,已经整理成pdf格式(http://yunpan ...

  5. dotnet core 开发无缝兼容Http和Websocket协议的接口服务

    在应用接口开发中往往要针对不同协义开发相应的代理服务,但对于Websocket和http这两种协议来说就有些不同,从实现上来看Websocket可以说是Http的升级子协议, 两者在协议处理上基本一致 ...

  6. 使用jmeter进行websocket协议压测

    第一步:添加websocket sampler组件 可以使用plugins manager进行添加,首先下载plugins manager组件: 下载路径:  https://jmeter-plugi ...

  7. jmeter针对websocket协议的压测

    之前一直没有接触过websocket协议,所以一直对websocket的压测存在疑惑,在网上参考文章并不断尝试之后,终于有所得:第一次用jmeter的websoket插件,用的ws非加密协议,请求都能 ...

  8. 使用Jmeter并发websocket协议项目

    1.安装Jmeter 网址:http://jmeter.apache.org/下载 2.启动Jmeter \apache-jmeter-5.1.1\bin\jmeter.bat 3.安装‘Plugin ...

  9. jmeter做websocket协议的接口测试

    1.首先介绍一下我们要测试的接口的业务流程: (1)http协议登录,登录成功获取一个clientsessionid,时效30Min (2)用这个clientsessionid+登陆的用户名建立连接s ...

随机推荐

  1. 解决安装 Visual Studio 2012 后无法连接VPN的问题

    1. 单击“开始”,单击“运行”,键入“regedit”,然后单击“确定” 2. 找到下面的注册表子项,然后单击它: HKEY_LOCAL_MACHINE\System\CurrentControlS ...

  2. angular2 学习笔记 ( ngModule 模块 )

    2016-08-25, 当前版本是 RC 5. 参考 : https://angular.cn/docs/ts/latest/guide/ngmodule.html 提醒 : 这系列笔记的 " ...

  3. Javascript OrderBy

    要在js 实现orderBy基本知识就是 array.sortarray.sort(function(a,b){ a 表示 row 0 b 表示 row 1 它会loop多次你可以比较 if(a &g ...

  4. MFC新婚之夜(笑昏,大概是指MFC的人固步自封)

    请问学会MFC都要学些什么呢?DOC-VIEW,OLE,UI线程,泵,钩,还是堆,栈内存分配与回收的机制?还是那些各种各样的CHAR,还是__cdecl, __stdcall,PASCAL等等,或者编 ...

  5. zabbix 插件使用问题

    [elk@dr-mysql01 frontend]$ ../../bin/logstash -f std02.conf Settings: Default pipeline workers: 8 Pi ...

  6. HDU5196--DZY Loves Inversions 树状数组 逆序数

    题意查询给定[L, R]区间内 逆序对数 ==k的子区间的个数. 我们只需要求出 子区间小于等于k的个数和小于等于k-1的个数,然后相减就得出答案了. 对于i(1≤i≤n),我们计算ri表示[i,ri ...

  7. squid 代理服务器安装配置

    ubuntu16.04 安装squid代理服务器配置 本文参考 http://www.cnblogs.com/newflypig/archive/2012/09/28/2862000.html 1,删 ...

  8. spring整合springMVC、mybatis、hibernate、mongodb框架

    开发环境 eclipse Mars 4.5 JDK 1.7 框架 spring 4.0.5 mybatis 3.2.7 hibernate 4.3.6 mongodb 1.7 数据库 MySQL 5. ...

  9. 关于IE8导航串行的问题

    1.概述: 作为一个前端人员,多浏览器兼容是必须必备的技能,现在一般要求是兼容IE8及以上,如果兼容IE6的话,会麻烦一些,这里介绍的是在IE8状态下我们导航条错位的问题. 2.导航错位代码 < ...

  10. Mapreduce运行过程分析(基于Hadoop2.4)——(一)

    1 概述 该瞅瞅MapReduce的内部执行原理了,曾经仅仅知道个皮毛,再不搞搞,不然怎么死的都不晓得.下文会以2.4版本号中的WordCount这个经典样例作为分析的切入点.一步步来看里面究竟是个什 ...