51Testing软件测试论坛
标题:
Loadrunner测试,对在线用户数疑问。
[打印本页]
作者:
ggogw
时间:
2008-12-13 17:43
标题:
Loadrunner测试,对在线用户数疑问。
步骤:1、录制脚本(用户登录) 2、回放检测 3、增强脚本 5、调试
脚本如下
typedef long time_t;
Action()
{
//定义变量
char *weburl="{weburl}";
char *webip="{webip}";
time_t t;
long stream;
char *filename="E:\\LR_WorkSpace\\Test.txt";//保存登录日志的文件
char User[100];
char Login_time[100];
//使用IP欺骗功能
/* char *ip;
ip = lr_get_vuser_ip();
lr_output_message("The IP address is %s", ip);
*/
web_set_max_html_param_len("1024");
//作为验证能否打开登录界面是否成功的标识
web_reg_find("Text=\r\n\t系统登陆\r\n","SaveCount=count");
/* Registering parameter(s) from source task id 4
// {Siebel_Analytic_ViewState2} = "/wEPDwULLTE3NTAwMzgyMTAPZBYCAgMPZBYCAhEPZBYCZg9kFgICAw8PFgIeBFRleHRlZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCmNrUmVtZW1iZXLCosNW1xNyJBvzJKUDLI6HzYmQnw=="
// */
//ASP网页控件状态的关联
web_reg_save_param("Siebel_Analytic_ViewState2",
"LB/IC=ViewState\" value=\"",
"RB/IC=\"",
"Ord=1",
"Search=Body",
"RelFrameId=1",
LAST);
lr_start_transaction("打开登录界面");
time(&t);
strcpy(Login_time,ctime(&t));
/*“在某些情况下运行脚本时,LoadRunner会加入它自己的思考时间。其中一种情况是当收到一个401错误时。
当请求的cookie设置不正确时,有时应用服务器会返回401错误。LoadRuner一旦收到这个错误信息它就
会等待10秒钟并且重新请求资源。这次LoadRunner将会向服务器发送正确的cookie,从而进行访问。”
“401错误的存在要求站点运行正常。它的工作方式是这样的,第一次请求某个URL或着以一个新的会话返回了
URL,服务器需要为此URL认证或指定一个session id,这样就会在错误的请求钟设置一个cookie信息。
然后就会重新请求该URL,这次是使用的是一个有效的cookie,然后服务器发送你所请求的信息。”
“如果没有返回401错误的话就不能生成一个新的cookie。没有新的cookie的话就不能访问服务器。”
“在这里我们想要做的是让LoadRunner立即重新发送请求而不等待10秒。为了达到这个目的,
在脚本文件夹下default.cfg文件中的[Web]下面加入下面语句:”
Retry401ThinkTime=0
*/
web_url("{webip}",
"URL={weburl}/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"Url=/Images/login/bg_login.gif", ENDITEM,
"Url=/WebResource.axd?d=5h_Y4dhIE6c-RFPsL-z13g2&t=633437389782187500", ENDITEM,
"Url=/Images/Loader.gif", ENDITEM,
"Url=/ScriptResource.axd?d=6TmySX5YXUnff0NzbB2THRGUJ2ddrTAuOlz7jEOzaL5tBq0K03nMXs9bRuUu7KHEyYTNvK_o97XP7z0pMLmYFw2&t=633437389782187500", ENDITEM,
......(略)
LAST);
if ((stream = fopen(filename, "a")) == NULL ) {
lr_error_message("Cannot open %s", filename);
return -1;
}
else if (atoi(lr_eval_string("{count}"))<=0){
fprintf(stream,"打开登录界面失败!\t\t时间:%s\n",ctime(&t));
}
else
fprintf(stream,"打开登录界面成功!\t\t时间:%s\n",ctime(&t));
lr_end_transaction("打开登录界面", LR_AUTO);
lr_start_transaction("登录");
//获取系统当前时间
time(&t);
strcpy(Login_time,ctime(&t));
//用于并发测试
lr_rendezvous("登录集合点");
web_custom_request("Login.aspx",
"URL={weburl}/Login.aspx",
"Method=POST",
"TargetFrame=",
"Resource=0",
"RecContentType=text/plain",
"Referer={weburl}/",
"Snapshot=t2.inf",
"Mode=HTML",
"Body=ScriptManager1=upLogin|btnLogin&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE={Siebel_Analytic_ViewState2_URL}&txtUsername={UserName}&txtPassword={NewParam}&ckRemember=on&__EVENTVALIDATION=%2FwEWBQKlwI%2B4AwKl1bK4CQK1qbSRCwLf85DfCgKC3IeGDK6p2UV7goEVzJANUSyrXFDvAbyf&btnLogin=%E7%99%BB%20%E5%BD%95",
LAST);
web_convert_param("Siebel_Analytic_ViewState2_URL",
"SourceString={Siebel_Analytic_ViewState2}",
"SourceEncoding=HTML",
"TargetEncoding=URL",
LAST);
// web_reg_find("Text=广州市行业监管平台", LAST);
//作为验证能否打开登录界面是否成功的标识
web_reg_find("Text=广州市行业监管平台","SaveCount=num");
/* Registering parameter(s) from source task id 82
// {Siebel_Analytic_ViewState6} = "/wEPDwULLTE4NDgyMTIxNDEPZBYCAgMPZBYEAgEPDxYCHgRUZXh0BSUgIOW5vyDlt54g5biCIOihjCDkuJog55uRIOeuoSDlubMg5Y+wZGQCAg9kFgJmD2QWCAIBDxYCHghJbnRlcnZhbALwLmQCAw8PFgIfAAUV5a6d5L6b54mp5rWB5pON5L2c5ZGYZGQCBQ8PFgIfAAUk5a6d5L6b54mp5rWB5LyB5Lia6ZuG5Zui5pyJ6ZmQ5YWs5Y+4ZGQCBw8PFgIfAAUBMWRkZJ+FSXuo+sPoS4MhU6H68WiRHxyh"
// */
web_reg_save_param("Siebel_Analytic_ViewState6",
"LB/IC=ViewState\" value=\"",
"RB/IC=\"",
"Ord=1",
"Search=Body",
"RelFrameId=1.1",
LAST);
web_url("Default.aspx",
"URL={weburl}/Default.aspx",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t3.inf",
"Mode=HTML",
EXTRARES,
"Url=/CommPages/images/bgimage.jpg", "Referer={weburl}/CommPages/Left.aspx", ENDITEM,
......(略)
LAST);
web_custom_request("Top.aspx",
"URL={weburl}/CommPages/Top.aspx",
"Method=POST",
"TargetFrame=",
"Resource=0",
"RecContentType=text/plain",
"Referer={weburl}/CommPages/Top.aspx",
"Snapshot=t4.inf",
"Mode=HTML",
"Body=ScriptManager1=upTime|refreshTimer&__EVENTTARGET=refreshTimer&__EVENTARGUMENT=&__VIEWSTATE={Siebel_Analytic_ViewState6_URL}&",
LAST);
strcpy(User,lr_eval_string("{UserName}"));
if (atoi(lr_eval_string("{num}"))<=0){
fprintf(stream,"用户%s登录失败\t\t时间:%s\n",User,Login_time);
}
else
fprintf(stream,"用户%s成功登录\t\t时间:%s\n",User,Login_time);
fclose(stream);
lr_end_transaction("登录",LR_AUTO);
return 0;
}
设置场景:100个用户,每5分钟运行20个Vuser,运行后一直跑,直到手动停止为止才结束Vuser。
但是结果发现单100个Vuser处于Run状态时,手动登录一个页面发现在线用人数是1(页面有查看在线人数功能)
按道理应该101才对,不知道哪来出问题了?
PS:在线人数就算同一个IP,同一个用户账号或不同用户账号登录都会累计添加
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2