摘要:通过实例讲解LoadRunner中的socket协议性能测试的一种测试方法,如何不依赖LoadRunner既定规则,自行控制收发数据包
关键词:LoadRunner;socket;自行控制;收发数据包
一、前言
用过LoadRunner的socket协议进行性能测试的同学都知道,只需要录制短短的几句命令,就可以实现socket的链接、收发数据包和关闭链接,一时大爽,不过紧跟着的就是没完没了的折磨。刚开始参数化数据包发送接收都行,慢慢的发现,很多情况下,收发数据包的长度和内容都是不可确定的,加上十六进制和ASCII,甚至协议和加密等等因素混合在一起,简直就是灾难。于是自行控制数据包收发成了可选项,虽然LoadRunner提供了相关的函数,但是真的面对进制转换,面对没完没了的<memory violation : Exception ACCESS_VIOLATION received>,很多人只能另外寻找办法完成任务。
本来想全面剖析LoadRunner的socket协议性能测试,发现需要厘清的细节太多了,只能尽力讲清楚下面这个例子中遇到的各个知识点了。
二、任务的提出
这个性能测试是很常见的一种情况,前置机链接了各类不同的硬件设备客户端,各个硬件设备客户端使用了不同的协议,协议承载了大量的不同业务,不过数据包的基本结构相同,由首部、包体和校验码组成,既有TCP链接也有UDP链接,数据发送方式上都是使用的短链接,也就是链接上服务器,发送完数据就立刻关闭了链接。现在需要LoadRunner模拟不同的硬件设备,测试前置机的并发能力。
数据包结构:
系统架构:
三、实现方案讨论
这个场景很常见,不过也比较复杂。
如果采用传统的录制回放,需要先选择几种有代表性的硬件类型和重点业务,录制出脚本,可以想象需要录制的脚本有很多,如果进行参数化,必须要搞清楚各种协议,重新组包,这个工作量太大了。
或者开发提供两个动态链接库,一个用来对各种协议实现编解码,另外一个包括了需要模拟的硬件类型的重点业务,第二个动态链接库调用第一个,在LoadRunner中加载了动态链接库以后,直接调用相关的业务操作函数就可以了。这个够通用,不过开发谁有空搭理你呀。况且如果说这个,这篇文章就不用写了。
那还有第三种方法,现在收发的数据包在前置机上有日志文件保存,可以将各种硬件类型发送的数据包日志文件分类搜集到,然后做两个脚本,一个TCP的,一个UDP的,逻辑都是同样的,打开数据表日志文件,读出数据包发送,将发送和接收到的数据包写入本地日志文件,这样就只需要编写两个脚本,拷贝出多份,每个脚本下放入不同的数据包文件模拟出不同的硬件类型。
……………………
查看全文请点击下载:http://www.51testing.com/html/56/n-811856.html
四、技术要点讲解
1、如何开始录制一个最简单的收发数据包脚本
开始录制脚本的时候,使用了一个绿色软件SocketTool.exe,在本机启动了一个TCP服务器端: