51Testing软件测试论坛

标题: LoadRunner场景执行时的用户数和事务数是怎么统计的? [打印本页]

作者: qicyt1812    时间: 2008-11-17 15:55
标题: LoadRunner场景执行时的用户数和事务数是怎么统计的?
LoadRunner场景执行的时候对并发用户数和成功失败的事务数是怎么统计的,我发觉现在越来越糊涂了:

场景设计:

1、录制一个 登录 的脚本,创建一个检查点,如果登录失败,会重新登录,否则继续执行,
2、准备500个用户名参数,参数选择方式用Unique+Once
3、400个用户并发在场景中登录
4、在runtime-setting中设置:如果遇到错误继续执行

根据上面的设置在脚本(VuGen)中用断点调试的时候,if...else...语句是能够正常执行的

vuser_init(){
        web_reg_find("Text=Hello",
                "SaveCount=hello_count",
                "Search=body",
                LAST);

        lr_start_transaction("login_trans");

        web_submit_data("login",
                        "Action=http://www.test.cn:18000/login",
                        "Method=POST",
                        "TargetFrame=",
                        "RecContentType=text/html",
                        "Referer=http://www.test.cn/proxy.html?1226893532179",
                        "Snapshot=t3.inf",
                        "Mode=HTML",
                        ITEMDATA,
                        "Name=username", "Value={username}", ENDITEM,
                        "Name=password", "Value=test", ENDITEM,
                        LAST);

        lr_end_transaction("login_trans", LR_AUTO);

        if(atoi(lr_eval_string("{hello_count}"))==0){

                lr_log_message("=========%s login failed,execute if =======",lr_eval_string("{username}"));

                lr_start_transaction("login_trans");

                web_submit_data("login",
                        "Action=http://www.test.cn/login",
                        "Method=POST",
                        "TargetFrame=",
                        "RecContentType=text/html",
                        "Referer=http://www.test.cn/proxy.html?1226893532179",
                        "Snapshot=t3.inf",
                        "Mode=HTML",
                        ITEMDATA,
                        "Name=username", "Value={username}", ENDITEM,
                        "Name=password", "Value=test", ENDITEM,
                        LAST);
       
                lr_end_transaction("login_trans", LR_AUTO);

        }else{
       


        web_url("changeState",
                "URL=http://www.test.cn/ImBill/changeState?bID={WCSParam_Text1}&state=Online&1226893545992",
                "TargetFrame=",
                "Resource=0",
                "Referer=http://www.test.cn/proxy.html?1226893532179",
                "Mode=HTML",
                LAST);
}
return 0;
}

疑问:
1、个人认为做了上述的条件限制以后,应该所有的用户都会登录成功,但是为什么还会有失败的用户呢?这个会不会跟服务器返回500错误有关?
2、login_trans这个事务是如何做统计的,如果做了上述的条件限制后,login_trans至少应该是500次吧,但是统计的结果好像不准确,如何知道这个事务是否真的成功了呢?
3、LoadRunner场景执行的时候对并发用户数和成功失败的事务数是怎么统计的?
4、我看到在场景执行的时候Run状态的用户是500个,可是接近场景结束的时候,却有很多的用户是Failed的,这是什么原因呢?

[ 本帖最后由 qicyt1812 于 2008-11-18 11:52 编辑 ]
作者: archonwang    时间: 2008-11-17 16:34
问下系统是否支持单点登陆?
作者: qicyt1812    时间: 2008-11-18 11:26
是的,支持单点登录
作者: qicyt1812    时间: 2008-11-18 11:26
一个用户登录后,如果再用这个用户在别的地方登录,原来登录的用户就会掉线的
作者: archonwang    时间: 2008-11-18 12:47
我感觉你在设计这个场景的时候,需要考虑以下几个问题
1. 单点登陆意味着用户不能重复登陆,所以脚本中的用户登陆事务应该最多只能进行500次——除非有退出处理。
2. http:500错误应是内部服务器异常,请检查服务器日志
3. no match found for... 感觉是参数化错误。
作者: qicyt1812    时间: 2008-11-18 13:08
1、我是想如果这个用户登录失败,就重新登录,应该跟单点登录没有关系吧?我在VuGen中用断点调试的时候,if...else...语句是正常执行的呢。但是在场景中就出问题了,所以觉得很纳闷呢

2、500是服务器返回了internal error呢,可能是同时有400个用户服务器响应不过来吧

3、no match found for... 这个是从response中做自动关联参数化的,如果执行100个用户就全部正常通过,执行多了的话就会出很多这个错误,因为我做了判断,所以我在想出错了说明他需要重新登录一次,应该是执行if语句了吧

搞不懂了呢,恶魔の光华 版主能否给一些比较具体的设计思路呢,期待ing
作者: whyleave    时间: 2008-11-18 13:36
如果你第一次登陆不成功,LR报错,虽然你选择了遇到错误继续执行,但最终该用户还是被认为是fail的。
作者: qicyt1812    时间: 2008-11-18 15:10
那如果我希望用户登录失败后重新登录,应该怎么处理呢?我希望保证我执行的所有并发用户都能够成功登录,目的就是这样的
作者: whyleave    时间: 2008-11-18 15:33
不用检查点,换成用关联函数从服务器返回信息中取值来判断是否登陆成功。
因为检查点如果找不到信息就会报错,而关联函数可以将未找到信息设置成警告。
作者: qicyt1812    时间: 2008-11-18 15:44
我是用检查点和从服务器返回的信息同时做的条件啊,而且在VuGen中调试也能通过,就是在场景中执行的时候感觉不正确
作者: ym_wei    时间: 2010-12-6 16:50
学习了
作者: zhanghongyas    时间: 2010-12-7 15:51
学习
作者: yanxiudeng    时间: 2011-2-14 11:33
开始学习中.




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2