51Testing丛书连载:(十六)性能测试从零开始——LoadRunner入门

发表于:2008-8-07 17:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:柳胜    来源:51Testing软件测试网

分享:

       一般来说,我们必须一直重复上面的步骤,直到所有需要做关联的数据都找出来为止。因为有时前面的关联还没做好之前,将无法执行到后面需要做关联的部分。
       有可能有些需要做关联的动态数据,连自动关联都无法侦测出来,这时您就需要自行做手动关联了。
       5.4.3  手动关联
       录制前关联和录制后关联应该都属于自动关联范畴,一般地,靠自动关联能够解决脚本中大多数的关联问题,但是万一它们都不能起到作用的话,那我们只能采用手动关联方法了。手动关联的原理和自动关联一样,就是要找出哪些变量是需要关联的,然后用LoadRunner提供的web_reg_save_param来实现关联。
       手动关联的执行过程大致如下:
       (1)使用相同的业务流程与数据,录制两份脚本。

       一定要保证两次录制的步骤和输入都完全一样,因为理论上,如果两次客户端的请求完全一样,服务器的返回结果就应该是一样的。但是由于小票情形的存在,我们就可以大致推断两次服务器返回结果的不一致处极有可能就是需要关联的变量。最常见的就是Java Web应用的jsessionid等数据。

       (2)使用WinDiff工具协助找出需要关联的数据。
       WinDiff是内嵌在VU中的一个文件比较工具,用于比较两个文件的内容。我们在这里用它来比较两个脚本的不同之处,从而找到需要被关联的数据。对了,刚才说到被关联的数据本来是服务器返回的,我们为什么要比较脚本呢?因为服务器的小票最终是要被客户端再次使用的,只要客户端一使用小票,那么就会被WinDiff发现。
我们可以在“Tools”菜单下选择“Compare with Vuser”选项,如图5-17所示。

      

       图5-17  在VU的Tools菜单中选择“Compare with Vuser”选项
       弹出如图5-18所示的对话框。
       WinDiff要比较的是两个脚本,那么当前脚本就是第一个脚本,而在上面的浏览对话框里,我们选择的是第二个脚本路径。
       (3)确定被关联数据的左、右边界。
      

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

       注意要确定关联数据的左、右边界,必须打开扩展日志。
       在如图5-19所示的对话框中,在“Log options”中选中“Extended log”,然后至少要勾选“Data returned by server”一项。
       这时再回放脚本,回放日志里记录的就是一个完整的客户端到服务器的交互内容,在回放日志里查找此关联数据,注意Response body字样的数据段,这标明它后面的内容是从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是一个Service function。Service function主要用来完成一些特殊的工作,如关联、设定Proxy、提供认证信息等,当其作用时,不会对网页的内容做任何的修改。
       web_reg_save_param同时也是一个registration type function(注册型函数)(只要函数名称中包含“_reg_”字眼,就表示其为registration type function)。registration type function意味着其真正作用的时机是在下一个Action function完成时执行的。举例来说,当某个web_url执行时所接收到的网页内容中包含了要做关联的动态数据,则必须将web_reg_save_param放在此web_url之前,web_reg_save_param会在web_url执行完毕后,也就是网页内容都下载完后,再执行web_reg_save_param找寻要做关联的动态数据并建立参数。我们会在“检查点”一节中介绍另外一个很有用的注册类型函数:web_reg_find。
所以要记住一点,使用registration type function时,要注意其放置的位置必须在要作用的Action function之前。
       关于web_reg_save_param函数手册和使用方法可参看LoadRunner手册。


       提示: Loadrunner 8.0中的快照(snapshot)功能得到进一步的增强,通过snapshot可以更加直观地查看客户端的请求,服务器的回应数据,也更加方便了关联功能。
       综上所述,关联的用途和意义如下:
       (1)简化和优化脚本代码
       比如,需要执行一系列有关联的查询,以一个查询结果作为另外一个查询的条件,这样可能使脚本代码很长;如果通过嵌套循环的方法来实现,又会降低代码的可读性,难以理解。因此关联就可解决这个问题。
       (2)动态产生数据
       这常见于许多网站应用。很多网站用当前系统时间戳来标志Session。显然,先录制,后回放,原先生成的时间戳下次就不能用了,因此关联能够每次更新时间戳。
       (3)支持唯一数据
       有些系统要求使用唯一的数据。录制时生成的数据,在回放时就重复了,无法保持唯一,也将不可用。例如,假设你录制创建一个账户的过程,每个账户的ID都是唯一的,对于用户是不可见的。这些账户ID被用作primary key被插入数据库表中,这样的话,回放时就会失败。使用关联就可以解决这个问题。
       手动关联实现的原理是:
       (1)捕获第一个操作的输出
       这里首先知道哪个值是需要关联的。可以用wdiff(LoadRunner自带)去对比两个录制同样操作的脚本,其中不同的地方可能就是需要关联的。
       (2)保存为参数
       在上面的例子中,把查询结果保存成LoadRunner的一个变量。不同的Vuser有不同的实现函数。通常函数名中包含save_param,比如Web Vuser中是web_reg_save_param、lrs_save_param等。
       (3)将参数传递到另外一个操作的输入
       即把另外一个操作中的常数,替换成参数变量。

 

连载一  连载  连载三  连载四  连载五  连载六  连载  连载  连载九  连载十  连载十一  连载十二  连载十三  连载十四  连载十五

本文选自:《51Testing软件测试作品系列》之一的《性能测试从零开始——LoadRunner入门》 ,本站经电子工业出版社和作者的授权,近期将进行部分章节的连载,敬请期待!

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

22/2<12
100家互联网大公司java笔试题汇总,填问卷领取~

精彩评论

  • liangpeiye
    2008-8-10 20:46:49

    谢谢您的分享

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号