[原创]LR中 “simulate a new user on each iteration"设置项的作用
2013-02-27 10:52
633 查看
背景:
在用LR工具测试过程中,测试程序是JAVA,数据库是开源的MYSQL,脚本录制回放成功,里面调用了开发人员开放的2个接口,用来提交数据到数据库。
实际操作过程中,每次从controller中运行完成,从后来数据库中查看数据,总和预期数据量少,开始以为是参数设置的问题,问了好几个人,还有好心人给我关于LR参数的例子,让我花几个小时熟悉,但折腾来,还是一样的问题,根本就不知道是哪里的问题。
后来终于在网上搜到了LR中 “simulate a new user on each iteration"设置项的作用
很管用。原文转过来,谢谢原作者分享。
///////////////////////////////////////////////////////
“Simulate a new user on each iteration”(每次迭代都模拟一个新的用户)是LR的一个缺省设置项,曾经有人问过我该设置项的具体含义,当时按照LR手册上的说法描述了一下,但其实对这个选项带来的副作用并不十分明确。
正好昨天部门的一个员工在用LR进行选型的性能测试时遇到问题,经过分析,问题的产生就和这个选项有关。
昨天该员工在用LR对一个J2EE应用进行测试时,脚本录制修改和Play back都已经成功,但在controller里为脚本设置了100个VU,设置每个VU的迭代次数为20次,正确运行时应该在系统中生成2000条记录,但从controller里面看到,运行时这100个VU都只运行了一次,最终生成的只有100条记录。该员工百思不得其解,然后就向我求助。
开始我以为该问题是由脚本错误引起的,但经过对脚本的调试,验证确实没有问题,而且,在VUG中回放该脚本,回放多次就能生成多条记录,看来脚本的correlation等应该没有问题。仔细检查Web Server的日志,发现该日志中有多个访问“timeout.jsp”的访问记录,询问开发人员得知,在session超时时会访问这个页面。
HTTP协议本身是无状态的,因此为了保留住sessionid,一般的做法是用hidden field、cookie或是在URL上附加sessionid来解决这个问题,查看LR记录的页面访问数据,可以看到,该应用是用cookie解决这个问题的:
接下来的问题就清楚了,猜想是在两次迭代之间LR清除了cookie,查看RuntimeSetting的设置,果然“simulate a new user on iteration”选项被选中。
取消该选项的选中,重新运行Controller中的Senario,结果正常。
///////////////////////////////////////////////////////
这个选项默认LR是勾选的。
在用LR工具测试过程中,测试程序是JAVA,数据库是开源的MYSQL,脚本录制回放成功,里面调用了开发人员开放的2个接口,用来提交数据到数据库。
实际操作过程中,每次从controller中运行完成,从后来数据库中查看数据,总和预期数据量少,开始以为是参数设置的问题,问了好几个人,还有好心人给我关于LR参数的例子,让我花几个小时熟悉,但折腾来,还是一样的问题,根本就不知道是哪里的问题。
后来终于在网上搜到了LR中 “simulate a new user on each iteration"设置项的作用
很管用。原文转过来,谢谢原作者分享。
///////////////////////////////////////////////////////
“Simulate a new user on each iteration”(每次迭代都模拟一个新的用户)是LR的一个缺省设置项,曾经有人问过我该设置项的具体含义,当时按照LR手册上的说法描述了一下,但其实对这个选项带来的副作用并不十分明确。
正好昨天部门的一个员工在用LR进行选型的性能测试时遇到问题,经过分析,问题的产生就和这个选项有关。
昨天该员工在用LR对一个J2EE应用进行测试时,脚本录制修改和Play back都已经成功,但在controller里为脚本设置了100个VU,设置每个VU的迭代次数为20次,正确运行时应该在系统中生成2000条记录,但从controller里面看到,运行时这100个VU都只运行了一次,最终生成的只有100条记录。该员工百思不得其解,然后就向我求助。
开始我以为该问题是由脚本错误引起的,但经过对脚本的调试,验证确实没有问题,而且,在VUG中回放该脚本,回放多次就能生成多条记录,看来脚本的correlation等应该没有问题。仔细检查Web Server的日志,发现该日志中有多个访问“timeout.jsp”的访问记录,询问开发人员得知,在session超时时会访问这个页面。
HTTP协议本身是无状态的,因此为了保留住sessionid,一般的做法是用hidden field、cookie或是在URL上附加sessionid来解决这个问题,查看LR记录的页面访问数据,可以看到,该应用是用cookie解决这个问题的:
接下来的问题就清楚了,猜想是在两次迭代之间LR清除了cookie,查看RuntimeSetting的设置,果然“simulate a new user on iteration”选项被选中。
取消该选项的选中,重新运行Controller中的Senario,结果正常。
///////////////////////////////////////////////////////
这个选项默认LR是勾选的。
相关文章推荐
- 转:Loadrunner——Simulate a new user on each iteration设置
- Warning -27077: The "vuser_init" section contains web function(s) when the "Simulate a new user on each iteration" Run-Time Setting is ON.
- LR中的参数设置和场景虚拟用户的关联(Random + each iteration|each occurrence|once)
- LR中的参数设置和场景虚拟用户的关联(Unique + each iteration | each occurence | once)
- LR中的参数设置和场景虚拟用户的关联(Unique+each iteration)
- OnPaletteChanged(CWnd* pFocusWnd) 和OnQueryNewPalette() 的作用
- web_add_auto_header("x-requested-with", "XMLHttpRequest "); 在LR中的作用
- LR中select next row和update value on的设置
- lr的参数设置(原创)
- ccah-500 第32题 a new user on the cluster can submit jobs into their own queue application submission
- caffe中设置学习率策略 lr_policy: "step"
- 在gridview里对日期字段设置dataformatstring="{0:yyyy-MM-dd}"没有任何作用的解决方法
- 通过LogonUser API,先切换登入账户,再设置文件的ACL
- struts: errors.add("username",new ActionMessage("myerror.error")); 问题
- exchange2013-"Database is mandatory on UserMailbox.".
- Create new user on MYSQL
- 跳转activity设置为launchMode="singleTask"时,主activity不执行onActivityResult
- Apache 选择"only for the Current User, on 8080, when started Manually"时的服务启动方法及如何修改端口号
- 【转】Java编码转换问题,new String(str.getByts("ISO8859-1"), "GBK")的作用
- 编译问题:user tag detected on new module