分享到
LoadRunner检查点使用小结
 
作者:xql00163com,发布于2011-12-05
 

LR中检查点有两种:图片和文字。

常用检查点函数如下:

1)web_find()函数用于从 HTML 页中搜索指定的文本字符串;

2)web_reg_find()函数注册一个请求,以在下一个操作函数(如 web_url)检索到的HTML网页上搜索指定的文本字符串;

3)web_image_check()函数用于从HTML页面中查找指定的图片;

4)web_global_verfication()属于注册函数,注册一个在web页面中搜索文本字符串的请求,与web_reg_find只在下一个Action函数中执行搜索不同的是它在之后所有的Action类函数中执行搜索指定的文本字符串;

下面分别介绍以上函数的用法:

1、web_find()函数参数举例:

web_find("web_find","RighOf=a","LeftOf=b","What=name",LAST);

参数解释:"web_find"定义该查找函数的名称;“LeftOf”和“RighOf=”用来定义查找字符的左右边界;“What=”定义查找内容;

例如上述参数举例中的意思就是在页面中查找左边界为b,右边界为a,内容为name的信息;

使用该函数注意事项:该函数是在查找页面中的内容,所以要放在要查找的内容的后面;该函数只能在基于HTML模式录制的脚本中进行查找

注意事项:使用该函数时,要在Vuser->Run-Tme Settings中更改下设置

勾选Enable Image and text check

系统默认是不勾选该选项的。

2、web_reg_find()函数参数举例:

web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);

参数解释: Search用来定义查找范围,SaveCount定义查找计数变量名称,该参数可以记录在缓存中查找内容出现的次数,可以使用该值,来判断要查找的内容是否被找到;

例如上述参数举例中的意思就是Body中查找内容为aaa的信息,并将出现次数记录在变量ddd中;

【代码一:web_reg_find("Text=Payment Details",LAST);

代码思路:1.“Payment Details” 为你要检查的文本;

2. 脚本执行到此处,若在页面上找到了这几个字符串,那脚本继续执行下去;若没有找到,脚本将在此报错并且结束。】

【代码二:web_reg_find("Text=Payment Details", "SaveCount=para_count", LAST); //check 的函数

web_submit_form("reservations.pl_2", //要check的页面的录制时的代码

"Snapshot=t22.inf",

ITEMDATA,

"Name=outboundFlight", "Value=003;0;06/23/2007", ENDITEM,

"Name=reserveFlights.x", "Value=61", ENDITEM,

"Name=reserveFlights.y", "Value=2", ENDITEM,

LAST);

if (atoi(lr_eval_string("{para_count}"))>0) //验证是否找到了页面上的要检查的字符串

lr_output_message("we find the string!");

else

lr_output_message("sorry,don't find the string!");

代码思路:1.“Payment Details” 为你要检查的文本;

2. 脚本执行到此处,不管页面上是否存在你要检查的字符串,脚本都不会报错,而是执行下去。

3. 此段代码将找到的你要检查的字符串的个数,存为一个参数。 然后在页面代码的后面,通过检查这个参数的值是否大于0,来判断是否找到了你所要检查的字符串。】

【代码三:

A. web_reg_find("Text=Payment Detdils", "Fail=NotFound",LAST);或

B. web_reg_find("Text=Payment Detdils", "Fail=Found",LAST);

代码思路:

1.“Payment Details” 为你要检查的文本;

2. 若是A代码:脚本执行到此处,若没有找到check的字符串,脚本将FAIL, 并且停止执行下去。反之,则一直执行下去。

3. 若是B代码:脚本执行到此处,若找到check的字符串,脚本将FAIL, 并且停止执行下去。反之,则一直执行下去】

使用该函数注意事项:该函数是在缓存中查找相应的内容,所以要放在查找内容之前;通常情况下写在如下六个函数之前:Web_castom_request(); web_image(); web_link(); web_submit_data(); web_submit_form(); web_url();

使用技巧:在该函数的参数中有个“SaveCount”,该参数可以记录在缓存中查找内容出现的次数,我们可以使用该值,来判断要查找的内容是否被找到,下面举个例子来说明:(引用LR的帮助中的例子)

// Run the Web Tours sample

web_url("MercuryWebTours",

"URL=http://localhost/MercuryWebTours/",

"Resource=0",

"RecContentType=text/html",

"Referer=",

"Snapshot=t1.inf",

"Mode=HTML",

LAST);

// Set up check for successful login by looking for "Welcome"

web_reg_find("Text=Welcome",

"SaveCount=Welcome_Count",

LAST);

// Now log in

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);

// Check result

if (atoi(lr_eval_string("{Welcome_Count}")) > 0){ //判断如果Welcome字符串出现次数大于0

    lr_output_message("Log on successful."); }//在日志中输出Log on successful

else{ //如果出现次数小于等于

lr_error_message("Log on failed"); //在日志中输出Log on failed

return(0); }

我觉得这个方法非常有用,我们可以举一反三,应用到我们实际的项目

注:在录制过程中添加的检查点,用到的函数是web_reg_find(),且参数只有“Text=”

3、web_image_check()函数参数说明:

web_image_check("web_image_check","Alt=","Src=",LAST);

参数解释:“Alt”和“Src”的值直接取该图片在网页源代码中相应参数的值;

注意事项:使用该函数时,要在Vuser->Run-Tme Settings中勾选Enable Image and text check,具体操作请看web_find()中的注意事项。

经过测试,该函数用到查找内容前面或后面,都不影响查找结果。

举例说明(脚本)

该脚本记录的是登陆系统后退出的操作,在脚本中用到atoi()函数和lr_eval_string(”{SaveCount定义的变量}”)两个函数结合使用,判断查找内容出现的次数是否大于0,若大于0,则输入登录成功的信息。

vuser_init()

{

    web_url("xjcost",

    "URL=http://gczj-server8:9205/xjcost/",

    "Resource=0",

    "RecContentType=text/html",

    "Referer=",

    "Snapshot=t1.inf",

    "Mode=HTML",

    EXTRARES,

    "Url=jsp/images/index/index.swf", ENDITEM,

    "Url=jsp/images/index/xxfb2.gif", ENDITEM,

     "Url=jsp/images/index/ywpt2.gif", ENDITEM,

     LAST);

     web_url("userAction.struts",

     "URL=http://gczj-server8:9205/xjcost/userAction.struts?actionType=reLogin",

     "Resource=0",

     "RecContentType=text/html",

     "Referer=",

    "Snapshot=t2.inf",

     "Mode=HTML",

     LAST);

    return 0;

}

Action()

{

    lr_start_transaction("Log_on");

    lr_rendezvous("Log_on");

     web_add_cookie("userAccount=admin; DOMAIN=gczj-server8");

    web_reg_find("Text=欢迎您",

    "SaveCount=欢迎您_Count",

     LAST);

    web_image_check("web_image_check",

    "Src=/xjcost/jsp/images/index1/edit_01.gif",

     LAST);

    web_submit_data("userLogin.struts",

    "Action=http://gczj-server8:9205/xjcost/userLogin.struts?actionType=userLogin",

    "Method=POST",

    "RecContentType=text/html",

    "Referer=http://gczj-server8:9205/xjcost/userAction.struts?actionType=reLogin",

    "Snapshot=t3.inf",

    "Mode=HTML",

     ITEMDATA,

    "Name=userAccount", "Value=admin",     ENDITEM,

    "Name=pwd", "Value=1111", ENDITEM,

    EXTRARES,

    "Url=jsp/images/index1/edit_01a.gif", "Referer=http://gczj-server8:9205/xjcost/userLogin.struts?actionType=userLogin",     ENDITEM,

    LAST);

    web_find("web_find",

    "What=欢迎您",

    LAST);

    lr_end_transaction("Log_on",LR_AUTO);

    //检查是否登录成功

     //如果“欢迎您”这个字符出现次数大于0,输出“Log on successfully!”

    if(atoi(lr_eval_string("{欢迎您_Count}"))>0)

     lr_output_message("Log on successfully!");

     else

    lr_error_message("Log on failed!");

    return 0;

    return 0;

}

//atoi()函数的作用是将一个ASCII字符串转换为整型

//lr_eval_string()函数作用是取得参数值,将字符串变量中的参数值替换为当前的参数值并将这个字符串返回

vuser_end()

{

    lr_think_time(4);

    web_url("userAction.struts_2",

    "URL=http://gczj-server8:9205/xjcost/userAction.struts?actionType=reLogin",

    "Resource=0",

    "RecContentType=text/html",

    "Referer=",

    "Snapshot=t4.inf",

"Mode=HTML",

    LAST);

    return 0;

}

Global.h:

#ifndef _GLOBALS_H

#define _GLOBALS_H

//--------------------------------------------------------------------

// Include Files

#include "lrun.h"

#include "web_api.h"

#include "lrw_custom_body.h"

//--------------------------------------------------------------------

// Global Variables

#endif // _GLOBALS_H

Replay Log常见信息说明

1、web_find()和web_image_check()函数的日志信息(这两个日志信息实际上是一样的,只是输出的函数名和参数不同)

1)信息1Action.c(22): Verification checks not enabled. web_image_check is skipped. See the 'Run-time settings/Preferences/Checks'

[MsgId: MMSG-27197]

Action.c(22): web_image_check was successful

[MsgId: MMSG-26392]

出现该信息,说明没有勾选Enable Image and text check

2)信息2Action.c(22): "web_image_check" succeeded (1 occurrence(s) found. Alt="", Src="/xjcost/jsp/images/index1/edit_01.gif")

[MsgId: MMSG-27192]

Action.c(22): web_image_check was successful

[MsgId: MMSG-26392]

出现该信息,说明检查点设置成功,且已经查找到信息

3)信息3Action.c(22): Error -27191: "web_image_check" failed (0 occurrence(s) found. Alt="", Src="/xjcost/jsp/images/index1/edit_1.gif")

[MsgId: MERR-27191]

Action.c(22): web_image_check highest severity level was "ERROR"

[MsgId: MMSG-26391]

出现该信息,说明要查找的内容没有找到。这时依次尝试以下操作:

(1)检查参数的信息是否写错;

(2)如果是web_find(),检查函数的位置是否在要查找内容的后面;

(3)如果是web_image_check(),查看该图片的源代码,看其是否是这个页面上的图片,很可能是图片选择错误,即所选图片不属于该页面。

2、web_reg_find()函数的日志信息

1)信息1Action.c(15): Registering web_reg_find was successful

[MsgId: MMSG-26390]

出现该信息,说明内容已查找到

2)信息2Action.c(27): Error -26366: "Text=ABC" not found for web_reg_find

[MsgId: MERR-26366]

Action.c(27): web_submit_data("userLogin.struts") highest severity level was "ERROR", 18364 body bytes, 918 header bytes, 13 chunking overhead bytes

[MsgId: MMSG-26387]

该信息在replay log页面是红色显示的,说明没有找到内容,出现此情况尝试以下两个操作:

(1)参数的信息是否正确;

(2)查看该函数是否在查找内容的前面。

插入函数的方法:

1、 手工写入,在需要插入函数的位置手工写入该函数;

2、 光标停留在要插入函数的位置,在INSERT菜单中,选择new step,在列表中选择或查找要插入的函数,根据提示填写必要的参数;

3、 在tree view模式下,在树状菜单中选中要插入函数的位置,右键,选择insert after或insert before,根据提示填写必要的参数;

总结:

1、 这两个函数函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数;

2、 WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制;

3、 WEB_FIND只能用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制;

4、 WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在缓存中进行查找;

5、 WEB_FIND在执行效率上不如WEB_REG_FIND;


相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践


LoadRunner性能测试基础
软件测试结果分析和质量报告
面向对象软件测试技术研究
设计测试用例的四条原则
功能测试中故障模型的建立
性能测试综述
更多...   


性能测试方法与技术
测试过程与团队管理
LoadRunner进行性能测试
WEB应用的软件测试
手机软件测试
白盒测试方法与技术


某博彩行业 数据库自动化测试
IT服务商 Web安全测试
IT服务商 自动化测试框架
海航股份 单元测试、重构
测试需求分析与测试用例分析
互联网web测试方法与实践
基于Selenium的Web自动化测试
更多...   
 
 
 
 
 
 
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号