在性能测试过程中,为了保证数据插入的正确性,一般我们使用如下三种取值和更新值的设置:

  1. Random+Once
  2. Unique+Each iteration
  3. Unique+Once

那么其他不同参数取值和更新值的组合具体如何使用呢?我们通过下面的例子来进行说明。

例如存在数据:A、B、C

并发虚拟用户:Vuser1、Vuser2、Vuser3

脚本中参数出现三次,脚本迭代三次

注意: Controller里面的Runtime setting 的设置是优先于 VuGen里面的Runtime setting。

1、怎样取下一行数据?

Sequential:顺序,所有虚拟用户按照顺序读取数据表 ;

Random:随机,所有虚拟用户随机形式读取数据表 ;

Unique:唯一,所有虚拟用户每次各取一值(不重复) 。

2、什么时候访问数据表完成数据更新?

Each iteration:每次迭代以后 ;

Each occurrence:每次出现参数 ;

Once:每出现一个虚拟用户 。

----------------------------------------------

实例:

顺序

Sequential + Each iteration

第一次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取A

第二次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取B

第三次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取C

Sequential + Each occurrence

第N次迭代 参数第一次出现 Vuser1、Vuser2、Vuser3 取A

第N次迭代 参数第二次出现 Vuser1、Vuser2、Vuser3 取B

第N次迭代 参数第三次出现 Vuser1、Vuser2、Vuser3 取C

Sequential + Once

第N次迭代 无论参数任何时候出现 Vuser1取A Vuser2取B Vuser3取C

随机

Random + Each iteration

第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C,本次迭代不再更新

第N次迭代 无论遇到该参数多少次 Vuser2都只取A,或者B,又或者C,本次迭代不再更新

第N次迭代 无论遇到该参数多少次 Vuser3都只取A,或者B,又或者C,本次迭代不再更新

在N+1次迭代,每个Vuser重新随机抽取数据

Random + Each occurrence

第N次迭代 第一次遇到该参数 Vuser1、Vuser2、Vuser3在A、B、C中随机抽取一个

第N次迭代 第二次遇到该参数 Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个

第N次迭代 第三次遇到该参数 Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个

在N+1次迭代,每个Vuser继续保持每遇到一次参数就重新抽取一次数据

Random + Once

第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C

第N次迭代 无论遇到该参数多少次 Vuser2都只取A,或者B,又或者C

第N次迭代 无论遇到该参数多少次 Vuser3都只取A,或者B,又或者C

在N+1次迭代,每个Vuser不会重新抽取数据

唯一

注意:使用该Unique类型必须注意数据表有足够多的数。

比如Controller 中设定20 个虚拟用户进行3 次循环,那么编号为1 的虚拟用户取前3个数,编号为2 的虚拟用户取4-6 的数,依次类推,这样数据表中至少要60个数据,否则Controller 运行过程中会返回一个错误。

因此以下例子在数据表中加入数据D、E、F、G、H、I。

Unique + Each iteration

第一次迭代 无论参数出现多少次 Vuser1取A Vuser2取D Vuser3取G

第二次迭代 无论参数出现多少次 Vuser1取B Vuser2取E Vuser3取H

第三次迭代 无论参数出现多少次 Vuser1取C Vuser2取F Vuser3取I

Unique + Each occurrence

第一次迭代 第一次出现该参数 Vuser1取A Vuser2取D Vuser3取G

第一次迭代 第二次出现该参数 Vuser1取B Vuser2取E Vuser3取H

第一次迭代 第三次出现该参数 Vuser1取C Vuser2取F Vuser3取I

Unique + Once

无论进行多少次迭代,无论参数任何时候出现 ,Vuser1取A, Vuser2取B ,Vuser3取C ,数据D、E、F、G、H、I不取。