LR相关知识(转载网上文章)

上一篇 / 下一篇  2013-12-20 11:38:12 / 个人分类:loadrunner

 1) 准备培训环境

安装LR脚本编译器VUGen,安装的过程很简单将VUGen的安装包COPY到需要安装的机器上,根据安装想到就可以安装成功,同时安装一个补丁;注意如果使用的机器上已经安装了LR,则不需要这个步骤;

安装LR的一个测试实例网站,这是LR用来做培训的一个网站程序,安装后会提供一个JAVA script写的网站同时提供一个ApacheWeb服务器;在安装的过程也很简单只需要根据安装向导安装就可以,安装完成后将APPL-MToursPatch-58目录下的5class文件覆盖到安装目/MercuryTours/servlets/com/mercurytours/servlet;然后将D:/Program Files/Mercury Interactive/MercuryTours/JavaSoft/JRE/1.2下的bin目录和Lib目录备份更新为新版本的相同信息;将APPL-MToursPatch-58CascadeMenu.js文件覆盖到安装目录/MercuryTours/public_html/jscript

简单测试:启动服务,启动浏览器输入:http://localhost/servlets/com.mercurytours.servlet.WelcomeServlet;如果显示正确的页面说明安装成功;

2) 录制脚本

启动VUGen

选择“单协议脚本”—“web(HTTP/HTML)”,如下图所示:

点击确定,选择应用程序,输入录制的URL,如下图所示:

 

点击确定后开始录制脚本;

录制脚本的过程中需要注意录制脚本的规范化,比如:在开始一个事务的时候直接插入事务,对于不同的交易定义不同的Action,脚本录制完成如下图所示:

上图中红框标识出来的就是需要注意规范的地方,在这次培训中收益不小;

完成这个步骤我们的脚本就录制完成了。

3) 脚本修改及优化;

录制完成脚本后我们先运行一下,这个脚本可以运行,但是在运行到删除机票的时候出错,这是因为我们录制的脚本在没有做任何修改的时候是应用是很不灵活的,这个错误是因为我们选择删除的机票已经删除,所以再次运行的时候会找不到表单,所以我们需要对脚本进行修改成为可用的测试脚本,那么下面我们就对脚本进行修改和优化;

参数化:脚本中的参数化就是将其中固定的值(或者录制的值)通过参数修改为可变的值,这个过程就是参数化;更详细的参数化,请参与LR的用户手册;

在这个脚本中我们可以对登录的用户名和密码进行参数化,脚本如下所示:

lr_start_transaction("login");

 

web_submit_form("com.mercurytours.servlet.SignonServlet",

       "Snapshot=t2.inf",

       ITEMDATA,

       "Name=userName", "Value=test1", ENDITEM,

       "Name=password", "Value=111111", ENDITEM,

       "Name=login.x", "Value=23", ENDITEM,

       "Name=login.y", "Value=6", ENDITEM,

       LAST);

 

lr_end_transaction("login",LR_AUTO);

在上述的一段脚本中标红的部分是需要参数化的部分,选择红色部分,点击右键,选择“替换为新参数”,如下图所示:

在弹出的对话框中,输入参数名:name,如下图所示:

 

下面我们重点介绍一下参数的类型。

nDateTime:很简单,在需要输入日期/时间的地方,可以用DateTime类型来替代。

其属性设置也很简单,选择一种格式即可。当然也可以定制格式。

nGroup Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunner

使用该虚拟用户所在的Vuser Group来代替。但是在VuGen中运行时,Group Name

将会是None

nLoad Generator Name:在实际运行中,LoadRunner使用该虚拟用户所在Load

Generator的机器名来代替。

nIteration Number:在实际运行中,LoadRunner使用该测试脚本当前循环的次数来

代替。

nRandom Number:随机数。很简单。在属性设置中可以设置产生随机数的范围

nUnique Number:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小。

注意:使用该参数类型必须注意可以接受的最大数。例如:某个文本框能接受的

最大数为99。当使用该参数类型时,设置第一个数为1,递增的数为1,但100

虚拟用户同时运行时,第100个虚拟用户输入的将是100,这样脚本运行将会出错。

注意:这里说的递增意思是各个用户取第一个值的递增数,每个用户相邻的两次循

环之间的差值为1。举例说明:假如起始数为1,递增为5,那么第一个用户第一

次循环取值1,第二次循环取值2;第二个用户第一次循环取值为6,第二次为7

依次类推。

nVuser ID:设置比较简单。在实际运行中,LoadRunner使用该虚拟用户的ID来代

替,该ID是由Controller来控制的。但是在VuGen中运行时,Vuser ID将会是–1

nFile:需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据(下

面我们将会介绍)

nUser Defined Function:从用户开发的dll文件提取数据。就目前我认为,这种方式

没有必要。VuGen支持C语言的语法,在VuGen中重新编写类似的函数应该不难。

(以上内容来源于:LR使用手册.pdf)

 

点击确定,这样就设置了一个参数,同样的我们对密码进行参数化;完成后脚本如下所示:

lr_start_transaction("login");

 

web_submit_form("com.mercurytours.servlet.SignonServlet",

       "Snapshot=t2.inf",

       ITEMDATA,

       "Name=userName", "Value={name}", ENDITEM,

       "Name=password", "Value={password}", ENDITEM,

       "Name=login.x", "Value=23", ENDITEM,

       "Name=login.y", "Value=6", ENDITEM,

       LAST);

 

lr_end_transaction("login",LR_AUTO);

由上述的脚本可以看出用户名和密码由两个用{}括起来的参数代替,上述脚本中标红的就是参数化的参数。

这样只是初步的参数化,然后我们选择“Vuser”—“参数列表”,如下图所示:

选择name,“添加列”,然后选择“按名称”选择name,选择password,选择“按名称”选择password,如下图所示:

 

 

通过Web网站注册新的用户,test2test3……,用户注册如下图所示:

然后修改参数,使用记事本修改,如下图所示:

这样保存后参数化就完成了。然后我们看一下参数选择的策略;

选择下一行的策略有四种Sequential(顺序选择)、Random(随机选择)Unique(选择唯一值),Same line as name(这个是在有两行关联的数据时,可以有一个参数选择这种方式),重点说一下前面三个选择方式:

nSequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取

nRandom:在每次循环里随机的读取一个,但是在循环中一直保持不变

nUnique:唯一的数。注意:使用该类型必须注意数据表有足够多的数。比如

Controller中设定20个虚拟用户进行5次循环,那么编号为1的虚拟用户取前5

个数,编号为2的虚拟用户取6-10的数,依次类推,这样数据表中至少要有100

个数据,否则Controller运行过程中会返回一个错误。

nSame Line As某个参数(比如Name):和前面定义的参数Name取同行的记录。

通常用在有关联性的数据上面。

更新值的时间:

nEach Occurrence:在运行时,每遇到一次该参数,便会取一个新的值

nEach iteration:运行时,在每一次循环中都取相同的值

nOnce:运行时,在每次循环中,该参数只取一次值

(以上内容来源于:LR用户使用手册.pdf

完成上面的步骤我们对于用户和密码的参数化就完成了,运行一下脚本,这里注意一个小技巧:就是打开“运行设置”-日志”,选择扩展日志,然后选中“参数替换”,如下图所示:

   通过上图设置,在运行脚本的时候,可以在脚本运行日志中看到参数替换的情况,运行日志如下所示:

vuser_init.c(22):通知: Transaction "首页" ended with "Pass" status (Duration: 7.8871).

vuser_init.c(26):通知: Transaction "login" started.

vuser_init.c(28):通知:参数替换:参数“name=test1

vuser_init.c(28):通知:参数替换:参数“password=111111

上述日志说明我们的参数化成功了。

那我们看看这个脚本是不是其他地方方还可以参数化,是的,比如我们预订机票的城市,信用卡的卡号等等;只要是可以变化的基本上都可以参数化;

关联

关联是脚本修改过程中重要的步骤,我们先看下面一段脚本代码:

lr_start_transaction("bookflight");

 

   lr_think_time(103);

 

   web_submit_data("com.mercurytours.servlet.ReservationServlet",

       "Action=http://localhost/servlets/com.mercurytours.servlet.ReservationServlet?procSub=1&pg=1",

       "Method=POST",

       "RecContentType=text/html",

       "Referer=http://localhost/servlets/com.mercurytours.servlet.ReservationServlet",

       "Snapshot=t3.inf",

       "Mode=HTML",

       ITEMDATA,

       "Name=tripType", "Value=roundtrip", ENDITEM,

       "Name=passCount", "Value=1", ENDITEM,

       "Name=fromPort", "Value=Acapulco", ENDITEM,

       "Name=fromMonth", "Value=06", ENDITEM,

       "Name=fromDay", "Value=13", ENDITEM,

       "Name=toPort", "Value=Zurich", ENDITEM,

       "Name=toMonth", "Value=06", ENDITEM,

       "Name=toDay", "Value=14", ENDITEM,

       "Name=servClass", "Value=First", ENDITEM,

       "Name=airline", "Value=No Preference", ENDITEM,

       "Name=findFlights.x", "Value=29", ENDITEM,

       "Name=findFlights.y", "Value=7", ENDITEM,

       LAST);

 

   web_submit_form("com.mercurytours.servlet.PurchaseServlet",

       "Snapshot=t4.inf",

TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-02  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 5574
  • 日志数: 8
  • 建立时间: 2011-01-27
  • 更新时间: 2014-01-13

RSS订阅

Open Toolbar