性能测试培训: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等等。

更多相关文章
  • Websocket协议的学习、调研和实现
    本文章同时发在 cpper.info. 1. websocket是什么 Websocket是html5提出的一个协议规范,参考rfc6455. websocket约定了一个通信的规范,通过一个握手的机制,客户端(浏览器)和服务器(webserver)之间能建立一个类似tcp的连接,从而方便c-s之间 ...
  • 定义: 是指在某个特定的硬件.软件.网络环境下通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 含:执行效率,资源占用,稳定性,安全性(压力测试是安全测试的一种),兼容性(class文件能不能放到兼容性平台上,如程序和浏览器内核能不能弄到一起去) loadrun ...
  • 我的部分性能测试培训视频,分享给大家.参见:[url]http://tester2test.5d6d.com/thread-175-1-1.html[/url]
  • Websocket协议解析
    WebSocket protocol 是HTML5一种新的协议.它是实现了浏览器与服务器全双工通信(full-duplex).        现 很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由 ...
  • 一个简单web系统的接口性能分析及调优过程
    在测试一个简单系统接口性能压力时,压到一定数量,程序总是崩溃,查看相关机器相关数据时,CPU.内存.IO占用均不高,问题自然出现在其它地方先介绍下系统部件架构   Resin版本为:[root@localhost lib]# java -classpath ./resin.jar com.cauch ...
  • 随着html5的广泛应用,基于websocket协议的即时通讯有了越来越多的使用场景,本文使用python中的websocket-client模块来做相关的接口测试 token = getToken(user,password) websocket.enableTrace(True) strUrl= ...
  • 当网站服务器并发连接达到一定程度时,你可能需要考虑服务器系统中tcp协议设置对http服务器的影响. tcp相关延时主要包括: 1.tcp连接时建立握手: 2.tcp慢启动拥塞控制: 3.数据聚集的Nagle算法: 4.用于捎带确认的tcp延迟确认算法: 5.TIME_WAIT时延和端口耗尽. 对上 ...
  • 前言网上很多文章都是基于windows的,或者是odbc链接的,如果当作练习可以,但实际测试的时候我们往往遇到的不是上述的情况,那么如何对mysql进行性能测试呢?本文将已测试某条sql语句为例进行讲解,ok,下面正式开始.Lr的mysqllib库介绍As most performance test ...
一周排行
  • SQLServer默认跟踪--捕获事件详解
    SQL Server 默认跟踪 -- 捕获事件详解哪些具体事件默认跟踪文件能够捕获到?-- ...
  • 打印100~200 之间的素数#include <stdio.h>#include<string.h>#include <stdlib.h>int test(int num){in ...
  • [编者有话]       第六期的<挨踢人物传>伴随这五一假期与大家相约而来.本期的嘉宾拥有15年的IT职场经验,他的第一份工作才干了1个多月就被炒掉,挫折没有让他一蹶不振,反而让他认清了自己的道路,完成 ...
  • zabbix的discovery自动发现功能,要求版本在2.0以上,包括服务器端和客户端:zabbix客户端的配置:编辑自动发现脚本:路径自己决定:web_site_code_status.sh     esac c ...
  • 在我们实际的开发过程中,经常会把SharePoint中的一些已有的feature去掉,如欢迎信息下面的“我的设置”,“对本页面进行个性化设置”.详细见下图: Figure 1  常见的欢迎信息的界面          ...
  • 作者:西方经济学用户已创建SQL> grant create session,unlimited tablespace to test1;授权成功.SQL> grant create table to t ...
  • 要使IIS支持PHP,应该如何配置说明:版本的不同,其配置方法也有所不同,PHP与IIS的版本的不同,其配置方法也不同.PHP5.3.3的配置与IIS7的配置中,在安装PHP时,只需选择为IIS fastCGI直接安 ...
  • 单片机机中,有时钟周期,机器周期,指令周期,初学者往往不能弄清楚他们之间的关系,这里我就简单介绍一下.         在说明之前我首先要明确几个概念,既什么是周期和频率,相信大多数人都知道他们的含义,周期就是物体循 ...
  • STM32系列命名规则STM32 F 103 C 6 T 7 xxx   1    2   3   4   5 6 7   8第1部分:产品系列名,固定为STM32第2部分:产品类型:F表示这是Flash产品,目前没 ...
  • ORACLE8.07客户端配置指南
    —本地机器网络连通配置 1.点击“开始”-〉“程序”菜单. 2.选择“Oracle-Ora ...