1、Select next row:下次取值怎么取
(1)Sequential:按照顺序一行行的取值。每一个虚拟用户都会按照相同的顺序读取
(2)Random:在每次迭代里随机的读取一个,但是在循环中一直保持不变;
(3)Unique :唯一值,列表中的值只能取一次(取过一次之后再也用不到);
(4)Same Line As ** :和*参数取同行的记录,通常用在有关联性的数据上面;详细参考:https://blog.csdn.net/u011922774/article/details/117259989
选择Unique 后,需设置allocate vuser values in the controller:
(1)Automatically allocate block size自动分配程序块大小
(2)Allocate XX values for each vuser为每个虚拟用户分配XXX值
2、Update value on:碰到什么情况去更新这条数据
(1)Each iteration :每次迭代都要取新值。从action头运行到action尾叫一次迭代。
(2)Each occurrence :每次出现重新取值,如果一个action中该参数多次出现,每遇到一个就要重新取一个值;
(3)Once :第一次迭代的时候取值,之后的都用第一次取的值(永远都使用第一次迭代的取值);
3、Select next row如果选择的unique
这种方式比较特殊,参数取值是唯一的,那么我们就要设置一下当值全部取完的时候该怎么处理,设置下when out of values。
有三种处理方式
(1)Abort Vuser:停止测试,如果值已经全部被使用过了,则停止测试
(2)Continue in a cyclic manner:循环取值,再从第一行开始重新取值
(3)Continue with last value:如果全部的值都被使用过,则之后都使用最后一行的值
我们设置一下回放时的日志,能更清楚的看到我们的参数化是否成功
进一步举例说明:
参数个数:4个param1、param2、param3、param4 、param5,脚本如下:
1、场景设置(一):Sequential+Each Iteration,执行结果
**说明:**每个用户每次迭代都从第一个参数按照顺序去取值,取值完了之后再从第一行取。每个用户取值都相同,强调了用户之间的一致性.
LR12好像有Bug,在Vuser1第4、第5次迭代没取到值,取的值是空.
2、场景设置(二):Sequential+Each Occurrence,执行结果
说明:每个用户每次遇到调用都从第一个参数开始按照顺序去取值,取值完了之后再从第一行取。每个用户取值都相同,强调了用户之间的一致性
LR12好像有Bug,在Vuser1第2次迭代第2次occure的时候没取到值,取的值是空,再第三次迭代的时候才会从Param1继续取值
3、场景设置(三):Sequential+Once,执行结果
**说明:**每个用户按顺序只取一个值(每次调用都取得是设置的第一个值)
4、场景设置(四):Unique+Each Iteration+Continue with last
**说明:**每个VU(每个并发用户)每次迭代取唯一(Unique)的值,这就需要参数充足,否则会报错。
扩展:如果此时有Vuser4,由于5个参数被前3个Vuser用完了,Vuser4就取不到参数了,而且连一个事务都不会成功,并且报错:Insufficient records for parameter ‘Param’ in table to provide the Vuser with unique data
怎么解决:那就是如果你用了这种组合,那就要保证充足的参数;
5、场景设置(5):Unique+Each occurrence+Continue with last+allocate 2 values for each Vuser
**6、场景设置(6):**Random取值
Random+更新时间,实际上和逻辑和上面一样,把按顺序的值改成随机就好了,就不赘述了。