socket简介
这里请大家自行百度。这里测的是基于tcp的长连接socket,简单点说,不同于平时测试的web应用,socket像打电话一样,需要接通—保持通信—断开,且这三个应该是一个完整的过程,缺一不可。然后保持通信的时候也需要一直连接,一旦断开也会出现错误。当然也正因为如此,socket通信的信息正确性相较于普通http报文来的更加安全。
在性能测试中遇到socket项目应该怎么做
背景
这次是在测试的时候客户想要终端往后台发送数据报文,在多台数据终端发送时后台的处理能力。通过这个我们也可以发现,socket大部分用在一些硬件客户端这种类型的测试中,当然有时候我们常测试的网站上面也有socket的相关内容。
socket脚本编写
好了,既然要测试socket,那么我们就看loadrunner测试的过程了,我们都知道就是写脚本—>跑场景–>收集结果。接下来我们就说写脚本,写脚本呢就有写脚本、参数化、关联、检查点这些项目。我们一个一个来。注意文章中提到的函数使用或者函数的一些介绍均来自于loadrunner自带的帮助文档,在脚本编辑区按F1就能调出来,里面能够搜索你能用到的函数。
原理
我们从socket原理中可以看出来,socket有点像打电话,那就要先接通,然后通话,然后挂断,在socket中就是建立连接—传输数据—关闭连接。
选择协议
首先在新建脚本时需要选择windows socket协议
语句
建立连接
我们使用lrs_create_socket()函数,函数用起来是这样的
这里面第一个test1是个名字,你用的时候可以随便起。
第二个那个TCP是采用的协议类型名称,一共两种TCP、UDP
第三个LocalHost是本地地址和端口,因为咱们是往外发的所以这里可以不填,我研究了下,这里可以写LocalHost=4002,也可以在端口前面加上本机名称或IP地址,如LocalHost=overn:4002,或LocalHost=168.3.4.127:4002,所以我写LocalHost=0说明本地端口是0这样实际上不对,应该直接不填。
第四个那个RemoteHost是目标的地址和端口,其内容和LocalHost是一样的,这里可以看到我写的地址加端口。
另外,还有个backlog: 请求连接队列的最大长度,如backlog=20,这个参数一般是服务器端用的,目的是下面肯定有很多请求过来,通过这个设定来限制请求队列长度。。我觉的我们一般用不到。
好了,这样的话我们通过这个语句就建立了连接了。这个函数会把建立连接的结果返回给我们。如果返回值是0,那么表示连接建立成功了。如果不是0那么连接就失败了。至于为什么失败,可以通过返回值来看。至于返回值都有啥,由于内容比较长我在文末贴出来
所以这个时候我们在建立连接的时候需要这样
先定义一个整形变量rc,建立连接的时候rc=lr_create_socket来保存建立连接的返回值,然判断rc的值如果为0就通过如果不为0就输出rc的值方便我们判断结果。
这里有个小技巧,大家可以看见我上面的代码中建立链接的时候有个lr_eval_string(""),首先这里是链接名称,然后我们并发的时候肯定有很多链接,那么这里应该就得参数化一下,然后socket协议下面参数化的内容是<>括起来的,大家知道这个用法就好了。
收发数据
好了,既然我们建立完链接了,这样剩下来就是收发数据了。
我们发送数据使用下面这个函数:lrs_send,这个函数有4个参数:
名称:我们发送前不是提前建好了一个连接么,发送时就要使用这个连接,所以这里写前面连接名称。