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