LoadRunner参数化详解
本文不讲LoadRunnr参数化具体步骤,只分析参数化的组合情况,并用具体数据来一步步分析各种情况,如果写的有不对的地方或者不明白的地方,请指出!
1. 为什么使用参数化?
在使用LoadRunner录制脚本的时候,只是记录的从客户端发出到服务器的数据,而在脚本回放或者进行性能测试的时候,如果不进行参数化则并没有真正的模拟真实用户操作。因为一些信息需要每次提交不同的数据,这时候就可以用参数化来模拟真实用户操作,而代替不同请求服务器的数据。
2. 参数类型为FIle/Table的参数值更新方式:
在参数化中,有更新方法(Update Value on)和 数据分配方法(Select next row ),两者结合使用,并且相互影响。
2.1 其中Update value on(更新方式) 有三种:
- Each Iteration(每次迭代) : 每次迭代的时候,根据数据分配方法取值
- Each Occerrence (每次出现): 每次出现的时候,根据数据分配方法取值
- Once(一次): 这个比较特殊,一次,既在同一虚拟用户中,第一次的迭代值将作为后续所有迭代的值
2.2 其中Select next row (数据分配方法) 有三种:
- Sequential(顺序取值) : 从数据表中顺序取值(接着上次取值)
- Random (随机取值) : 随机的取值
- Unique(唯一) : 也比较特殊,保证了用户的差异,也就是保证值的唯一
2.3 两者组合
**** | Sequential顺序取值 | Random随机取值 | Unique唯一 |
---|---|---|---|
Each Itertion (每次迭代) | 针对每次迭代,都会顺序取值 | 针对每次迭代,都会随机取值 | 对于每次迭代,都会保证值的唯一 |
Each Occurrence(每次出现) | 参数每次出现,都会顺序取下一个值,即使在同一迭代中 | 参数每次出现,都会随机取值,即使是在同一迭代中 | 参数每次出现,都会取新的唯一值,即使在同一迭代中 |
Once(一次) | 第一次迭代出现的值将作为后去所有迭代的值 | 第一次迭代随机分配的值将作为后续所有迭代的值 | 第一次迭代非陪的唯一值将作为后续所有迭代的值 |
一起来分析一下为什么会出现这样的情况吧
3.具体数据演练各种组合情况
– 组合1
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现2次
- 组合方式:Sequential+Each Iteration
(每次迭代的时候,都会接着上次的值,同一迭代出现多次,不会重新取值)
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | aa | bb | cc | dd | ee | aa |
用户2 | aa | bb | cc | dd | ee | aa |
用户3 | aa | bb | cc | dd | ee | aa |
用户4 | aa | bb | cc | dd | ee | aa |
用户5 | aa | bb | cc | dd | ee | aa |
– 组合2
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现2次
- 组合方式:Sequential+Each Occurrence(每次出现都会接着上次取值)
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | ab | cd | ea | bc | de | ab |
用户2 | ab | cd | ea | bc | de | ab |
用户3 | ab | cd | ea | bc | de | ab |
用户4 | ab | cd | ea | bc | de | ab |
用户5 | ab | cd | ea | bc | de | ab |
– 组合3
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现2次
- 组合方式:Sequential+ once
(前面提到过,once比较特殊,不做解释)
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | aa | aa | aa | aa | aa | aa |
用户2 | aa | aa | aa | aa | aa | aa |
用户3 | aa | aa | aa | aa | aa | aa |
用户4 | aa | aa | aa | aa | aa | aa |
用户5 | aa | aa | aa | aa | aa | aa |
– 组合4
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现1次
- 组合方式:Random + each Iteration
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | e | a | a | e | c | d |
用户2 | a | c | e | b | e | d |
用户3 | b | d | a | a | e | a |
用户4 | a | e | e | b | c | a |
用户5 | e | a | d | c | e | b |
– 组合5
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现2次
- 组合方式:Random + each Occurrence
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | ea | aa | ac | ea | ca | da |
用户2 | aa | cd | ae | ba | ee | dc |
用户3 | be | dd | ac | ae | ba | ab |
用户4 | ea | ed | bd | db | cd | aa |
用户5 | ec | aa | dd | ce | ea | ba |
– 组合6
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现1次
- 组合方式:Random + once
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | ee | ee | ee | ee | ee | ee |
用户2 | aa | aa | aa | aa | aa | aa |
用户3 | bb | bb | bb | bb | bb | bb |
用户4 | dd | dd | dd | dd | dd | dd |
用户5 | cc | cc | cc | cc | cc | cc |
– 组合7
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现1次
- 组合方式:Unique + each Iteration + continue with last value+ Automatically allocate bloce size (当到了某个用户值不够的时候,就将上次迭代的值作为该用户后续迭代的值)
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | a | b | c | d | e | e |
用户2 | ||||||
用户3 | ||||||
用户4 | ||||||
用户5 |
– 组合8
- 九个参数:a,b,c,d,e,f,g,h,i
- 五个虚拟用户,六次迭代,值在脚本中出现1次
- 组合方式:Unique +Each Iteration + continue in a cyclic manner + Automatically allocate bloce size (当到了某个用户值不够的时候,循环取值)
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | a | b | c | d | e | f |
用户2 | g | h | i | g | h | i |
用户3 | ||||||
用户4 | ||||||
用户5 |
– 组合9
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现1次
- 组合方式:Unique + each Iteration + continue with last value+ Allocate 3 values for each Vuser (每个用户分配三个值,当不够分配的时候,最后一次迭代的值将作为后续迭代的值)
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | a | b | c | c | c | c |
用户2 | d | e | e | e | e | e |
用户3 | ||||||
用户4 | ||||||
用户5 |
– 组合10
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现2次
- 组合方式:Unique + each Occurrence + continue with last value+ Allocate 3 values for each Vuser (每个用户分配三个值,当不够分配的时候,最后一次迭代的值将作为后续迭代的值)
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | ab | ca | bc | ab | ca | bc |
用户2 | de | de | de | de | de | de |
用户3 | ||||||
用户4 | ||||||
用户5 |
– 组合11
- 五个参数:a,b,c,d,e
- 五个虚拟用户,六次迭代,值在脚本中出现1次
- 组合方式:Unique + Once
虚拟用户 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 | 迭代取值 |
---|---|---|---|---|---|---|
用户1 | a | a | a | a | a | a |
用户2 | b | b | b | b | b | b |
用户3 | c | c | c | c | c | c |
用户4 | d | d | d | d | d | d |
用户5 | e | e | e | e | e | e |
总结
- 不难发现,使用Unique的时候,可能会造成值不够的情况,所以用这个的时候要保证有足够的值能取到。其实使用这个为了保证用户不能在同一时间多处登陆
- 而使用sequence的时候,刚好相反,可以保证用户在同一时间多处登陆
- 可以看的出Once的权限比较大,一旦使用这个就不用考虑该用户在后续迭代的值了
- 不要死记每种组合情况,只要记住六个值的作用就行.