在录制编写脚本后,通常就会进行回放,如果回放通过没有出现错误,就认为脚本是正确的。究竟VeGen是怎么区分脚本是否回放正确呢?一般情况下,脚本回放错误都是应为404错误,也就是页面无法找到,而只要页面返回了,VuGen都不会提示任何错误。例如,我们的飞机购票系统这个例子,因为一开始没做关联而登陆失败,但是脚本还是成功运行了。
VuGen判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为200 OK,那么VuGen就认为脚本正确地运行了,并且是运行通过的。在绝大多数系统出现错误时会返回错误页面吗?不会,一般系统都会返回一个消息提示框,来提示用户感受。例如“服务器正忙,请稍后”。其实这个时候,网站已经无法正确响应用户请求了,但是VuGen脚本无法识别,会错误地认为网站还能正确访问,导致分析错误。所以这是需要一种检查点函数帮助验证请求发送出去后,服务器的返回是不是期望的内容,如果不是,那么就说明服务器无法提供正常的服务了。
注意:脚本开发完后,验证该脚本是否是一个成功的脚本,可以根据以下步骤去验证:
1、检查点是否通过;
2、到系统的界面,或数据库中检查,是否按要求新增或修改了对应的数据。
通常情况下,检查点函数会与事务一起使用。如以下例子:
/ /插入检查点函数,检查服务器是否返回"Welcome"
web_reg_find("Text=Welcome",
"Fail=NotFound",
"SaveCount=Welcome_Count",
LAST);
//插入登陆事务
Lr_start_transaction(“Trn_Login”):
// 登陆系统
web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=login.x", "Value=35", ENDITEM,
"Name=login.y", "Value=14", ENDITEM,
LAST);
// 判断登陆事务是否成功
if (atoi(lr_eval_string("{Welcome_Count}")) > 0){ //判断如果Welcome字符串出现次数大于0
lr_end_transaction(“Trn_Login”,LR_PASS);} //登陆事务PASS
else{ //如果出现次数小于等于
lr_end_transaction(“Trn_Login”,LR_FAIL);} //登陆事务FAIL
// 判断注册事务是否成功
if(atoi(lr_eval_string("{check_num}")) > 0)
{
lr_end_transaction("点击立即注册", LR_PASS);
}
else
{
lr_end_transaction("点击立即注册", LR_FAIL);
}
lr_think_time(4);
几个注意点:
(1)Web_reg_find是注册类型函数(也有说是缓存函数),它本身并不执行,不能通过它的返回值来作为事务的判断条件(因为web_reg_find()的返回值0和1表示web_reg_find()是否注册成功,并不代表查找的内容是否存在,也就是说无论查找的文本内容是否存在,都返回0。它是从返回的缓冲区扫描而不是在接收的页面中查找。这是比web_find更高效的一个函数;
(2)由于是在缓冲区查找,所以要放在被查找函数的前面。()
(3)web_reg_find中会统计注册的次数,所以SaveCount这个变量会存着注册次数的统计。
(4)出现等号、双引号时,记得要加上反斜杠