[原创]LR中 “simulate a new user on each iteration"设置项的作用

 背景: 

      在用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里为脚本设置了100VU,设置每个VU的迭代次数为20次,正确运行时应该在系统中生成2000条记录,但从controller里面看到,运行时这100VU都只运行了一次,最终生成的只有100条记录。该员工百思不得其解,然后就向我求助。

开始我以为该问题是由脚本错误引起的,但经过对脚本的调试,验证确实没有问题,而且,在VUG中回放该脚本,回放多次就能生成多条记录,看来脚本的correlation等应该没有问题。仔细检查Web Server日志,发现该日志中有多个访问“timeout.jsp”的访问记录,询问开发人员得知,在session超时时会访问这个页面。

HTTP协议本身是无状态的,因此为了保留住sessionid,一般的做法是用hidden fieldcookie或是在URL上附加sessionid来解决这个问题,查看LR记录的页面访问数据,可以看到,该应用是用cookie解决这个问题的:

接下来的问题就清楚了,猜想是在两次迭代之间LR清除了cookie,查看RuntimeSetting的设置,果然“simulate a new user on iteration”选项被选中。

取消该选项的选中,重新运行Controller中的Senario,结果正常。

///////////////////////////////////////////////////////

这个选项默认LR是勾选的。

posted on 2013-02-27 10:52  淘果果  阅读(644)  评论(0编辑  收藏  举报

导航