个人专长: 胡扯,瞎掰,软件测试稍微靠谱 (空间无原创东西,全部来源网络,如有侵权请联系本人)

loadrunner 疑难杂症

上一篇 / 下一篇  2008-06-04 14:53:44 / 个人分类:loadrunner

以下部分是本人总结各大论坛faq和实际工作经验而来,属于<性能测试工具篇之loadrunner>部分内容。

问题解答篇
1
       监视服务器资源?
Controller的场景运行中,在Graphs中选中System Resource GraphsWindows Resources节点,点击Windows Resources的右键菜单项add measurements,加入你要监视的机器名称。注意监视的服务器必须启动Remote Registry Service
2
       错误“the ip wizard does not support dhcp-enabled network cards.  your network card is either dhcp-enabled or configured with invalid settings”
这是由于ip Spoofer不支持动态获得
ip
3
       找不到设置多IP运行方式

必须在Cotroller中设置Expert Mode才能设置多ip方式。
4
       解决lr编辑器中显示乱码的问题
loadrunner7.8
版本中,在Virtual User Generator设置Tool->record options->advancedsupport charset选项。
5
        LoadRunner7.5支持ie6的一个解决方法
ie中,tool->internet选项,切换到高级页面,设置http1.1设置,选择通过代理连接使用http1.1
6
       修改WinSock协议生成的代码,参数化

    socket
脚本的参数化数据在data.ws.
建议同样的业务录制两遍,比较一下两个脚本中的data.ws,找找需要参数化的地方
.
7
       分析结果中如何处理
think time
Analysis
可以设定FilterFilter就可以把think time过略掉。

8
        LoadRunner测试ftp模式的相关经验
什么叫做PASV mode(被动模式传送)?他是如何工作的?
FTP
一般有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接。FTP服务程序一般支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode)


先假设客户端为C,服务端为S.
Port
模式
:
当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S收到这个Port命令后就会向客户端打开的那个端口N进行连接,这种数据连接就生成了。

Pasv
模式:
当客户端C向服务端S连接后,服务端S会发信息给客户端C,这个信息是(服务端S在本地打开了一个端口M,你现在去连接我吧),当客户端C收到这个信息后,就可以向服务端SM端口进行连接,连接成功后,数据连接也建立了。


Actions()
{
char acTest[100];
char acTest2[100];
char* pcTest3;

//
生成发送的串
sprintf(acTest,"kkkhhhh\r\n");
//
指定发送的串
lrs_set_send_buffer ("socket0", acTest, strlen(acTest));
//
发送,由于之前运行了lrs_set_send_buffer,所以这里的"buf0"参数无效
lrs_send("socket0", "buf0", LrsLastArg);

//
接收返回的串
lrs_receive("socket0", "buf1", LrsLastArg);
//
把返回的串放到变量中
pcTest3=lrs_get_received_buffer ("socket0", 0, -1, NULL);
//
对返回串中的数据操作
if (pcTest3[0]=='k')
{
lrs_set_send_buffer ("socket0", pcTest3, strlen(pcTest3));
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
}

//
等待一段时间
lr_think_time(6);

return 0;
}

PASV
模式

data.ws


send buf25
"TYPE I\r\n"
recv buf26 20
"200 Type set to I.\r\n"
send buf27
"
ASV\r\n"
recv buf28 50
"227 Entering Passive Mode (10,19,119,104,133,58)\r\n"
send buf29
"RETR startweblogic\r\n"
recv buf30 74
"150 Binary data connection for startweblogic (10.3.9.3,2707) (53 bytes).\r"
"\n"
recv buf31 53
"cd ./user_projects/mydomain\n"
"nohup startWebLogic.sh &\n"
recv buf32 31
"226 Binary Transfer complete.\r\n"

Actions

lrs_send("socket4", "buf25", LrsLastArg);
lrs_receive("socket4", "buf26", LrsLastArg);
lrs_send("socket4", "buf27", LrsLastArg);
lrs_receive("socket4", "buf28", LrsLastArg);
lrs_send("socket4", "buf29", LrsLastArg);
lrs_create_socket("socket6", "TCP", "LocalHost=0", "RemoteHost=10.19.119.104:34106", LrsLastArg);
lrs_receive("socket4", "buf30", LrsLastArg);
lrs_receive("socket6", "buf31", LrsLastArg);
lrs_close_socket("socket6");
lrs_receive("socket4", "buf32", LrsLastArg);

注意其中的buf27,发出PASV命令,serverbuf28返回端口号“133,58”133*256+58=34106,于是client端就有这一句“lrs_create_socket("socket6", "TCP", "LocalHost=0", "RemoteHost=10.19.119.104:34106"”,这里面的34106端口号就是这样计算出来的。以后每次lrs_create_socket的时候,就要从前面的PASV应答包中解出端口号来。

PASV模式

data.ws

send buf28
"TYPE I\r\n"
recv buf29 20
"200 Type set to I.\r\n"
send buf30
"
ORT 10,3,9,3,11,96\r\n"
recv buf31 30
"200 PORT command successful.\r\n"
send buf32
"RETR startweblogic\r\n"
recv buf33 74
"150 Binary data connection for startweblogic (10.3.9.3,2912) (53 bytes).\r"
"\n"
recv buf34 53
"cd ./user_projects/mydomain\n"
"nohup startWebLogic.sh &\n"
recv buf35 31
"226 Binary Transfer complete.\r\n"

Actions

lrs_send("socket4", "buf28", LrsLastArg);
lrs_receive("socket4", "buf29", LrsLastArg);
lrs_create_socket("socket7", "TCP", "LocalHost=0", "Backlog=1", LrsLastArg);
lrs_send("socket4", "buf30", LrsLastArg);
lrs_receive("socket4", "buf31", LrsLastArg);
lrs_send("socket4", "buf32", LrsLastArg);
lrs_receive("socket4", "buf33", LrsLastArg);
lrs_accept_connection("socket7", "socket8");
lrs_close_socket("socket7");
lrs_receive("socket8", "buf34", LrsLastArg);
lrs_close_socket("socket8");
lrs_receive("socket4", "buf35", LrsLastArg);


注意,buf30中的“11,96”就是client端监听的端口号,11*256+96=2912,而在此之前,client端是先lrs_create_socket了,也就是说,这个2912是在lrs_create_socket的时候生成的监听端口号,然后用发给server端,让server端连过来。此脚本要正常执行,就必须在lrs_create_socket之后取出socket7的监听端口,然后放到"ORT 10,3,9,3,11,96\r\n"包中(修改1196),发给server端。
9
       指定Scenario运行时间
设定了start time,然后必须start scenio

 


TAG: loadrunner

 

评分:0

我来说两句

日历

« 2024-05-08  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 52867
  • 日志数: 84
  • 文件数: 3
  • 建立时间: 2008-04-02
  • 更新时间: 2009-03-23

RSS订阅

Open Toolbar