sayusayme 发表于 2011-6-3 15:47:06

这样设置参数的更新方式为什么不行呢?

是这样的,系统有用户A,B,C,循环处理1-100个单据,把这100张单据处理完就OK了。
我希望负载运行时,系统的处理过程如下:
同一时刻:A-1,B-2,C-3,下一时刻:A-4,B-5,C-6
...

注:系统设有单点登录功能,即A用户某地登录,其他地方若A再登录就把刚才登录A的踢掉了。

我试过以下方法均失败了:
1.“选择下一行”值,将他们都选择 sequential,更新方法是 每次迭代,但结果是A-1执行完后再B-2,执行完后再C-3,我希望是并行,而不是这样一个接一个串行。所以这样不行。
3.ABC用户设为unique,单据ID设为sequential,失败。(系统内实际单据状态依旧)
4.ABC用户设为sequential,单据ID设为unique,但根据实际单据的处理时间来看,居然是这样处理的:同一时刻A-1,A-4,A-7,下一时刻:B-2,B-5,B-8,这和我的本意不符呢...

我希望处理过程是:同一时刻:A-1,B-2,C-3,下一时刻:A-4,B-5,C-6
...


请问,1.参数下一行的数据和更新方法应该怎么样设置呢
2.不能设置大于3个Vuser吗?

christixo 发表于 2011-6-3 16:13:23

ABC用户设为sequential,单据ID设为unique,
处理结果应该A-1,B-2,C-3,A-4,B-5,C-6
除非你的脚本录制有问题

christixo 发表于 2011-6-3 16:40:06

其实你这个不用controller,直接用Virtual User Generator就能实现,迭代100次

云层 发表于 2011-6-3 17:15:16

你可以使用unique设置成为a-1,2,3,4,5,6 b-7,8,9,10,11,12 c-13,14,15,16,17,18 也能实现你的要求

sayusayme 发表于 2011-6-7 17:32:37

christixo :你好
我的脚本肯定录制没有问题,不然系统中实际的单据不会处理成功的。
现在对于系统在同一时刻的处理方式:A-1,A-4,A-7,B-2,B-5,B-8.....我也很疑惑,因为程序中设置有单点登录功能,在同一时刻,A不可能同时登录的。
也许是我不清楚LR的虚拟用户究竟是怎么样处理的,比如我在进行负载测试中,填写3个虚拟用户,是3个A用户同时打开3个IE窗口吗?还是ABC三个用户同时打开三个IE呢?

云层 :你说的实现方式能否具体一点呢?

云层 发表于 2011-6-7 18:08:37

用unique然后每个用户化分一个数据段数量

msnshow 发表于 2011-6-8 13:58:18

LR不需要打开IE窗口,至于是否同时是相对的

sayusayme 发表于 2011-6-9 11:31:46

1.问题解决了,还是参数的设置不对的缘故,
对于用户ABC来说,如果设置为sequential,则所有的Vuser都会在第一次迭代时使用A,所有的Vuser都会在第二次迭代时使用B,,,,即在系统中就会出现在同一时刻的处理方式:A-1,A-4,A-7,B-2,B-5,B-8.....。但为啥没有相互踢出来呢,我也很疑惑。

2.想让系统处理结果为A-1,B-2,C-3,A-4,B-5,C-6,用户Id和单据ID都应该设置为unique,在实际查询中,虽然不是一一对应的,但效果也是差不多的。

3.我设置的参数类型为“FILE”,其实按照 云层 的 unique的方法应该很简单,但我没试过,等会试下。



附LR帮助文档中的一段文字:

文件/表参数的数据分配和更新方法
对于文件和表类型参数,所选的数据分配方法和更新方法会共同影响在场景或会话步骤运行期间 Vuser 用来替换参数的值。 示例
假设表/文件包括以下所示的值:
Kim;David;Michael;Jane;Ron;Alice;Ken;Julie;Fred
•        如果选择使用“顺序”方法分配数据,则:
o        如果选择在“每次迭代”进行更新,则所有 Vuser 就会在第一次迭代使用 Kim,第二次迭代使用 David,第三次迭代使用 Michael,等等。
o        如果选择在“每次出现”进行更新,则所有 Vuser 就会在第一次出现时使用 Kim,第二次出现使用 David,第三次出现使用 Michael,等等。
o        如果选择更新“一次”,则所有 Vuser 就会在所有的迭代中使用 Kim。
如果数据表中没有足够的值,则 VuGen 返回到表中的第一个值,循环继续直到测试结束。
•        如果选择使用“随机”方法分配数据,则:
o        如果选择在“每次迭代”进行更新,则 Vuser 在每次迭代时使用表中的随机值。
o        如果选择在“每次出现”进行更新,则 Vuser 就会在参数每次出现时使用随机值。
o        如果选择更新“一次”,则所有 Vuser 就会在所有的迭代中使用第一次随机分配的值。
•        如果选择使用“唯一”方法分配数据,则:
o        如果选择在“每次迭代”进行更新,则对于一个有 3 次迭代的测试运行,第一个 Vuser 将在第一次迭代时提取 Kim,第二次迭代提取 David,第三次迭代提取 Michael。第二个 Vuser 提取 Jane、Ron 和 Alice。第三个 Vuser 提取 Ken、Julie 和 Fred。
o        如果选择在“每次出现”进行更新,则 Vuser 就会在参数每次出现时使用列表的唯一值。
o        如果选择更新“一次” ,则第一个 Vuser 就会在所有迭代时都提取 Kim,第二个 Vuser 就会在所有迭代时提取 David,等等。

christixo 发表于 2011-6-9 16:08:06

在controller中已经明确给出了VUSER加载的方式,在执行场景时也可以查看VUSER的执行情况。先执行脚本的vuser肯定是先取到了参数值,后执行的vuser取到了下一组参数。至于你想要什么结果都在于怎么来设置。
页: [1]
查看完整版本: 这样设置参数的更新方式为什么不行呢?