qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

如何用好LoadRunner中的检查点

如何用好LoadRunner中的检查点
转自:领测软件测试网[http://www.ltesting.net]
原文链接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946.html

如何用好LoadRunner中的检查点LR中检查点有两种:图片和文字。 常用检查点函数如下: 1)web_find()函数用于从 HTML 页中搜索指定的文本字符串; 2)web_reg_find()函数注册一个请求,以在下一个操作函数(如 web_url)检索到的HTML网页上搜  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",

转自:领测软件测试网[http://www.ltesting.net]


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({Wel
  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=",


转自:领测软件测试网[http://www.ltesting.net]
原文链接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946_2.html

 

Snapshot=t4.inf, Mode=HTML, LAST); return 0; } Global.h: #ifndef _GLOBALS_H #define _GLOBALS_H //-------------------------------------------------------------------- // Include Files #include lrun.h
  "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;


转自:领测软件测试网[http://www.ltesting.net]
原文链接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946_3.html


原文链接:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2012/0120/203946.html

posted on 2012-01-25 22:18 顺其自然EVO 阅读(2730) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜