loadrunner下websocket协议性能测试(二)


前言

第一章简单介绍了websocket性能测试中会用到的基本只是,本章讲一下websocket发送报文的组装


一、loadrunner中data.ws对首次握手报文组装

组装前报文:

在这里插入图片描述

    GET / HTTP/1.1\r\n
    Host: 127.0.0.1:8080\r\n
    Connection: Upgrade\r\n
    Pragma: no-cache\r\n
    Cache-Control: no-cache\r\n
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36\r\n
    Upgrade: websocket\r\n
    Origin: http://www.jsons.cn\r\n
    Sec-WebSocket-Version: 13\r\n
    Accept-Encoding: gzip, deflate\r\n
    Accept-Language: zh-CN,zh;q=0.9\r\n
    Sec-WebSocket-Key: qLMMVPoUmsjl5U3PxypGbQ==\r\n
    Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n
    \r\n

data.ws组装后报文

send buf0 244
	"GET / HTTP/1.1\r\n"
	"Host: 127.0.0.1:8080\r\n"
	"Connection: Upgrade\r\n"
	"Pragma: no-cache\r\n"
	"Cache-Control: no-cache\r\n"
	"User-Agent: Mozilla/5.1 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36\r\n"
	"Upgrade: websocket\r\n"
	"Origin: http://coolaf.com\r\n"
	"Sec-WebSocket-Version: 13\r\n"
	"Accept-Encoding: gzip, deflate\r\n"
	"Accept-Language: zh-CN,zh;q=0.9\r\n"
	"Sec-WebSocket-Key: qLMMVPoUmsjl5U3PxypGbQ==\r\n"
	"Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n"
	"\r\n"

详解:
send: 表示这是一条发送的报文
buf0:报文的唯一标识,后续lrs_send中,使用该标识进行发送
244:代表发送报文的长度,要与实际相符
下面为头信息,在key-value对两侧加引文双引号,\r\n不可以省略

二、loadrunner中data.ws对websocket报文的组装

websocket组装前报文(头部分):
在这里插入图片描述
websocket组装前报文(body部分):
在这里插入图片描述

封装后报文

send buf1
	"\x81\x7e\x03\x57"
	"this is a test(后续字符串太多不再粘贴)"

send: 表示这是一条发送的报文
buf1:报文的唯一标识,后续lrs_send中,使用该标识进行发送
头信息部分:
详解:
\x81: 原报文直接复制过来即可

\x7e: 第二位原报文为\xfe,对应二进制为11111110,其中Mask对应的值为1,此时代表发送报文需要掩 码加密处理,由于处理起来麻烦,所以我们把Mask的值改为0,改后二进制为01111110,转换为十六进制后为7e

注意:此处因为报文长度超过了126所以payload length被设置为了126,实际报文长度用Extended payload length来表示,如果长度小于126则长度即为payload length的实际值,无需Extended payload length,这时报文头部应该为\x81\xnn(nn代表实际值)
规则:
当payload实际长度超过126(包括),但在2^16-1长度内,则将payload len置为126,payload的实际长度由长为16bit的extended payload length来表达。(所以上图出现了payload len和extended payload length都为126的奇怪表达方式,哈哈,本来可以只用payload len一个字节表达的,结果变为了3个字节)
当payload实际长度超过2^16(包括) ,但是2^64-1长度内,则将payload置为127,payload的实际长度由长为64bit的extended payload length来表

\x03\x57: Extended Payload length的长度,为实际报文的长度
大家会发现头部分a6c8dda8,并没有写入loadrunner中data.ws的头部分,这是因为上面我们把Mask的值已经调整为0,所以无需掩码处理,所以Masking-key可以直接忽略掉

body部分直接放在下一行的双引号中间即可,注意:放直接在json.cn对实际的报文进行转义处理

总结

本章讲了websocket报文在loadrunner中的组装,ws协议主要关注的点有Mask的值和payload length的值,下一章会讲解webscoket写loadrunner中脚本的编写

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐