如何用好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;

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-01 03:48:39

如何用好LoadRunner中的检查点的相关文章

软件测试工具LoadRunner中的测试协议选择

在学习LoadRunner协议选择之前,我觉得我们有必要了解一下协议的基本概念.首先我们知道,计算机与计算机之间的通信都离不开通信协议,接着我们来说说通信协议的概念.通信协议是什么,通信协议实际上是一组规定和约定的集合.说白了就是两台或者多台计算机在通信时必须约定好本次通信做什么,例如是进行文件传输,还是发送电子邮件;然后约定怎样通信,什么时间通信等.因此,通信双方要遵从相互可以接受的协议(相同或兼容的协议)才能进行通信,如目前因特网上广泛使用的TCP/IP协议等,任何计算机连入网络后只要运行T

亲们,loadrunner中录制飞机订票系统,怎么参数化航班?求详细介绍

问题描述 亲们,loadrunner中录制飞机订票系统,怎么参数化航班?求详细介绍 Virtual User Script started at : 2015-09-30 10:25:58Starting action vuser_init.Web Turbo Replay of LoadRunner 11.0.0 for WINXP; build 8859 (Aug 18 2010 20:14:31) [MsgId: MMSG-27143]Run Mode: HTML [MsgId: MMSG

loadrunner问题-loadrunner中analysis如何显示所有的图?

问题描述 loadrunner中analysis如何显示所有的图? loadrunner中analysis如何显示所有的图?显示出所有的图,在哪里设置?

objective c-oc中如何用在main中定义的字符串赋值给创建的类?

问题描述 oc中如何用在main中定义的字符串赋值给创建的类? 解决方案 还有,在main里没看见楼主创建CHBLetter对象 解决方案二: 第二张照片的str=s中的str应该是self.str或者_str,指向该类的属性"str" 解决方案三: 楼主私信要的代码: //返回随机生成的名字 (NSString *)randomForName { NSMutableString *tempStr = [NSMutableString string]; for (int i = 0;

LoadRunner中90%响应时间的理解

最近有几个学员问道关于90%的响应时间不太理解,顾摘录如下内容供大家参考: 官方解释: Solution: The 90th percentile is the value for which 90% of the data points are smaller The 90th percentile is a measure of stastical distribution, not unlike the median. The median is the middle value. The

LoadRunner 技巧之 检查点

判断脚本是否执行成功是根据服务器返回的状态来确定的,如果服务器返回的HTTP状态为 200 OK ,那么VuGen 就认为脚本正确地运行了,并且是运行通过的.在绝大多数系统出错时会返回错误页面码? 不会一般系统都会返回一个消息提示框,来提升用户感受.例如,"网站繁忙,请稍后".其实这个时候网站已经无法正确响应用户请求了,但是VuGen 脚本无法识别,会错误地认为网站还能正确访问,导致分析错误.所以这时需要一种检查点函数帮助验证请求发送出去后,服务器的返回是不是期望的内容,如果不是,那么

LoadRunner中log的使用总结

1.log的设置方式. 在 runtime setting中可以设置log的生成方式: 默认的log方式: Enable logging选中,log option是Send messages only when an error occurs. 可以修改日志的方式: Always send messages(这种方式会一直打印输出日志,不仅在错误时) standard log--记录所有的请求反馈的日志,包括successful和fail的日志. Extended log--可提供扩展的日志信息

LoadRunner中如何使用动态链接库技术

什么是动态库? 动态库一般又叫动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件.动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数.函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译.链接并与使用它们的进程分开存储的函数.DLL 还有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库

LoadRunner中HTML模式与URL模式的区别

在Web(HTTP/HTML)录制中,有2种重要的录制模式. 用户该选择那种录制模式呢? 一)HTML-mode录制是缺省也是推荐的录制模式.它录制当前网页中的HTML动作. 在录制会话过程中不会录制所有的资源.在回放时,HTML-mode脚本积极地解析返回的信息来获得要下载的资源. HTML-mode是亦称上下文敏感方式因为它只能在先前请求的结果的上下文之内执行.由于许多的HTTP 请求数据都是从内存中取出来的,所以语句必须在正确的前个请求之后执行. HTML-mode录制的优点是: 1.资源