一、检查点的作用
从响应中查找特定内容,特定标识,来决定请求是否成功提交。
二、HTTP协议中检查点函数
HTTP协议中检查点有两种:图片和文字。这两种检查点可用以下三个函数实现:web_find()、web_reg_find()和web_image_check(),下面介绍三种函数的使用方法。
web_find()函数
函数的作用是“在页面中查找相应的内容”,常用参数及含义如下:
web_find("web_find", //定义该查找函数的名称
"RightOf=a", //定义查找字符的右边界
"LeftOf=b", //定义查找字符的左边界
"What=name", //定义查找内容
LAST);
使用该函数注意以下事项:
1.位置,函数在页面内容显示出来以后,在页面中进行查找,所以只能写在要查找内容之后
2.录制模式,该函数只能在基于HTML模式录制的脚本中进行查找
3.必须启用内容检查选项,在Runtime setting->Preferences里面,把Enable image and text check选中,否则不执行该查找函数
该函数还有以下缺点:
1.执行效率较低
2.不返回查找结果情况,如果想在执行该函数后根据查找结果做进一步操作时,没有返回值可以依据。
web_reg_find()函数
函数的作用是“在缓存中查找相应的内容”,常用参数及含义如下:
web_reg_find("Search=Body", //定义查找范围
"SaveCount=count", //定义查找计数变量名称
"Text=test", //定义查找内容
LAST);
使用该函数注意以下事项:
1.位置,该函数写在要查找内容的请求之前,通常情况下写在如下六个函数之前:Web_castom_request();web_image();web_link();web_submit_data();web_submit_form();web_url()
2.使用技巧,该函数中的“SaveCount”参数可以记录在缓存中查找内容出现的次数,我们可以使用该值,来判断要查找的内容是否被找到。
web_image_check()函数
函数作用:在页面中查找一个具体的图片,常用参数及含义如下:
web_image_check("web_image_check", //函数标题
"Alt=", //图标说明
"Src=", //图片链接地址
LAST);
使用该函数注意以下事项:
1.“Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值
2.该函数是在缓存中查找相应的内容,所以要放在查找内容之前;
3.使用该函数时,同样需要在Vuser->Run-Tme Settings中勾选Enable Image and text check,否则不执行该查找函数
三、web_find VS web_reg_find
1、这两个函数类型不同,web_find是普通函数,web_reg_find是注册函数;
2、这两种函数在运行机制不同,当客户端向服务器发出一个请求的时候,服务器进行响应;当响应的数据在缓存中的时候,注册函数可以在缓存中查找所要查找的内容;而普通函数(例如:web_find)需要等我们请求的显示页面完全显示出来后,从这个显示页面中进行查找制定的字符串内容;
3、web_find使用时必须开启内容检查选项,而web_reg_find则没有此限制;
4、web_find只能只用在基于HTML模式录制的脚本中,而web_reg_find没有此限制;
5、web_find是在返回的页面中进行内容查找,web_reg_find是在缓存中进行查找;
6、web_find在执行效率上不如web_reg_find;
7、web_find写在要查找内容的请求之后,web_reg_find写在要查找内容的请求之前;
四、检查点函数web_reg_find和事务函数结合使用统计事务成功率
大家通常使用参数LR_AUTO作为事务结束函数lr_end_transaction的第二参数,让LoadRunner自动判断事务是否成功。LoadRunner判断事务是否成功是通过对响应的状态码进行的,4XX,5XX表示事务失败,使用这种方式判断事务是否成功并不准确,有些接口返回错误但状态码仍然为200,此时需要将检查点函数web_reg_find和事务相结合的方式来进行,示例如下:
Action()
{
lr_start_transaction("login");
web_reg_find("SaveCount=count",
"TextPfx=token\":\"",
"TextSfx=\"",
LAST);
web_custom_request("nameLogin",
"URL=http://{ip}/auth/api/nameLogin",
"Method=POST",
"Resource=0",
"RecContentType=application/json",
"Referer=http://{ip}/web/login.html",
"Snapshot=t4.inf",
"Mode=HTML",
"EncType=application/json; charset=UTF-8",
"Body={\"name\":\"{account}\",\"password\":\"{password}\"}",
LAST);
if (atoi(lr_eval_string("{count}"))==1) {
lr_output_message("login successed!");
lr_end_transaction("login", LR_PASS);
}
else{
lr_output_message("login failure!");
lr_end_transaction("login", LR_FAIL);
}
return 0;
}