LR的参数的取值,和select next row和update value on的设置都有密不可分的关系。 下表给出了select next row和update value on不同的设置,对于LR的参数取值的结果将不同,给出了详细的描述。
Select next row | Update Value on | 实际运行结果 |
sequential | each iteration | 在某次循环中所有用户取值相同。 所有用户第一次循环取第一行值,第二次循环取第二行值 |
each occurrence | 在某次循环中或者脚本中使用参数的地方,所有用户取值相同。 脚本中出现要使用参数的话,参数值就更新一次,循环一次值再更新一次。 | |
once | 在所有的循环中所有用户取值相同。 所有的用户所有的循环中,只用一个值(即参数中的第一行值) | |
random | each iteration | 不同的用户,在不同的循环次数中,随机取值 |
each occurrence | 不同的用户,脚本中出现要使用参数的话,随机取值一次,循环一次再随机取值一次 | |
once | 不同的用户,不管循环多少次,只随机取值一次。 | |
unique | each iteration | 若选择手工自配参数,那LR按照每用户几个参数先分配参数,然后进行循环。 若选择自动分配参数: Controller中edit schedule中run until comletion:按照循环次数先分配第一个VU(例如设置的循环次数为3,那分配给第一个VU 3个参数值),然后接下来的3个参数值分配给第二个VU,依次类推…... Controller中edit schedule中run for:若选择自动分配,LR将按照用户数均分参数,剩余的参数不使用。 |
each occurrence | 只能手工分配用户,给每个用户分配好X个参数后,在脚本中有参数的地方,就使用已经分配好的X个参数。 | |
once | 按照用户数分配给每个用户分配一个参数而已。以后的循环这个用户就使用这一个参数 |
1.Update value on
--Each Occurrence:只要发现该参数就重新取值(用于各处引用参数都不相关时)
--Each iteration:每次反复都要取新值(各个并发会共享同一个值,用于多次引用参数且相关的情况)
--Once:在所有的反复中都使用同一个值(仅在场景初始化时产生一次,在一个场景中的所有并发和所有反复的值都相同)
2.Select Next Row
方法可以是:连续的、随机的、唯一的、或者与其它
参数表的相同行。
--顺序(Sequential):该方法顺序地给虚拟用户分配参数值。如果正在
运行的虚拟用户访问数据表的时候,它会取到下一行中可用的数据。
--随机(Random):该方法在每次迭代的时候会从数据表中取随机数
--唯一(UNIQUE):Unique方法分配一个唯一的有顺序的值给每个虚拟用户的参数。
--其它参数表的相同行(Same Line As)该方法从和以前定义过的参数中的同样的一行分配数据。你必须指定包含有该数据的列。在下拉列表中会出现定义过的所有参数列表。注意:至少其中的一个参数必须是Sequential、Random或者Unique。
--使用种子取随机顺序(Use Random Sequence with Seed):如果从Loadrunner的控制器来运行scenario,你可以指定一个种子数值用于随机顺序。每一个种子数值在测试执行的时候代表了一个随机数的顺序。无论你何时使用这个种子数值,在scenario中同样的数据顺序就被分配给虚拟用户。如果在测试执行的时候发现了一个问题并且企图使用同样的随机数序列来重复测试,那么,你就可以启动这个功能(可选项)。
3.唯一参数值的分配方式
场景初始化时会根据设置为每个VUser预先分配多个参数值,已确保不会重复。
使用选项:Allocate XXX values for each vuser
学习:
1、Select next row:Sequential(顺序执行);Random(随机执行);Unique(唯一)
2、Update value on:Each iteration(每次迭代循环);
可取组合:
1、sequential each iteration 在某次循环中所有用户取值相同。
所有用户第一次循环取第一行值,第二次循环取第二行值 (如果值不够,所有用户循环从第一行-第二行开始取值)
2、 unique each iteration 唯一的值并且每次循环时更新值。Controller中edit schedule中run until comletion
注意:使用该类型必须注意数据表中要有足够的数。比如controller中设定20个Vusers进行5次循环(迭代iteration),那么第一个Vusers用户取值1-5行,第二个Vusers用户取值6-10行的数,依次类推,这样数据表中至少要有100行数据,否则Controller运行过程中会返回一个错误。
When out of values :Abort Vuser没有那么多参数时,忽略执行其他用户;Continue in cyclic manner:从第一行起接着循环执行;continue with last value :循环执行最后一个值
3、unique once 按照用户数分配给每个用户分配一个参数而已。以后的循环这个用户就使用这一个参数。比如:第一个用户,取第1个数据,第二个用户,取第2个数据,依次类推,以后每次循环都使用这个数据。有多少个用户就有多少行数据就ok