• 1. LoadRunner 中级教程0
  • 2. 检查点 参数化 集合点(Rendezvous) 关联(Correlation) Run-Time Settings设置1
  • 3. 一、检查点  在进行压力测试时,为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text/Imag 检查点,这些检查点验证网页上是否存在指定的Text 或者Imag,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。以下是插入检查点的步骤及检查点在脚本中的函数表示。12342
  • 4. 二、参数化-脚本参数化概述  如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。参数化输入是一种不错的方法。 用参数表示用户的脚本有两个优点: 可以使脚本的长度变短 可以使用不同的数值来测试脚本 参数化包含以下两项任务: 在脚本中用参数取代常量值 设置参数的属性以及数据源 3
  • 5. 二、参数化-参数化过程 此例中将参数化高亮显示的值9971239,在参数名中输入Spec_id,参数类型选择File, 点击Properties进入参数属性页面设置参数所在文件的文件名及路径。 Replace with a parameterProperties4
  • 6. 二、参数化-连接数据库  Next通过连接数据库获得参数数据: 1 从数据表中选择用户名。点 “Data Wizard”按钮。 2 选择第2 项(Specify SQL statement manually),下一步。 3 添入连接字符串和SQL 语句 后,点Finish 按钮,出现 查询结果。Date WizardSelect next row 的几种选择: Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取。 Random:在每次循环里随机的读取一个,但是在循环中一直保持不变。 Unique :唯一的数。 注意:使用该类型必须注意数据表有足够多的数。比如Controller中设定20个虚拟用户进行5次循环,那么编号为1 的虚拟用户取前5个数,编号为2的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据否则Controller 运行过程中会返回一个错误。 Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。通常用在有关联性的数据上面。 5
  • 7. 三、集合点(Rendezvous)集合点概念:    集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达到测试计划中的需求。 注意:集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。 插入集合点方法: 1 在需要插入集合点的前面,选 择菜单Insert->Rendezvous。 2 在弹出的Rendzvous对话框中, 输入要插入的集合点的名称, 点击OK后,集合点插入完毕。 集合点在脚本中的代码: lr_rendezvous(“名称”) 6
  • 8. 三、集合点-Controller中设置集合点策略 如果在脚本中设置了集合点,还需要在Controller 中设置集合点策略,从菜单中调出集合点策略设置窗口,根据需求设置集合点策略。Policy7
  • 9. 四、关联(correlation) 哪些错误代表着应该做关联?   假如脚本需要关联在还没做之前是不会执行通过的,也就是说会有错误讯息发生;或者是即使脚本通过了,实际上所要进行的功能操作没有实现。不过,很不幸地,并没有任何特定的错误讯息是和关联有关系的。会出现什么错误讯息,与系统实做的错误处理机制有关。关联概念:    关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。如何找出要关联数据 简单的说,每一次执行时都会变动的值,就有可能需要做关联。 VuGen提供二种方式帮助您找出需要做关联的值:   自动关联   手动关联 8
  • 10. 四、关联(correlation)-自动关联自动关联提供的二种机制: Rules Correlation:在录制过程中VuGen会根据订定的规则,实时自动找出要关联的值。 规则来源有两种:  1 内建(Built-in Correlation): VuGen已经针对常用的一些应用系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySA P、NetD ynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,内建关联规则,这些应用系统可能会有一种以上的关联 规则。可以在Tools->Recording Options->Internet Protocol->Correlation中启用关联规则,则当录制这些应用系 统的脚本时,VuGen会在脚本中自动建立关联。 2 使用者自订(User-defined Rules Correlation): 除了内建的关联规则之外,使用者也可以自订关联规则。可以在Tools->Recording Options->Inter net Protoc ol->Correlation建立新的关联规则。 Correlation Studio:有别于Rules Correlation,Correlation Studio则是在执行脚本后才会建   立关联,也就是说当录制完脚本后,脚本至少须被执行过一次,Correlation Studio才会作用。Co   rrelation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的   数据,并建立关联。 VuGen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并且自动使用关联函数建立关联 9
  • 11. 四、关联(correlation)- Rule Correlation使用Rule Correlation的步骤: 1. 启用auto-correlation 点选VuGen的Tools->Recording Options->Internet Protocol>Correlation,勾选Enable correlation during reco rding,以启用自动关联。 假如录制的应用系统属于内建关联规则的系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,请勾选相对应的应用系统。 或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。 设定当VuGen侦测到符合关联规则的数据时,要如何处理: Issue a pop-up message and let me decide online:跳出一个讯息对话窗口,询问您是否要建立关联。 Perform correlation in sceipt:直接自动建立关联 2. 录制脚本 开始录制脚本,在录制过程中,当VuGen侦测到符合关联规则的数据时,会依照设定建立关联.。10
  • 12. 四、关联(correlation)- Correlation Studio   当录制的应用系统不属于VuGen预设支持的应用系统时,Rule Correlation可能既无法发挥作用,这时 可以利用Correlation Studio来做关联。Correlation Studio会尝试找出录制时与执行时,服务器响应内 容的差异部分,藉以找出需要关联的数据,并建立关联 。使用Correlation Studio的步骤: 录制脚本并执行,执行完毕后,VuGen会跳出下面的Scan Action   for Correlation窗口,询问您是否要扫描脚本并建立关联,按下 Yes按钮。 扫描完后,可以在脚本下方的Correlation Results中看到扫描 的结果。 检查一下扫瞄的结果后,选择要做关联的数据,然后按下Correl ate按钮,一笔一笔做,或是按下Correlate All让VuGen一次就 对所有的数据建立关联。 注意:由于Correlation Studio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用Correlate All。 11
  • 13. 四、关联(correlation)- 手动关联 1 有可能有些需要做关联的动态数据,连Correlation Studio都无法侦测出来,这时您就需要自行做手动关了 。手动关联的执行过程大致如下: 使用相同的业务流程与数据,录制二份脚本 使用WinDiff工具协助找出需要关联的数据 使用web_reg_save_param函数手动建立关联 将脚本中有用到关联的数据,以参数取代 1. 使用相同的业务流程与数据,录制二份脚本 先录制一份脚本并存档。 依照相同的操作步骤与数据录制第二份脚本并存盘。注意,所有的步骤和输入的数据一定都要一样,这样才能找出由服务器端产生的动态数据。 有时候会遇到真的无法使用相同的输入数据,那也要记住使用的输入数据,到时才能判断是输入的数据,还是变动的数据。12
  • 14. 四、关联(correlation)- 手动关联 22.使用WinDiff工具协助找出需要关联的数据 在第二份脚本中,点选VuGen的Tools->Compare with Vuser…,并选择第一份脚本。 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选Options>View>Show Inline Differences)。 逐一检视二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。选取差异的脚本,然后复制。 在复制时,有时并不需要取整行脚本,可能只会选取脚本中的一部分。 注意:请忽略lr_thik_time的差异部份,因为lr_thik_time是用来模拟每个步骤之间使用者思考延迟的时间。 接着要在Recording Log(单一protocol)或是Generation Log(多重protocol)中找这个值。将鼠标光标点到Generation Log的第一行开头,按下Ctrl+F,开启Find窗口,贴上刚刚复制的脚本,找出在Generation Log第一次出现的位置。 13
  • 15. 四、关联(correlation)- 手动关联 3   在找到是由服务器所产生的动态数据之后,接下来要做的就是找出适当的位置,使用web_reg_save_param函数,将 这个动态数据撷取到某个参数中。 要在哪里使用web_reg_save_param函数? 在之前的步骤,我们已经在Execution Log找到可能需要关联的动态数据。在Execution Log中选取动态数据前的文字然后复制。     不过在这之前我们要先找出使用web_reg_save_param函数的正确位置,所以我们要再重新执行一遍脚本,而且这次要开启所有的Log。 在VuGen中点选Vuser->Run-Time Settings。 点选General->Log。 勾选Enable logging、Always sends messages、Extended log,以及Extended log下的所有选项。 按下OK就可以执行脚本了。    执行完脚本之后,在Execution Log中搜寻刚刚复制的字符串。找到字符串后,在字符串前面会有Action.c(135),这个135就是到时候要插入web_reg_save_param函数的位置,也就是要插入到脚本的第135行。在脚本的第135行前插入一行空白行,然后输入web_reg_save_param(“attachment_number”, “attachment_number” 就是到时要使用的参数名称。 注意:到这里整个web_reg_save_param函数还没完成。 3.使用web_reg_save_param函数手动建立关联 14
  • 16. 四、关联(correlation)- 手动关联 3 找出web_reg_save_param中要用到的边界 web_reg_save_param函数主要是透过动态数据的前面和后面的固定字符串,来辨识要撷取的动态数据的,所以我们还需要找出动态数据的边界字符串。 找出左边界字符串   1 回到Generation Log中,选取动态数据前的字符串并且复制它。建议尽量不要包含到特殊字符。   2 在这里我们选取[11563658;value:]字符串。选好之后,还要再确认一次这段字符串真的是可以唯一识别的,所      以我们在Generation Log中透过Ctrl+F的搜寻,找找看这段字符串是否可以找到要找的动态数据。假如找不      到,web_reg_save_param函数还有个ORD参数可以使用,ORD参数可以设定出现在第几次的字符串才是要找的字      符串。   3 将这个边界字符串加到未完成的web_reg_save_param函数中:web_reg_save_param(“attachment_number”, “LB=11563658;value:”, 找出右边界字符串    接下来要找出动态数据的右边界字符串,这个字符串就比较好找了,从动态数据的最后一个字符开始,通常就是我们要找的右边界字符串了。    以这个例子来看,就是「;sRel:211」,所以再把右边界字符串加入,web_reg_save_param函数中,这时web_reg_save_param函数已经快完成了。最后再加上「LAST);」就完成整个web_reg_save_param函数了。    web_reg_save_param(“attachment_number”, “LB=11563658;value:”,“RB=;sRel:211”, LAST); 3.使用web_reg_save_param函数手动建立关联15
  • 17. 四、关联(correlation)- 手动关联 3 将脚本中有用到关联的数据,以参数取代 当使用web_reg_save_param建立参数后,接下来就是用“attachment_number”参数去取代脚本中写死的(hard-coded)代码。3.使用web_reg_save_param函数手动建立关联 到这里已经完成了一个关联了,接下来就是执行脚本,是否能成功运行,假如还是有问题,就要检查看看是否还需要再做另一个关联。16
  • 18. 五、Run-Time Settings设置   当完善了测试脚本后,需要对VuGen 的Run-Time Setting 进行配置首先打开Run-Time Setting 窗 口,可以通过菜单或者工具栏进行。17
  • 19. 五、Run-Time Settings设置 General: Miscellaneous页面设置18
  • 20. 五、Run-Time Settings设置 Network: Speed Simulation页面设置19
  • 21. 五、Run-Time Settings设置 Internet Protocol: Preferences页面设置20
  • 22. 五、Run-Time Settings设置 General: Think Time页面设置21
  • 23. 五、Run-Time Settings设置 General: Log页面设置注意:如果要用到关联,找出使用web_reg_save_param函数的正确位置,就要启用Extended log中的所有选项。22
  • 24. 谢 谢!23