51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2686|回复: 0
打印 上一主题 下一主题

[原创] Loadrunner测试,对在线用户数疑问。

[复制链接]
  • TA的每日心情
    开心
    2019-2-1 16:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2008-12-13 17:43:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    步骤: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,同一个用户账号或不同用户账号登录都会累计添加
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-22 14:41 , Processed in 0.074190 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表