新人小鸟,11年毕业,正在测试路上摸索

学习loadrunner的一些问题(持续更新中)

上一篇 / 下一篇  2012-09-12 18:13:11 / 个人分类:工具

这段时间,由于用户要求,需要对系统的每个页面做一下简单的并发性能测试,找出运行慢的页面,让开发进行优化。
于是装了一把loadrunner,安装过程倒是没有遇到什么问题,比较顺利。
但是录制脚本是出现了第一个问题:不弹出IE浏览器。

1.LoadRunner录制脚本时不弹出IE浏览器

  查阅了很多资料,得知当一台主机上安装多个浏览器时,尤其是安装了火狐,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决。

  启动浏览器,打开Internet选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展(需要重启动)”的勾选,然后再次运行VuGen即可解决问题

但是这样并没有帮助我解决问题,我在运行VuGen的时候,直接弹出内存错误,该内存不能为written,如果在运行VuGen之前就打开了IE,那么运行时时能正常打开的,但是遇到第二个问题,下文再说。我猜想这是由于IE安装的问题,待重装试试。

        最近对于这个问题,看到一篇很详细的帖子,收录来以备不时之需

        http://bbs.51testing.com/viewthread.php?tid=919133

2.LoadRunner录制时event为0

再次查阅资料,有说要把INTERNET高级设置中的“启用第三方浏览器扩展*”前面的钩钩去掉,于是我按照这个做了。录制过程仍然没有event。

还有说在电脑属性-高级-性能-数据执行保护中添加LR安装目录下的vugen.exe,试一下,去重启。还是没有效果,

这时意识到可能我装的LR9.0不支持IE8,所以决定重装LR11.0试一试。重装时肯定会遇到怎么卸载的问题,这个在网上查阅了一下,就有好心人给出了很完整的答案

3.LoadRunner如何完全卸载

可参阅http://www.ltesting.net/html/83/n-140583.html

卸载成功后,重装,也很顺利,但是破解时出现了一些问题。

4.LoadRunner重装时license注册不成功,License security violation……

我已经做了如下几个步骤:

1、用LR8.0中的mlr5lprg.dll、lm70.dll覆盖LR9.1(9.5)安装目录下“bin”文件夹中的对应文件;


     2、手动修改注册表,删除下面内容:

[HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2]

[HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\History]
"AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\PermanentLicense]
@="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"
"last"="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"

[HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\TemporaryLicense]@="AEBGEBFS-AKEKEKEKE-KAUCA"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{87B3ADD4-21EB-11d5-93EF-00105AA0FD2D}]
@="IControl"

但是在添加licence时还是报错:“License security violation……”

辛辛苦苦找啊找,最后找到一个帖子,实在是帮了大忙,见
http://bbs.51testing.com/thread-84208-1-1.html
赞一个!

4.错误Error -27979: Requested form. not found

在现场测试,拿来公司跑过的lr脚本,在现场修改了环境地址,回访时报错Error -27979: Requested form. not found。

经过检查,原因是,在公司录制完成后,脚本中修改登录的函数为:

web_submit_form("login", 

"Snapshot=t2.inf", 

ITEMDATA, 

"Name=loginName", "Value={customer_no}", ENDITEM, 

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

LAST);

而拿到现场直接运行的话,由于cache中没有录制时的数据,所以找不到表单了,于是又录制一遍,将该函数修改为:

web_submit_data("login", 

  "Action=http://{par_domain}/login", 

  "Method=POST", 

  "RecContentType=text/html", 

  "Referer=http://{par_domain}/login", 

  "Snapshot=t3.inf", 

  "Mode=HTML", 

  ITEMDATA, 

  "Name=loginType", "Value=", ENDITEM, 

  "Name=genre", "Value=2", ENDITEM, 

  "Name=loginName", "Value={stfcode}", ENDITEM, 

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

           "Name=resCode", "Value=bizSign", ENDITEM, 

  "Name=opCode", "Value=bizSignIn2", ENDITEM, 

  LAST);

再次回放,成功。

其实这个问题解决方法很简单,但是从中获知了一种检验脚本错误的方法,就是重新录制一遍,对比原来的脚本检查,将不同的地方一一注释,先找到错误源,再去研究为什么是这样。
Web_submit_form只提供了和Cache中有差别的数据,其余的数据会自动从Cache中取。而Web_submit_data则提供了所有的数据,不管Cache存在不存在Web_submit_data都是可以工作的。

从公司内部哪来的脚本直接用来现场回放,可能会出现找不到表单的错误。

在这里,顺便研究一下web_submit_form. 和web_submit_data的原理


对于html_based方式和url_based方式,以下文章给与了详细解释:

http://www.blogjava.net/qileilove/archive/2012/05/15/378177.html

下面是自己的理解:
集合点:
顾名思义,需要将并发用户集合起来做某件事情的时候使用。
使用集合点可以控制在某一时间同时向服务器发送请求,这样是更纯粹的压力测试,不过在这之前要将并发用户数计算好。
举个例子:进入理发店,可能一天之中有100个人回去理发店,其中有人在烫头发,有人在洗头,有人在美甲,也有人正在来的路上。而若设置了集合点,100个人会先在理发店门口集合,集齐100人后同时踏进理发店,这时候是真正测试理发店性能的时候,看能否在客户不满意离开(线程超时)之前处理客户的需求。
集合点使用就是在脚本中,需要集合的动作前加 lr_rendezvous("together"); 当然,集合点要集合多少VUSER,以及超时时间等策略,都可以在controller中设置(Scenario-Rendezvous-policy);

关联:
我的理解就是获取请求返回值里面的变量,将其作为参数,以便每一次发请求的时候能够以参数形式传递不同的值。也就是动态保存数据。
因为录制的脚本中,请求中往往会带有参数,需要替换参数是常事儿。烦就烦在,由于系统业务的不同,每次发请求不能总传同一个参数值,这时候一般会想到从数据库或文件取值,但是有些参数是无法预料的,比如说服务器分配的sessionId,但是这个sessionId会在请求返回的HTML代码中出现,所以就要从返回值中通过左边界和右边界抠取出sessionId,然后存入一个变量,请求中传入变量即可。sessionId是LR教材中最常举的一个例子,当然,若理解了关联的实质用途,在很多地方都能用关联,可以传参数,也可以用作结果校验。
脚本中关联的写法就如下:
web_reg_save_param("str_returnmsg",
"LB=errorInfo : ",
"RB=}",
"Ord=1",
"Notfound=warning",
   LAST );

6.Controller中设置了用户并发数量,但是运行时为何初始化的用户数量少于实际数量?
主要是设置问题。在Tools→options→Run-time setting中可以设置每次最多初始化的虚拟用户。如果需要100个并发用户,则将该值设置为大于100的数值。另外,注意LoadRunner相关协议License的更新,确保使用的License能够允许所需要的并发用户数量。

7.测试结果中,Summary和平均事务响应时间图里的各个事务的最大值、平均值、最小值为什么显示不一样?
  主要是受采样时间的影响。Summary里的事务平均响应时间是根据整个场景执行过程得到的数据计算所得,最大值与最小值也是从整个场景中得到的。平均事务响应时间图主要时按照LoadRunner分析出来的采样频率来获取事务响应时间的最大值与最小值,然后计算平均值。
  可以通过在图上点击右键,选择"Set Granularity"来修改平均事务响应时间图的采样频率。如果把"Granularity"设为场景执行时间,则统计结果将会一致。


TAG:

xiaoshi_2011的个人空间 引用 删除 xiaoshi_2011   /   2013-03-18 15:08:21
5
 

评分:0

我来说两句

Open Toolbar