一、常见参数化类型
1、File:文本格式
设置如下:
输出如下:
2、Date/Time:获取当前时间,设置显示格式及更新方式
设置如下:
输出如下:
3、Unique Number:获得一个唯一的数据,在做某些主键属性的时候比较方便。当需要大量用户名时,我们可以参数化话用户名后的编号,将其设置为唯一的取值即可。
4、Iteration Number:该参数用于获得当前所在迭代的编号,设置显示位数,1-8位,不足位数前补0
设置如下:
输出如下:
5、Load Generator Name:该参数用于获运行时所在的服务器名称,设置显示位数,1-8位,不足位数前补0
设置如下:
输出如下:
6、Random Nummber:该参数用于生成一定格式的随机内容,可以通过设置最小值和最大值,来实现范围内随机数的生成
设置如下:
输出如下:
7、Table:Table参数类型是一个file类型的增强版,它提供了一些独特的功能,Columns提供了对列的分隔方式的设置。File参数类型的缺点就在于它的分隔符只是使用了逗号、制表符、空格三种格式。如果参数化的对象中同时存在逗号、制表符、空格时,只有使用Table参数类型才能解决这个问题。
8、VuserID:通过这个参数类型可以虚拟用户的编号,在场景中,每个用户都有一个唯一用户名,区别这个用户名是通过用户的ID来说明。例如Vuser1,这里说明用户名为Vuser (一般为脚本名),而用户编号为1。如果需要获取用户的编号,就可以通过这个参数来实现。
9、Group Name:在VuGen中运行时,Group Name将会是None
二、File参数化设置
2.1 假设一个dat文件中有多列值,Select column中设置取值的标识:
by number是按第一列、第二列、第三列的方式取列值;
by name是按列名取值。
2.2 File format中:
column定义分列方式,是按逗号,tab还是空格;
First data定义取值从列表的第几行开始取值,默认是第一行。
2.3 与参数取值方式相关的设置有三个:
1、Select next row:下次取值怎么取
(1)Sequential:按照顺序一行行的取值。每一个虚拟用户都会按照相同的顺序读取
(2)Random:在每次迭代里随机的读取一个,但是在循环中一直保持不变
(3)Unique :每个VU取唯一的值
(4)Same Line As :可以设置和前面定义的参数取同行的记录。通常用在有关联性的数据上面。比如做登录测试的脚本时,每个用户的密码都不同,就可以这样定义:创建参数文件,共两列username、passwd,则设置完username的取值方式后passwd设成 same line as username。
2、Update value on:碰到什么情况去更新这条数据
(1)Each iteration :每次迭代都要取新值。从action头运行到action尾叫一次迭代。
(2)Each occurrence :每次出现重新取值,如果一个action中该参数多次出现,每遇到一个就要重新取一个值
(3)Once :取一次之后再也不变了
3、When out of value:值不够的情况如何取值
Unique实际上是压力测试中更为常用的设置。如果Select next row选择unique的设置,每个数据只会用一次,当调用的次数或迭代次数超过值的个数时就可能会报错。when out of value可以选择当数值个数不够的情况系统改如何取值。
(1)Abort Vuser:停止测试
(2)Continue in a cyclic manner:循环取值,再重新开始新一轮的unique取值
(3)Continue with last value:沿用最后一个值
三、File参数化实例
1、单用户多次循环(数据test1111、test2222、test3333,脚本中参数出现2次,循环3次)
Select next row |
Update value on |
执行结果 |
Sequential |
Each iteration |
test1111,test1111,test2222,test2222,test3333,test3333 |
Each occurrence |
test1111,test2222,test3333,test1111,test2222,test3333 |
|
Once |
test1111,test1111,test1111,test1111,test1111,test1111 |
|
Random |
Each iteration |
test1111,test1111,test2222,test2222,test1111,test1111 |
Each occurrence |
test1111,test3333,test1111,test1111,test1111,test2222 |
|
Once |
test1111,test1111,test1111,test1111,test1111,test1111 |
|
Unique |
Each iteration |
test1111,test1111,test2222,test2222,test3333,test3333 |
Each occurrence |
test1111,test2222,test3333,test1111,test2222,test3333 |
|
Once |
test1111,test1111,test1111,test1111,test1111,test1111 |
2、多用户多次循环(虚拟用户Vuser1、Vuser2、Vuser3,数据A、B、C,脚本中参数出现3次,循环3次)
多个用户并发的时候,每个用户都是独立取值的,任何用户取值都不会影响到其他用户。
但是,当Select next row选择Unique时,LoadRunner会预先将参数值分配给每个用户,分配给Vuser1用户的值Vuser2用户就不能再用,参数值都是被用户独占的,因此使用该Unique类型必须注意数据表有足够多的数。比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数。为了测试Unique,加入数据D、E、F、G、H、I。
Unique + Once |
无论进行多少次迭代 无论参数任何时候出现 Vuser1取A Vuser2取B Vuser3取C |
Unique + Each occurrence |
第一次迭代 第一次出现该参数 Vuser1取A Vuser2取D Vuser3取G 第一次迭代 第三次出现该参数 Vuser1取C Vuser2取F Vuser3取I |
Unique + Each iteration |
第一次迭代 无论参数出现多少次 Vuser1取A Vuser2取D Vuser3取G |
Sequential + Each iteration |
第一次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取A |
Sequential + Each occurrence |
第N次迭代 参数第一次出现 Vuser1、Vuser2、Vuser3 取A |
Sequential + Once |
第N次迭代 无论参数任何时候出现 Vuser1取A Vuser2取B Vuser3取C |
Random + Each iteration |
第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C,本次迭代不再更新 |
Random + Each occurrence |
第N次迭代 第一次遇到该参数 Vuser1、Vuser2、Vuser3在A、B、C中随机抽取一个 第N次迭代 第二次遇到该参数 Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个 |
Random + Once |
第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C |