LoadRunner 之三“检查点和关联”

       判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为200  ,那么VuGen 就认为脚本正确地运行了,并且是运行通过的。在绝大多数系统出错时会返回错误页面码? 不会一般系统都会返回一个消息提示框,来提升用户感受。例如,“网站繁忙,请稍后”。其实这个时候网站已经无法正确响应用户请求了,但是VuGen 脚本无法识别,会错误地认为网站还能正确访问,导致分析错误。所以这时需要一种检查点函数帮助验证请求发送出去后,服务器的返回是不是期望的内容,如果不是,那么就说明服务器返回无法提供正常的服务了。
还是以WebTours为例,录制登录的脚本。
 
1. 在录制之间需要打开菜单Vuser ---> run-time setting ,选择运行时设置选项,勾选“启动图像和文本检查”选项。如果不勾选此项,将不会执行打找函数。
 
2.选择“树”,右键登录事务,选择文本检查,点击确定。
 
3.填写搜索参数。
 
脚本如下:
 
Action()
{
 
    web_url("WebTours",
        "URL=http://127.0.0.1:1080/WebTours/",
        "TargetFrame=",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t1.inf",
        "Mode=HTML",
        LAST);
 
    lr_think_time(37);
    lr_rendezvous("集合点");
//添加集合点
 
    lr_start_transaction("login");
//开始登录事务
 
    web_submit_data("login.pl",
        "Action=http://127.0.0.1:1080/WebTours/login.pl",
        "Method=POST",
        "TargetFrame=body",
        "RecContentType=text/html",
        "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
        "Snapshot=t3.inf",
        "Mode=HTML",
        ITEMDATA,
        "Name=userSession", "Value=125397.629566626ztfAVtApfHAiDDDDDiHAApitDtcf", ENDITEM,
        "Name=username", "Value=xueli", ENDITEM,
        "Name=password", "Value=123456", ENDITEM,
        "Name=JSFormSubmit", "Value=off", ENDITEM,
        "Name=login.x", "Value=68", ENDITEM,
        "Name=login.y", "Value=3", ENDITEM,
        LAST);
 
    lr_end_transaction("login", LR_AUTO);//结束登录事务
 
    web_find("web_find",//插入检查点
        "What=Welcome",
        LAST);
 
    lr_think_time(18);
 
    web_url("IE9CompatViewList.xml",
        "URL=http://ie9cvlist.ie.microsoft.com/IE9CompatViewList.xml",
        "TargetFrame=",
        "Resource=0",
        "RecContentType=text/xml",
        "Referer=",
        "Snapshot=t5.inf",
        "Mode=HTML",
        LAST);
 
return 0;
}
注:最好把检查点放在事务的外面,以免影响响应时间。
 
4.运行脚本,结果登录失败。
Action.c(29): 通知: 事务 "login" 已启动。
Action.c(32): web_submit_data("login.pl") 已成功,795 个正文字节,225 个标头字节      [MsgId: MMSG-26386]
Action.c(50): web_submit_data("login.pl_2") 已成功,795 个正文字节,225 个标头字节      [MsgId: MMSG-26386]
Action.c(67): 通知: 事务 "login" 以 "Pass" 状态结束 (持续时间: 0.5177 浪费的时间: 0.0049)。
Action.c(69): 错误 -27195: “web_find”失败。找到“Welcome”的 0 处出现(RightOf=“”,LeftOf=“”)      [MsgId: MERR-27195]
Action.c(69): web_find 最高严重级别为“ERROR”      [MsgId: MMSG-26391]
 
    登录失败是因为脚本中的userSession(临时身份证)值每次登录的值不一样,回放登录时,userSession值和录制时脚本的值不同,所以登录失败,这时就需要进行关联。
关联有两种方式:自动关联和手动关联,一般采用手动关联。
 
5.在userSession值出现之前进行关联,右键选择在登陆之前插入函数web_reg_save_param函数,点击确定,取一个参数名SessionID即可。
 
返回脚本,发现多了几行。
web_reg_save_param("SessionID",
        "LB=",
        "RB=",
        LAST);
 
6.查看http请求正文,看到userSession只右边存在参数值。
 
7.补全web_reg_save_param的参数值,再把web_submit_data中的userSession值改为{参数名}。
web_reg_save_param("SessionID",
     "LB=userSession value=",
     "RB=",
      LAST);
...
web_submit_data("login.pl",
        "Action=http://127.0.0.1:1080/WebTours/login.pl",
        "Method=POST",
        "TargetFrame=body",
        "RecContentType=text/html",
        "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
        "Snapshot=t3.inf",
        "Mode=HTML",
        ITEMDATA,
        "Name=userSession", "Value={SessionID}", ENDITEM,
        "Name=username", "Value=xueli", ENDITEM,
        "Name=password", "Value=123456", ENDITEM,
        "Name=JSFormSubmit", "Value=off", ENDITEM,
        "Name=login.x", "Value=68", ENDITEM,
        "Name=login.y", "Value=3", ENDITEM,
        LAST);
注:这里右边有值,但是要填写在LB这个参数后边,这里是相反的(镜像原理)。
 
8.运行脚本,登录成功。
Action.c(24): web_submit_data("login.pl") 已成功,5694 个正文字节,1483 个标头字节      [MsgId: MMSG-26386]
Action.c(41): 通知: 事务 "login""Pass" 状态结束 (持续时间: 0.5262 浪费的时间: 0.0042)。
Action.c(44): “web_find”成功。找到“Welcome”的 2 处出现(RightOf=“”,LeftOf=“”)      [MsgId: MMSG-27196]
Action.c(44): web_find 已成功      [MsgId: MMSG-26392]
Action.c(50): web_url("IE9CompatViewList.xml") 已成功,13764 个正文字节,467 个标头字节      [MsgId: MMSG-26386] 
 
补充:
图片检查点用int web_image_check函数。
int web_image_check( const char *CheckName, <List of Attributes>, <"Alt=alt"|| "Src=src">, LAST ); 
Web_reg_find( “image1”, // 函数标题
             “src=...”||"alt=..." // 图片说明
              LAST);

 ---转载请标明,并添加原文链接---

 
posted @ 2019-01-23 10:41  雪梨NOT404  阅读(235)  评论(0编辑  收藏  举报