如何用LoadRunner使用winsock协议测试性能
如何来测试使用windows sockets协议的性能呢?可以使用loadrunner来测试。步骤如下
首先、我们需要获得传送的数据包的内容,可以通过抓包工具来获取(如sniffer)。也可以直接向开发人员索取。要理解数据包中每位数据的含义,如哪些是启始位,哪些是正文,哪些是校验,哪些是结束等。并统计数据包大小。
第二步、我们开始编写脚本,
1、我们初始化Windows Sockets DLL:lrs_startup(version)。
2、然后建立socket连接:lrs_create_socket。
3、然后再把数据放在一个buffer中传送到目标服务器:lrs_send,数据包内容放在data.ws中。这样,一个发送就完成了。
4、然后我们再来接受服务器端给我们的返回数据:lrs_receive。
5、别忘记来个lrs_close_socket来关闭socket,做事有始有终嘛。
简单吧,复杂的流程就是相互组合。最后不要忘记在一些关键点前后加上transaction,以方便得到关键点的性能。
第三步、我们开始执行,与其他协议一样,把得到的结果进行分析。
下面这段是zee写得关于手写winsock脚本。转载过来学习下
对winsock脚本来说,手写脚本不是首选。为了理解如何建立脚本和Buffers,你需要知道服务器发送出来的协议
的细节。
为了自动产生脚本,需要录制一个客户端的应用。
如果你对服务器使用的协议非常的了解,那么也许你可以建立一个Data.ws文件和连贯的actions。但是这个过程
一定是单调而乏味的。你要有一些winsock脚本方面的经验。
为了看一个winsock脚本的例子,先试着录制一个简单的WEB应用(比如一个访问某站点首页的动作)。它会生成一
个简单的winsock脚本和buffer内容的格式。
为了建立LoadRunner的winsock脚本,录制一个客户端应用更可取。这样可以让LoadRunner从windows socket通
信中看到客户端和服务器的底层通信。LoadRunner使用wsock32.dll库录制socket通信,这个库包括windows
socket的API。
为了手写LoadRunner的winsock脚本,需要非常熟悉使用的协议。录制一个简单的浏览器的操作可以看到低于HTT
P协议通信的脚本。
下面是一个简单的例子:
[Action section]
lrs_startup(257);
lrs_create_socket("socket3", "TCP", "RemoteHost=slashdot.org:80", LrsLastArg);
lrs_send("socket3", "buf4", LrsLastArg);
lrs_receive("socket3", "buf5", LrsLastArg);
[data.ws section]
send buf4
"GET / HTTP/1.1\r\n"
"Host: slashdot.org\r\n"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Geck"
"o/20011128 Netscape6/6.2.1\r\n"
"Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9,"
" image/png, image/jpeg, image/gif;q=0.2, text/plain;q=0.8, text/css, */*;q"
"=0.1\r\n"
"Accept-Language: en-us\r\n"
"Accept-Encoding: gzip, deflate, compress;q=0.9\r\n"
"Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n"
"Cache-Control: max-age=0\r\n"
"\r\n"
recv buf5 16716
"HTTP/1.1 200 OK\r\n"
"Date: Thu, 17 Jan 2002 15:27:13 GMT\r\n"
"Server: Apache/1.3.20 (Unix) mod_perl/1.25 mod_gzip/1.3.19.1a\r\n"
"SLASH_LOG_DATA: shtml\r\n"
"X-Powered-By: Slash 2.003000\r\n"
"X-Bender: The laws of science be a harsh mistress.\r\n"
"Connection: close\r\n"
"Transfer-Encoding: chunked\r\n"
"Content-Type: text/html\r\n"
为了建立这样的脚本,你要知道客户端和服务端通信的时候发送的buffer的格式。这种格式最好适用于指定协议
的任何应用。
-------------------------------
知其然,知其所以然。