前面文章我们介绍过,参数化是将变量代替常量,更加真实的模拟用户操作。接下来我们介绍LoadRunner实现参数化的3种常用的方法
1.Random Number:使用随机数
1.选中待参数化的值,比如用户名,右键进行如下操作:
2.设置参数名和参数类型
3.点击Properties之后弹出如下对话框:
参数说明:
min:最小值
max:最大值
Number:显示格式,比如%08lu:表示总共8位数,不够的话前面补0
Each iteration:按每次迭代取变化参数值(脚本在当前迭代里,参数不论出现多少次,值固定)
Each occurrence :按每次出现变化参数值(脚本迭代运行中,参数每出现一次值变化一次,与迭代次数无关)
Once:迭代过程中,参数值始终保持第一次取的值
4.点击close,点击OK后弹出对话框是否将脚本中选择的字符串全部替换,根据实际需要操作即可:
选择Yes后的结果:
选择No的结果,只有选中的值被替换:
5.配置log:注意此时要确认一下Runtime Setting-->Log,必须按如下选项配置,否则参数化后的值看不到
6.回放脚本成功后查找到参数化使用的值:
打开浏览器用上面的用户名和密码能够登陆成功说明执行成功。
File:使用文件
1.构造如下数据文件,文件名为NewParam.dat:
2.找到待参数化的值,比如用户名,右键进行如下操作:
3.设置参数名,参数类型为file,点击Properties
4.设置参数文件相关信息,注意路径不要有中文
Select next row有三种选项:
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变
Unique :唯一的数,保证多线程时每个线程取到的值是不一样的。注意:使用该类型必须注意数据表有足够多的数。比如:Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。
Update value on也有三个选项,同前面介绍的是一样的:
5.配置完成后点击close,ok。至此配置完成
6.开始回放
6.查看回放过程中浏览器访问的页面
8.回放时能弹出这样的窗口,可以看到详细的错误信息:
重点说明Select next row为Unique的情况:
文件中数据范围:1-10
区段:5
2个线程
线程1:用1-5
线程2:用6-10
6次迭代,值不够了,3种选择:
1 abort 退出
2 last value
3 从头开始
选择了unique之后后面两项变成了可选状态,如下:
When out of values中3种选择和前面的是一样的,不再赘述
Allocate Vuser values in the Controller:
--Automatically allocate block size:自动根据数据文件中数据个数,以及Runtime Setting->Run Logic中设置的线程数平均分配
--Allocate:手动分配,每个线程中数据的间隔
Unique Number:使用唯一值
1.找到待参数化的值,比如用户名,右键进行如下操作:
2.设置参数名,参数类型为Unique Number,点击Properties
3.设置区段和超限时如何处理
Number:
--Start:起始值
--Block size per Vuser:当使用controller并发测试时,每个线程或进程的取值间隔,举例:
情况1:1个线程
区段:10
1个线程,迭代1次:1
1个线程,迭代5次:1,2,3,4,5
1个线程,迭代10次:1,2,3,4,5,...10
1个线程,迭代11次:1,2,3,4,5,...10
第11次看设置
abort:退出
cycle manner:从1开始
last:10
情况2:2个线程
区段:10
2个线程,各迭代1次: 线程1:1 线程2:11
2个线程,各迭代5次: 线程1:1-5 线程2:11-15
2个线程,各迭代10次: 线程1:1-10 线程2:11-20
2个线程,各迭代11次: 线程1:1-10 线程2:11-20
第11次看设置
abort:退出
cycle manner:线程1从1开始取,线程2从11开始取
last:线程1只取10,线程2只取11
When out of values:设置超限时如何处理
--Abort Vuser:脚本中止
--Continue in a cyclic manner:循环模式,从开头重新开始
--Continue with last value:最后一个值,也就是后续迭代参数值与上一次迭代取值相同