jmeter 04jmeter做websocket协议的接口测试

查了好多资料,踩了好多坑终于把脚本调试通过了,记录一下:

(1)、首先,我们需要准备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

共7个包,我们准备好这些jar包后,讲它们拷贝到Jmeter目录的\lib\ext\目录下。

其次,启动Jmeter,鼠标右键选择测试计划->添加->Threads(users)->线程组。

(2)websocket协议脚本编写和调试:

1、首先介绍一下我们要测试的接口的业务流程:(1)http协议登录,登录成功获取一个clientsessionid,时效30Min (2)用这个clientsessionid+登陆的用户名建立连接socket (3)通过socket协议发送一个获取token的请求(当然也是登陆成功的情况下)(4)通过socket协议,使用步骤(3)拿到的token做下单操作,下单操作才是我们需要测试的接口;

2、介绍一下通过chrome抓包:

我们的程序是C/S架构的,本来是无法通过chrome抓包的

(1)开发让我在chrome的属性中的目标值后面加了一串字符

(2)输入了一个ip和端口与在jmeter上websocket脚本中设置的不一样

(3)上图吧:

建立socket连接:

这条请求的完整显示如下图,也是我们建立socket连接需要的信息:

双击上图这一样信息跳转到2Frames中,或者直接点击1ws可以看到websocket请求的具体内容,3为建立链接成功后的返回信息

建立连接对应的jmetere脚本:

这个建立socket请求的返回信息:

请求token,从开发给的接口文档中可以看出,请求tonken就发送了一个getInsertOrderToken的请求,我们在chrome的frame里找到这个请示:

将以上这个请求的内容复制到jmeter脚本中:

返回内容:

下图是jmeter脚本返回的:

下单的请求:

先看chrome上面的数据:

 Jmeter下单脚本:

请求的响应:

到这里这个接口脚本就调试通过了,以下记录几点测试过程中遇到的问题:

1、刚开始没有抓包,开发给了一个地址怎么也调不通过,后面发现是因为没有建立连接,这个网上讲的也很少可以参考这一篇:https://blog.csdn.net/heart_1014/article/details/53606337

2、建立连接成功了,发现获取token又出了问题,最后是因为两个原因:(1)没有勾选streaming connection,如果一个socket连接中有多个请求,必须勾选这个,不然每发送一个请求就建立一次连接,具体参考这一篇:http://www.cnblogs.com/yuanchunli/articles/5265738.html     (2)返回token需要一定的时间,之间没有设置等待时间一直获取不到,后面加了一个固定等待时间终于获取到了;

3、登陆获取的clientsessionid和下单前获取的token都需要添加后置处理器中的正则表达式提取器进行,将这两个参数时行提取放在后面的接口中作为入参,具体的可以参考这一篇:http://www.cnblogs.com/fengpingfan/p/4755410.html

猜你喜欢

转载自blog.csdn.net/weixin_39430584/article/details/81508451