LR参数化后取值规则小记
对参数化的取值,只有一个用户的情况能分清,但是多用户多迭代就搞不懂,特意使用Parameter List中自带的参数化模拟器Simulate Parameter进行简单的实验,3条数据 + 4个用户 + 4次迭代,具体情况如下。
3条数据准备如下,Select column采用的By number :1。
Sequential & Each iteration |
注:此时“Continue with last value”失效 |
Sequential & Each Occurrence |
模拟器中无法进行,只能在Controller中验证。 对每一个Vuser而言,每遇到参数一次(哪怕是在lr_eval_string()函数中使用),就会顺序更新一次该参数值。 |
Sequential & Once |
|
Radom & Each iteration |
|
Radom & Each Occurrence |
对每一个Vuser或者每一次迭代而言,每遇到参数一次,就随机更新一次该参数值。 |
Radom & Once |
|
Unique & Each iteration |
Allocate Vuser values in the Controller默认为:Automatically allocate block size。 When Out of Values默认为:Continue with last value。 这两个参数对于Unique+iteration和Unique+Occurrence很重要。 |
Unique & Each Occurrence |
对每一个Vuser或者每一次迭代而言,每遇到参数一次,就随机更新一次该参数值。
|
Unique & Once |
注:无论多少次迭代,vuser1取第一条;Vuser2取第二条,以此类推…… |
结合上面的实验结果,总结如下。
(1)Select next row决定获取数据的方式,是顺序还是随机或者唯一不变,Update value on决定更新数据的时机,是每次迭代更新还是参数出现更新或者迭代不更新。
(2)若Select next row为“Sequential”,则对于任何一个vuser而言,都是从数据表的第一条数据顺序读取,至于什么时候读取新值,取决于Update value on。
(3)若Select next row为“Unique”,则必须使数据条数满足当前设定否则会报错;Unique & Each iteration则数据条数至少要为:Vuser个数 * iteration次数。
(4)若Update value on 为“Once”,则每次迭代不更新数据。
Allocate Vuser values in the Controller
(1)Automatically allocate block size(自动分块)。
系统自动统计一个Vuser运行完毕所需要的参数的个数,也就是分块大小,然后顺序为每一个Vuser分配数据,这里假设所需参数为3。
Vuser分到的参数不够,将在自己分的块中进行取值,这里的取值方式又包括“Continue with last value”都和最后一个取到的参数值保持一致;“Continue in a cyclic manner”在该Vuser中循环取值。
(2)Allocate ** values for each Vuser(分配**块给每个Vuser)。
自定义块大小,块内数据不足与自动分块处理方法一致。
最后,附上好图三枚,很赞的,还总结了Each Occurrence有多参数的情况~
对参数化的取值理解还是很浅薄的,希望在今后的工作学习中能深入理解,欢迎各路大神指导~