LoadRunner参数化---数据文件属性 之 数据分配方法和数据更新方法
本人初学LR的时候对这块挺困惑的,当时收集了一些相关资料,现整理了一下发出来,相信对刚刚接触到LR的朋友有点作用。
数据分配方法(Select next row)
1>Sequential:该方法顺序地向Vuser分配参数值。当正在运行的Vuser访问数据表的时候,它将会提取下一个可用的数据行。也就是说,按着顺序一个一个取,取了第一行再取第二行,取了第二行取地三行,一次类推。如果在数据表中没有足够的值,则VuGen返回到表中的第一个值,循环直到测试结束。
2>Random:该方法为每个Vuser分配一个数据表中的随机值。比如当前数据表中有100行数据,那么随机数就从1~100之间任取一个,作为行号,去取相应行的参数值数据。
3>Unique:该方法为每一个Vuser的参数分配一个唯一的顺序值。
在这种情况下,必须保证表中的数据对所有的Vuser和它们的迭代是充足的。如果拥有20个Vuser,并且要运行5次迭代,则表中必须至少包含100个唯一值。
超出范围之后可以在When out of values中设置
Abort Vuser-中止
Continue in a cyclic manner-继续循环取值
Continue with last value-取最后一个值
4>Same Line As <parameter>:该方法与以前定义过的参数中同样的一行分配数据,必须制定包含有该数据的列。下拉列表中会出现定义过的所有参数列表。至少其中的一个参数必须是Sequential、Random或Unique
如果数据表中有2列,2个参数定义在列表中,id和password,如下:
id password
----- ---------
admin admin888
guest guest888
...
对于参数id,可以制定Vuser使用Random,而参数password就可以指定方法“Same Line as id”,这样一旦id "admin"被使用,那么,password "admin888"就同时被使用。
上面的Select next row指的是怎么取新值,这里的Update value on指的是什么时候取新值
数据更新方式(Update value on)
1>Each iteration:该方法指示Vuser在每次脚本迭代时使用新值。如果一个参数在脚本中出现了若干次,则Vuser为整个迭代中该参数的所有出现使用同一个值(在同一个迭代中,无论读几次参数,获得的都是同一个参数值)。
2>Each occurrence:该方法指示Vuser在每次参数出现时使用新值(在同一个迭代中,读一次参数,就要取其新值,新值从哪来,由Select next row来规定)。
3>Once:该方法指示Vuser在所有的循环中都使用同一个值(只取一次)
参考例子:
假设文件中包括以下值:a, b, c, d, e, f …..
脚本中有两个参数取文件中的值,设置三个虚拟用户,每个用户迭代4次
如果选择顺序+迭代
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
bb |
cc |
dd |
User2 |
aa |
bb |
cc |
dd |
User3 |
aa |
bb |
cc |
dd |
如果选择随机+迭代
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
bb (都为随机数,不一定取值是这个顺序) |
ff |
dd |
cc |
User2 |
cc |
bb |
ee |
aa |
User3 |
aa |
ee |
dd |
bb |
如果选择唯一+迭代
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
dd |
… |
… |
User2 |
bb |
ee |
… |
… |
User3 |
cc |
ff |
.. |
… |
如果选择顺序+遇到
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
ab |
cd |
ef |
gh |
User2 |
ab |
cd |
ef |
gh |
User3 |
ab |
cd |
ef |
gh |
如果选择随机+遇到
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
ae (都为随机数,不一定取值是这个顺序) |
bf |
ed |
bh |
User2 |
cb |
… |
… |
… |
User3 |
ab |
… |
… |
… |
如果选择唯一+遇到
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
ad |
… |
… |
… |
User2 |
be |
… |
… |
… |
User3 |
cf |
… |
… |
… |
如果选择顺序+一次
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
aa |
aa |
aa |
User2 |
bb |
bb |
bb |
bb |
User3 |
cc |
cc |
cc |
cc |
如果选择唯一+一次
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
aa |
aa |
aa |
aa |
User2 |
bb |
bb |
bb |
bb |
User3 |
cc |
cc |
cc |
cc |
如果选择随机+一次
|
迭代1 |
迭代2 |
迭代3 |
迭代4 |
User1 |
cc |
cc |
cc |
cc |
User2 |
ee |
ee |
ee |
ee |
User3 |
bb |
bb |
bb |
bb |
数据量:
如果选择唯一+迭代= m*n (m是虚拟用户数,n是迭代次数)
如果选择唯一+遇到= m*n *i(m是虚拟用户数,n是迭代次数,i是在脚本中出现该参数的次数)