脚本执行时不该成功,却报告成功,为什么???
我是这样操作的:在一个系统的用户管理功能里面,系统中已有了五个用户名分别为xing1,xing2,xing3,xing4,xing5;而且他们的密码都一样,系统中不充许用户名相同的用户;我只是想试着录增加用户这个很简单的功能,录完脚本确实能增加不存在的用户能够成功;但我想测试一下loadrunner的报错功能,所以我在脚本中的参数化用户名的地方,仍然增加数据已有的五个用户xing1,xing2,xing3,xing4,xing5,然后执行增加用户这个脚本;我想loadrunner应该报错,不能成功的.但结果却在执行事务的结果和报告中是pass,并没有出现任何error;
当然我数据库中肯定没有增加成功,因为不充许用户名相同。但为什么loadrunner却不报错呢?
麻烦哪位高手指点一下。 脚本拿来看下。如果说是发出的post请求能发出server有响应,一般不处理就不会报错误信息。
脚本如下
脚本如下:多谢楼上#include "web_api.h"
Action()
{
web_url("index.do",
"URL=http://119.255.1.54:9080/admin/index.do",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"Url=images/login_03.jpg", ENDITEM,
LAST);
lr_think_time( 6 );
web_submit_form("loginAction.do",
"Snapshot=t2.inf",
ITEMDATA,
"Name=userName", "Value=mepaytest", ENDITEM,
"Name=password", "Value=mepaytest", ENDITEM,
"Name=submit", "Value=login", ENDITEM,
EXTRARES,
"Url=images/top_bg.jpg", "Referer=http://119.255.1.54:9080/admin/head.do", ENDITEM,
"Url=images/LeftBg.jpg", "Referer=http://119.255.1.54:9080/admin/left.do", ENDITEM,
LAST);
lr_think_time( 1 );
web_link("add admin",
"Text=add admin",
"Snapshot=t3.inf",
EXTRARES,
"Url=../images/ButtonBg.jpg", ENDITEM,
LAST);
lr_think_time( 15 );
web_submit_form("save.do",
"Snapshot=t4.inf",
ITEMDATA,
"Name=admin.name", "Value={name}", ENDITEM,
"Name=admin.password", "Value=123123", ENDITEM,
"Name=password2", "Value=123123", ENDITEM,
"Name=admin.actualname", "Value=", ENDITEM,
"Name=admin.telephone", "Value=", ENDITEM,
"Name=groupId", "Value=13", ENDITEM,
"Name=admin.state", "Value=Active", ENDITEM,
EXTRARES,
"Url=../images/Gbg.jpg", ENDITEM,
"Url=../images/ButtonBg.jpg", ENDITEM,
LAST);
lr_think_time( 1 );
web_link("",
"Text=",
"Snapshot=t5.inf",
LAST);
web_url("quitAction.do",
"URL=http://119.255.1.54:9080/admin/quitAction.do",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t6.inf",
"Mode=HTML",
EXTRARES,
"Url=images/login_03.jpg", ENDITEM,
LAST);
return 0; loadrunner 中的pass意思只是表示服务器对请求有回应, 并没有发生网络传输失败, 端口访问出错, 没有找到对应资源 等等 一般性问题吧
如果具体到业务是否正确完成, 这个是需要我们自己设置进行校验, 比如设置检查点, 或者保存服务器数据等手段来验证的. 因为VuGen对pass的定义与我们对pass的定义是不一样的。我们对pass的定义是指脚本做了“应该做的”。而VuGen对pass的定义是依照所录制脚本和服务器进行通讯模拟过程中,服务器没有返回错误信息(服务器没有返回HTTP 4XX、HTTP5XX、请求也没有超时),也就是说VuGen是站在服务器响应结果的角度看pass。
更详细:http://user.qzone.qq.com/348436747/blog/1224841852 同意4L。。。
robbie.j
1、可能是你参数策略设置不对,后面的5个根本没有读取到2、加入检查点判断结果
3、打印出log,判断结果
4、cache不知道有没有影响 原帖由 robbie850110 于 2008-11-28 12:35 发表 http://bbs.51testing.com/images/common/back.gif
1、可能是你参数策略设置不对,后面的5个根本没有读取到
2、加入检查点判断结果
3、打印出log,判断结果
4、cache不知道有没有影响
楼上正解。 事务的返回结果是不管你的结果是不是正确,只要事务能正确返回,就是Pass! 把{name}参数设置贴出来看看就知道了 事务的pass与否和业务是没有关系的,如果真的需要确认事务成功执行了,建议添加检查点,登陆后查询页面上是否有刚才登陆的用户名,并且,手工设置事务pass与否的判断,不要用LR_AUTO选项。
建议脚本如下(录制部分省略了)
login()
{
web_url(省略·····);
lr_rendezvous("登陆");
lr_start_transaction("登陆");
web_reg_find("Text={username}",//检查登陆后是否有和刚才同一用户名的字段存在
"SaveCount=usr",//如果存在,usr计数+1
"Search=All",
LAST);
web_submit_data(省略·····);
lr_end_transaction("登陆", LR_AUTO);
lr_start_transaction("登陆检查");
if (atoi(lr_eval_string("{usr}"))==1) //如果usr等于1,说明登陆成功
lr_end_transaction("登陆检查",LR_PASS);//显示事务成功
else
lr_end_transaction("登陆检查",LR_FAIL);//否则显示失败
return 0;
}
[ 本帖最后由 lester0820 于 2008-12-4 14:33 编辑 ]
页:
[1]