51Testing软件测试论坛

标题: 参数化输入的实际例子设置 [打印本页]

作者: ryancheung    时间: 2007-8-3 17:37
标题: 参数化输入的实际例子设置
谢谢哪位高手帮我解决一下下面的参数化输入的实际例子设置
   我希望在CONTROLLER中模拟的用户一条一条往下取数据 请问我该怎么设置

   附件里是我的设置

   实际中在CONTROLLER中我模拟了2个用户,但第二个用户并没有取第二行数据.还是取了第一行
   我想让每个用户依次取下一行数据,请问怎么改正?
   我用的是LR8.0


    [attach]30416[/attach]


    谢谢!
作者: ryancheung    时间: 2007-8-3 21:09
没人回答 自己顶啊
作者: spartan    时间: 2007-8-3 22:06
打开参数列表,选择你要设置的参数,作如下的设置:
  select next row=unique
  update vaule on=each iteration
  allocate vuser values in the controller=allocate X valuesfor each vuser  X就是你要给每个vuser分配的参数的数量。

详细的细节以及解释,可以浏览我的blog:
http://www.51testing.com/?120561 ... ime_1188576000.html
作者: ryancheung    时间: 2007-8-4 22:10
标题: 回复 #3 spartan 的帖子
太谢谢了 我周一上班试试看 有问题再请教您
作者: toly_sun    时间: 2007-8-5 23:07
看一下
作者: ryancheung    时间: 2007-8-6 09:20
标题: 回复 #3 spartan 的帖子
还是要问回答我的那位大哥
我用了FILE类型
SELECT NEXT ROW: UNIQUE
UPDATE VALUE ON: ITERATION
WHEN OUT OF VALUES: continue in a cyclic manner

这样设置 如果数据库记录只有10条 我模拟13个用户会出错吗
如果会我怎么改正?
谢谢
作者: spartan    时间: 2007-8-6 09:30
原帖由 ryancheung 于 2007-8-6 09:20 发表
还是要问回答我的那位大哥
我用了FILE类型
SELECT NEXT ROW: UNIQUE
UPDATE VALUE ON: ITERATION
WHEN OUT OF VALUES: continue in a cyclic manner

这样设置 如果数据库记录只有10条 我模拟13个用 ...


会出错的。 既然是13个用户的话,  在此设置下必须至少有13条纪录。否则的话, LR在CONTROLLER中运行的时候会有3个虚拟用户fail,因为这3个用户没有分配到参数。

要解决这个问题的话, 
第一:多准备一些参数给这13个虚拟用户,至少大于等于13条数据。
第二:改变 SELECT NEXT ROW: sequence UPDATE VALUE ON: ITERATION。 但是这样的话每次循环的时候,这13个用户都取同样的值。

所以针对解决的办法,还要看你实际的情况了。

[ 本帖最后由 spartan 于 2007-8-6 09:32 编辑 ]
作者: ryancheung    时间: 2007-8-6 11:43
标题: 回复 #7 spartan 的帖子
如果用您的第一种办法,只要数据不够还是没有办法做的咯?
那WHEN OUT OF VALUES: continue in a cyclic manner我不是已经让他循环选择数据了吗?还是不能解决这个问题吗?
作者: spartan    时间: 2007-8-6 17:30
标题: 回复 #8 ryancheung 的帖子
对的,只要数据不够就没有办法了。
即使设置为WHEN OUT OF VALUES: continue in a cyclic manner,也不能解决问题的。 WHEN OUT OF VALUES: continue in a cyclic manner是指在每个用户分配到一定数量的参数后,在LR循环运行的时候, 当某个用户的参数不够的时候,LR会让这个用户一直循环使用分配给他自己的那几个值。

举个例子:
现有一参数,名为:emp_no, 有四个值: E01,E02,E03,E04
现有一场景,三个虚拟用户,分别为:U1,U2,U3
LR参数列表设置:unique + each iteration+ allocate 2 values for each vuser

在场景运行的时候,
1. LR会先做一件事情-参数分配,假设参数分配的方式是手工分配,allocate 2 values for each vuser.
    分配的结果是: U1-E01,E02;     U2-E03,E04;     U3-无参数;

[备注:若选择了自动分配参数。那将遵循以下的原则:
Controller中edit schedule中选择了run until comletion:按照循环次数先分配第一个VU(例如设置的循环次数为3,那分配给第一个VU 3个参数值),然后接下来的3个参数值分配给第二个VU,依次类推…...
Controller中edit schedule中选择了run for:若选择自动分配,LR将按照用户数均分参数,剩余的参数不使用。]


2. 在运行开始后,U3将会FAILED. 因为没有参数分配给他。其他的两个虚拟用户正常运行,但是其他的两个用户,每个用户只有两个参数,只能保证他们循环两次而已。
当他们运行到第三个循环的时候,他们已经没有参数可以用了。 怎么办呢? 这个时候,LR将按照设置的WHEN OUT OF VALUES的值进行处理。我们拿虚拟用户U1来举例说明。

如果when out of values=abort vuser, U1在第三次循环的时候将会退出执行。
循环次数        虚拟用户        使用参数值        运行状态
1        U1        E01        正常运行
2        U1        E02        正常运行
3        U1        /        退出运行

如果when out of values=continue in a cyclic manner, U1在第三次循环的时候将会开始循环利用他的参数值E01, 第四次循环使用E02…….
循环次数        虚拟用户        使用参数值        运行状态
1        U1        E01        正常运行
2        U1        E02        正常运行
3        U1        E01        正常运行
4        U1        E02        正常运行
5        U1        ….        …..

如果when out of values=continue with last value, U1在第三次循环的时候使用最后的一个参数即E02, 第四次继续使用E02…….
循环次数        虚拟用户        使用参数值        运行状态
1        U1        E01        正常运行
2        U1        E02        正常运行
3        U1        E02        正常运行
4        U1        E02        正常运行
5        U1        ….        …..

[ 本帖最后由 spartan 于 2007-8-6 18:49 编辑 ]
作者: 小李美刀    时间: 2007-8-6 18:02
标题: Select next row 的几种选择:
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取。
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变。
Unique :唯一的数。
注意:使用该类型必须注意数据表有足够多的数。比如Controller中设定20个虚拟用户进行5次循环,那么编号为1 的虚拟用户取前5个数,编号为2的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据否则Controller 运行过程中会返回一个错误。

Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。通常用在有关联性的数据上面。
作者: spartan    时间: 2007-8-6 18:18
标题: 回复 #10 小李美刀 的帖子
写的不正确啊!
比如说:Random:在每次循环里随机的读取一个,但是在循环中一直保持不变。 这个完全不正确的。 假如我设置update value on=each iteration的话,不同的iteration,  不同的用户也会随机取值的。并不是你说的,在后面的循环中保持参数值保持不变的。
所以说:
LR中参数的取值,除了和select next row设置有关系外,还跟update value on的设置有关系的。

具体的参数表中select next row和update value on的设置对于LR取值的影响,请查看我的blog中的详细描述。
http://www.51testing.com/?120561 ... e_itemid_17704.html

[ 本帖最后由 spartan 于 2007-8-6 18:50 编辑 ]
作者: npy912    时间: 2007-8-7 10:23
问题解决了吗?如何解决的?
作者: ryancheung    时间: 2007-8-7 10:35
谢谢大家的帮忙 我的问题解决了
的确 数据库数据不够通过LR本身的设置肯定不能解决问题
但大家的回答给了我一点启发
我把每个参数对应的.DAT文件里的内容进行了复制粘贴
这样.DAT里的数据就得到的扩充,实现了手动设置的循环
但是数据库的数据没有增加
谢谢大家的帮忙 :-)




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2