用户在录制脚本过程中,会提交一些数据,比如登录时提交的用户名和密码等,这些操作都被记录到了脚本中。当我们对这些数据进行参数后,多个虚拟用户运行脚本时就存在着这些参数如何分配的问题。一下就这个问题谈谈我个人的理解。以登录用户名参数化为例:
一:录制脚本(较为简单,不再详细说明)
二:添加注释,事务等
三:参数化用户名:
“选择下一行”有三种选择方式
l Sequential:按照顺序读取参数。即每个虚拟用户按照相同的顺序读取参数。
Eg:此例中有5个参数test1、test2、test3、test4、test5,我们假设有5个虚拟用户要执行这些参数。
若:“更新值的时间”即 "Update value on"选择
1.Each iteration: 即每次迭代都更更新参数
如迭代4次,每个用户的取值都为:test1、test2、test3、test4
如迭代5次,每个用户的取值都为:test1、test2、test3、test4、test5
2.Each occurence: 即每次出现都更新参数
假设Action里有两次调用{username} 参数,迭代次数为5
则每个用户的取值都为:第一次迭代:test1、test2
第二次迭代:test3、test4
第三次迭代:test5、test1
第四次迭代:test2、test3
第五次迭代:test4、test5
3.Once: 即每一个用户只选一个参数
不管迭代几次,每个虚拟用户只选择参数:test1
l Random:在每次循环里随机的读取一个, 但是在循环中一直保持不变。
例如:若 "Update value on"选择:Each occurence
假设Action里有两次调用{username} 参数,迭代次数是5,某一虚拟用户的取值可能是:
第一次迭代:test1、test1
第二次迭代:test3、test3
第三次迭代:test5、test5
第四次迭代:test2、test2
第五次迭代:test1、test1
l Unique:唯一数,即每一次循环,每一个虚拟用户都取唯一值。
若:“更新值的时间”即 "Update value on"选择
1.Each iteration: 即每次迭代都更更新参数,此时系统自动分配块大小
假设3虚拟用户个用户(user1,user2,user3),迭代3次
则:3个用户取得参数分别为:
User1: test1、test2、test3
User2: test4、test5、test5 (注此处:when out of values选择:continue with last value)
User3: 取不到参数,系统报错
假设3个虚拟用户(user1,user2,user3),迭代4次
则:3个用户取得参数分别为:
User1: test1、test2、test3、test4
User2:test5、test5、test5、test5 (注此处:when out of values选择:continue with last value)
User3: 取不到参数,系统报错
注:此时虚拟用户的取值取决于两个因素:1.迭代的次数 2.虚拟用户的数量。
2.Each occurence: 即每次出现都更新参数
假设3虚拟用户(user1,user2,user3),迭代3次,手动分配给每个用户2个参数值
则不管迭代几次,每个用户的取值分别为:User1:test1、test2
User2:test3、test4
&n