LoadRunner只会检测脚本中事务的执行状态,而实际的事务执行结果则需要通过检查点来完成。
例如一个登录事务,LR只关心事务本身的执行状态,也就是说哪怕实际操作密码错误产生登录失败的业务操作,其事务本身也是执行成功
设置检查点,检测“登录”事务执行状态和是否登录成功
一则简单的登录脚本:
Action()
{ web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST); web_url("favicon.ico",
"URL=http://127.0.0.1:1080/favicon.ico",
"Resource=1",
"Referer=",
LAST); web_reg_find("Text=Error","SaveCount=ecc"); //插入检查点 web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username", "Value=kkk001", ENDITEM,
"Name=password", "Value=123k001", ENDITEM, //错误的密码
"Name=login.x", "Value=33", ENDITEM,
"Name=login.y", "Value=1", ENDITEM,
LAST); if(atoi(lr_eval_string("{ecc}"))>)
lr_error_message("登录失败"); return ;
}
web_reg_find() 函数: "Text=Error", 表示要检查什么内容,例子中登录失败跳转的页面中会存在Error字符。 "SaveCount=ecc"表示当检测到符合检查规则的内容时,开始计数并将计数存入ecc参数内。
思路就是利用检查Error字符来判断是否真正登录成功,因此将密码故意改成错的。
看下回放日志:
从图中可以看到检查到Error字符,count=3
根据脚本中的判断逻辑,在运行结果中打印出消息
if(atoi(lr_eval_string("{ecc}"))>0)
lr_error_message("登录失败");
atoi: ASCII to Integer. 通过lr_eval_string将参数{ecc}的字符内容取出并转成数字型
结果中可以看到,虽然实际登录失败了,但作为登录事务本身是执行成功的。