LoadRunner连载使用.docx

上传人:b****6 文档编号:6166826 上传时间:2023-01-04 格式:DOCX 页数:42 大小:1.69MB
下载 相关 举报
LoadRunner连载使用.docx_第1页
第1页 / 共42页
LoadRunner连载使用.docx_第2页
第2页 / 共42页
LoadRunner连载使用.docx_第3页
第3页 / 共42页
LoadRunner连载使用.docx_第4页
第4页 / 共42页
LoadRunner连载使用.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

LoadRunner连载使用.docx

《LoadRunner连载使用.docx》由会员分享,可在线阅读,更多相关《LoadRunner连载使用.docx(42页珍藏版)》请在冰豆网上搜索。

LoadRunner连载使用.docx

LoadRunner连载使用

性能测试从零开始——LoadRunner入门

5.2.2 规划脚本结构

       在录制时,用户可以选择哪些操作生成脚本在vuser_init、Action和vuser_end中,同时,也可以在录制时随时加入transaction的定义、注释和同步点。

VU录制工具条如图5-3所示。

图5-3 VU录制工具条

5.2.3 HTTPVuser中的URLmode和HTMLmode

       在录制之前,我们需要设置录制选项,如图5-4所示。

图5-4 VU录制设置选项

       在默认情况下,选择“HTML-basedscript”,说明脚本中采用HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解,推荐以这种方式录制。

“URL-basedscript”说明脚本中的表示采用基于URL的方式,所有的HTTP的请求都会被录制下来,单独生成函数,所以URL模式生成的脚本会显得有些杂乱。

 实例

以HTML模式录制,访问“

Action()

{

 web_url("",

   "URL=

   "Resource=0",

   "RecContentType=text/html",

   "Referer=",

   "Snapshot=t1.inf",

   "Mode=HTML",

   LAST);

 return0;

}

以URL模式录制同样的操作,会生成如下脚本:

Action()

{

 web_url("",

   "URL=

   "Resource=0",

   "RecContentType=text/html",

   "Referer=",

   "Snapshot=t1.inf",

   "Mode=HTTP",

   LAST);

 web_url("logo.gif",

   "URL=

   "Resource=1",

   "RecContentType=image/gif",

   "Referer=

   "Snapshot=t2.inf",

   LAST);

 web_url("html.gif",

   "URL=

   "Resource=1",

   "RecContentType=image/gif",

   "Referer=

   "Snapshot=t3.inf",

   LAST);

web_url("boxad1.gif",

   "URL=

   "Resource=1",

   "RecContentType=image/gif",

   "Referer=

   "Snapshot=t4.inf",

   LAST);

........................................

..........................................

//经统计,录制生成的web_url函数有20个

return0;

}

选择HTML还是URL录制,有以下参考原则:

(1)基于浏览器的应用程序推荐使用HTML-basedscript。

(2)不是基于浏览器的应用程序推荐使用URL-basedscript。

(3)如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-basedscript方式录制。

(4)基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-basedscript方式录制。

5.2.4 查看日志

在录制和回放的时候,VU会分别把发生的事件记录成日志文件,这些日志有利于我们跟踪VU和服务器的交互过程。

我们可以通过VU输出窗口观察日志,也可以到脚本目录中直接查看文件。

其中有三个主要的日志对我们的录制很有用:

1.执行日志(ExecutionLog)

脚本运行时的输出都记在这个Log里。

“输出”窗口的“执行日志”显示的消息用于描述Vuser运行时执行的操作。

该信息可说明在方案中执行脚本时,该脚本的运行方式。

脚本执行完成后,可以检查“执行日志”中的消息,以查看脚本在运行时是否发生错误。

“执行日志”中使用了不同颜色的文本。

 黑色:

标准输出消息。

 红色:

标准错误消息。

 绿色:

用引号括起来的文字字符串(例如URL)。

 蓝色:

事务信息(开始、结束、状态和持续时间)。

如果双击以操作名开始的行,光标将会跳到生成的脚本中的相应步骤上。

图5-5显示了WebVuser脚本运行时的“执行日志”消息。

执行日志是我们调试脚本时最有用的信息。

有关设置执行日志级别调试脚本的技巧,在本章“高级——脚本调试技巧”一节中有详细介绍。

2.录制日志(RecordingLog)

当录制脚本时,Vugen会拦截Client端(浏览器)与Server端(服务器)之间的对话,并且通通记录下来,产生脚本。

在Vugen的RecordingLog中,我们可以找到浏览器与服务器之间所有的对话,包含通信内容、日期、时间、浏览器的请求、服务器的响应内容等,如图5-6所示。

脚本和RecordingLog最大的差别在于,脚本只记录了Client端要对Server端所说的话,而RecordingLog则是完整记录二者的对话。

因此通过录制日志,我们能够更加清楚地看到客户端与服务器的交互,这对我们开发和debug脚本非常有帮助。

图5-5 VU脚本执行日志

图5-6 VU脚本录制日志

3.产生日志(GenerationLog)

产生日志记录了脚本录制的设置、网络事件到脚本函数的转化过程。

提示:

这里同样需要注意的是:

脚本能正常运行后应禁用日志。

因为产生及写入日志需占用一定资源。

5.3 回放脚本

如何显示每一个操作界面?

  单击run按钮,或按快捷键“F5”就可以运行脚本。

VU脚本运行工具条如图5-7所示。

  

  在LoadRunner9.5中提供了编译功能,快捷键为“Shift+F5”,这样脚本本身的语法检查等简单工作可以在编译中来做,省却了每次都要运行脚本的麻烦。

  VU提供运行时查看浏览器活动的功能。

这对于我们调试脚本是非常有帮助的,可以方便我们直观地查看运行状态。

这有些类似QTP和WinRunner的功能,需要修改设置来开启这个功能。

  设置方法如下:

在VU菜单“Tools”>“GeneralOptions”>“Display”选项卡中,勾选“Showbrowserduringreplay”项,如图5-8所示。

需要注意的是,运行时开启的Run-TimeViewer是LoadRunner自带的HTML解释器,并不是完全的IE,因此有些JavaScript和Applet可能会不能正常显示。

VU运行时查看器如图5-9所示。

  

  

  图5-8 VU开启运行时查看器

  

  图5-9 VU运行时查看器

  5.4 关联

  当刚刚录制好的脚本回放不能成功时,你首先想到第一个可能出现的问题就是关联。

  关联是LoadRunner中一个重要的应用,也是初学者经常犯错误的地方。

在前面我们已经大概介绍了关联的原理,在本节则学习LoadRunnerr怎么做关联。

  如果脚本需要关联(Correlation),在还没做之前是不会执行通过的,也就是说,会有错误信息发生。

不过,很遗憾,并没有任何特定的错误信息是和关联(Correlation)有关系的。

会出现什么错误信息,与系统实际的错误处理机制有关。

错误信息有可能会提醒您要重新登入,但是也有可能直接就显示HTTP404的错误信息。

这种问题在任何系统中都是非常常见的问题。

在前面的章节我们已经了解了关联产生的背景和原理,其通用的解决模式是:

“服务器返回给客户端一些动态变化的值,客户端使用这些值去访问服务器的时候,不能把这些值写死(hard-code)在脚本里面,而应该存放在一个变量里面。

”这就是关联的概念。

关联的工作往往占据开发脚本的大部分时间,因为我们必须针对每一个具体的系统进行细致的分析,确定其需要关联的动态信息。

而幸运的是,VU为我们提供了三种关联机制。

关联的方法有三种:

  5.4.1 录制前Correlation(关联)

  我们在前面章节的有关关联原理中谈到,服务器就像一个饭店,而客户端就像一个拿着小票领饭的食客。

如果我们在进饭店之前,已经预先知道小票的样子,那么这时我们就可以启用录制前关联了。

录制前关联的原理是,我们在录制前建立关联的规则(提前告诉VU小票是什么样子),录制时VU按照这些规则寻找并建立关联(获得小票)。

因此在VU中,录制前关联又叫做规则关联(RuleCorrelation)。

可见,使用录制前关联的必要条件是我们必须在录制脚本之前就知道哪些变量是需要关联的。

Vugen内建自动关联引擎(auto-correlationengine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。

在录制过程中Vugen会根据制定的规则,实时自动找出要关联的值。

  1.规则的建立

  关联的规则主要是指定两个边界,被关联变量的左边界和右边界,当VU在Server的Respsonse中找到符合条件的字符串时,它就意识到这是一张“小票”,赶紧把它保存下来,作为参数。

  规则来源有两种:

  

(1)内建关联规则(Built-inCorrelation)

  Vugen已经针对常用的一些应用系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等内建关联规则,这些应用系统可能会有一种以上的关联规则。

您可以在“RecordingOptions”>“HTTPProperties”>“Correlation”中启用关联规则(见图5-10),则当录制这些应用系统的脚本时,Vugen会在脚本中自动建立关联。

 图5-10 VU内建关联规则

  

  2)使用者自订关联规则(User-definedRulesCorrelation)

  除了内建的关联规则之外,使用者也可以自订关联规则。

您可以在“RecordingOptions”>“HTTPProperties”>“Correlation”中建立新的关联规则(见图5-11)。

  图5-11 VU创建一个新的关联规则

  

  图5-11所示是创建新规则的页面,在创建新规则时,需要设置关联变量的左边界、右边界等信息。

  2.规则的应用

  依照以下步骤使用RuleCorrelation:

  

(1)启用自动关联(auto-correlation)

  点选Vugen的“Tools”>“RecordingOptions”,打开“RecordingOptions”对话框,选取“HTTPProperties”>“Correlation”,勾选“Enablecorrelationduringrecording”,以启用自动关联。

假如录制的应用系统属于内建关联规则的系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,请勾选相对应的应用系统;或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。

  

(2)运行脚本验证关联机制

  当关联规则都运行开始录制脚本时,在录制过程中,当Vugen侦测到符合关联规则的数据时,会依照设定建立关联,您会在脚本中看到类似以下的脚本,如图5-12所示。

  图5-12 先建立关联规则,然后录制脚

  

  执行链接的脚本是OK的。

  5.4.2 录制后关联

  当录制的应用系统不属于Vugen预设支持的应用系统时,也就是VU在录制之前并不知道服务器小票的样子,这时规则关联(RuleCorrelation)就无能为力了,但不要紧,VU还提供了一招,叫做录制后关联。

  录制后关联:

有别于内建关联,录制后关联则是在执行脚本后才会建立关联,也就是说,当录制完脚本后,脚本至少需被执行过一次,录制后关联才会作用。

录制后关联会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。

  拿食客问题来解释录制后关联,就是食客第一次去某饭店吃饭时,他并不知道这个饭店的小票是什么版式,也不知道饭店给他一张写着“97”号的纸条是什么意思,不过不要紧,一回生,二回熟,第二次他去饭店,发现饭店又给他一张“108“号的纸条,他这时就能推断出,每次他去饭店这个号码都会变的,这应该就是饭店的小票。

因此使用录制后关联必须要让脚本运行第二次,步骤如下:

  录制脚本并回放,回放完毕后,Vugen会跳出下面的“ScanActionforCorrelation”窗口,询问您是否要扫描脚本并建立关联,单击“Yes”按钮,如图5-13所示。

  

  图5-13 录制后关联提示页面

  扫描完后,可以在脚本下方的“CorrelationResults”中看到扫描的结果,如图5-14所示。

  

  图5-14 VU的关联结果信息

  注意:

检查一下扫描的结果,选择要做关联的数据,然后单击“Correlate”按钮,一笔一笔做,或者单击“CorrelateAll”按钮,让Vugen一次就对所有的数据建立关联。

  由于录制后关联会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用“CorrelateAll”。

  要手动启动“ScanActionforCorrelation”功能,请先执行脚本一次后,点选“Vuser”>“ScanActionforCorrelations”,如图5-15所示。

  

  图5-15 VU选择运行扫描关联

执行完脚本后并未出现“ScanActionforCorrelation”窗口,要启用“ScanActionforCorrelation”功能,请点选“Tools”>“GeneralOptions”>“Correlation”选项卡,勾选“ShowScanforcorrelationpopupafterreplayofVuser”选项,如图5-16所示。

  

一般来说,我们必须一直重复上面的步骤,直到所有需要做关联的数据都找出来为止。

因为有时前面的关联还没做好之前,将无法执行到后面需要做关联的部分。

      有可能有些需要做关联的动态数据,连自动关联都无法侦测出来,这时您就需要自行做手动关联了。

      5.4.3 手动关联

      录制前关联和录制后关联应该都属于自动关联范畴,一般地,靠自动关联能够解决脚本中大多数的关联问题,但是万一它们都不能起到作用的话,那我们只能采用手动关联方法了。

手动关联的原理和自动关联一样,就是要找出哪些变量是需要关联的,然后用LoadRunner提供的web_reg_save_param来实现关联。

      手动关联的执行过程大致如下:

      

(1)使用相同的业务流程与数据,录制两份脚本。

      一定要保证两次录制的步骤和输入都完全一样,因为理论上,如果两次客户端的请求完全一样,服务器的返回结果就应该是一样的。

但是由于小票情形的存在,我们就可以大致推断两次服务器返回结果的不一致处极有可能就是需要关联的变量。

最常见的就是JavaWeb应用的jsessionid等数据。

      

(2)使用WinDiff工具协助找出需要关联的数据。

      WinDiff是内嵌在VU中的一个文件比较工具,用于比较两个文件的内容。

我们在这里用它来比较两个脚本的不同之处,从而找到需要被关联的数据。

对了,刚才说到被关联的数据本来是服务器返回的,我们为什么要比较脚本呢?

因为服务器的小票最终是要被客户端再次使用的,只要客户端一使用小票,那么就会被WinDiff发现。

我们可以在“Tools”菜单下选择“ComparewithVuser”选项,如图5-17所示。

      

      图5-17 在VU的Tools菜单中选择“ComparewithVuser”选项

      弹出如图5-18所示的对话框。

      WinDiff要比较的是两个脚本,那么当前脚本就是第一个脚本,而在上面的浏览对话框里,我们选择的是第二个脚本路径。

      (3)确定被关联数据的左、右边界。

      

      图5-18 选择要比较的另外一个脚本

      注意要确定关联数据的左、右边界,必须打开扩展日志。

      在如图5-19所示的对话框中,在“Logoptions”中选中“Extendedlog”,然后至少要勾选“Datareturnedbyserver”一项。

      这时再回放脚本,回放日志里记录的就是一个完整的客户端到服务器的交互内容,在回放日志里查找此关联数据,注意Responsebody字样的数据段,这标明它后面的内容是从Server返回的。

      

      (4)使用web_reg_save_param函数手动建立关联。

      (5)将脚本中有用到关联的数据,以参数取代。

      关于整个手动关联的详细过程,有兴趣的朋友可以在互联网上google之,在此不再占用篇幅赘述。

      提示:

关于web_reg_save_param函数

      对于关联(Correlation)来说,web_reg_save_param是最重要的一个函数,其功能是在下载的网页内容中,通过设定的边界字符串,找出特定的数据并将其储存在一个参数中,以供后续脚本使用。

      接下来将针对web_reg_save_param做比较详细的说明。

      web_reg_save_param是一个Servicefunction。

Servicefunction主要用来完成一些特殊的工作,如关联、设定Proxy、提供认证信息等,当其作用时,不会对网页的内容做任何的修改。

      web_reg_save_param同时也是一个registrationtypefunction(注册型函数)(只要函数名称中包含“_reg_”字眼,就表示其为registrationtypefunction)。

registrationtypefunction意味着其真正作用的时机是在下一个Actionfunction完成时执行的。

举例来说,当某个web_url执行时所接收到的网页内容中包含了要做关联的动态数据,则必须将web_reg_save_param放在此web_url之前,web_reg_save_param会在web_url执行完毕后,也就是网页内容都下载完后,再执行web_reg_save_param找寻要做关联的动态数据并建立参数。

我们会在“检查点”一节中介绍另外一个很有用的注册类型函数:

web_reg_find。

所以要记住一点,使用registrationtypefunction时,要注意其放置的位置必须在要作用的Actionfunction之前。

      关于web_reg_save_param函数手册和使用方法可参看LoadRunner手册。

      提示:

Loadrunner9.5中的快照(snapshot)功能得到进一步的增强,通过snapshot可以更加直观地查看客户端的请求,服务器的回应数据,也更加方便了关联功能。

      综上所述,关联的用途和意义如下:

      

(1)简化和优化脚本代码

      比如,需要执行一系列有关联的查询,以一个查询结果作为另外一个查询的条件,这样可能使脚本代码很长;如果通过嵌套循环的方法来实现,又会降低代码的可读性,难以理解。

因此关联就可解决这个问题。

      

(2)动态产生数据

      这常见于许多网站应用。

很多网站用当前系统时间戳来标志Session。

显然,先录制,后回放,原先生成的时间戳下次就不能用了,因此关联能够每次更新时间戳。

      (3)支持唯一数据

      有些系统要求使用唯一的数据。

录制时生成的数据,在回放时就重复了,无法保持唯一,也将不可用。

例如,假设你录制创建一个账户的过程,每个账户的ID都是唯一的,对于用户是不可见的。

这些账户ID被用作primarykey被插入数据库表中,这样的话,回放时就会失败。

使用关联就可以解决这个问题。

      手动关联实现的原理是:

      

(1)捕获第一个操作的输出

      这里首先知道哪个值是需要关联的。

可以用wdiff(LoadRunner自带)去对比两个录制同样操作的脚本,其中不同的地方可能就是需要关联的。

      

(2)保存为参数

      在上面的例子中,把查询结果保存成LoadRunner的一个变量。

不同的Vuser有不同的实现函数。

通常函数名中包含save_param,比如WebVuser中是web_reg_save_param、lrs_save_param等。

      (3)将参数传递到另外一个操作的输入

      即把另外一个操作中的常数,替换成参数变量。

  LoadRunner之所以强大,很大的原因是VU的功能强大。

作为虚拟用户的产生器,从横向上看,VU几乎支持模拟当今所有主流的软件客户端,同时还在不断地推陈出新;从纵向上看,每个Vuser脚本的设置也是非常繁多和详细的,达到了精确模拟的效果。

  因此,了解并熟悉VU是我们“玩转”LoadRunner要做的第一件事情。

  我们最常听到的关于VU的描述就是:

VU通过运行VU脚本模拟了用户对软件的操作行为。

    我们发现,完全可以把图灵试验应用到我们的VU模拟场景中:

  在软件系统运行时,一个真实的用户通过操作软件客户端来发起和服务器的会话请求,同时,一个VU开始运行它的脚本,也发起了同样的请求。

被测服务器在处理各个“交谈”请求并与之分别会话的时候,并不知道哪些请求是来自真实的用户,哪些是来自VU。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1