参数化的定义:使用指定的数据源中的值来替换脚本录制生成的语句中的参数。
对Vuser脚本进行参数化的好处:
· 减小脚本的大小
· 提供了使用不同的脚本的值执行脚本的能力
参数化涉及两个任务:
· 用参数替换Vuser脚本的常量值
· 为参数设置属性和数据源
“Select next row”定义的是如何选择下一行数据。该处有三个选项"Sequential","Random","Unique":
· Sequential:顺序地向Vuser分配数据。
· Random:当测试开始运行时,“随机”方法为每个Vuser分配一个数据表中的随机值。
· Unique:为每一个Vuser的参数分配一个唯一的顺序值。在这种情况下必须确保表中的数据对所有的Vuser和它们的迭代来说是充足的。如果拥有20个Vuser并且要进行5次迭代,则测试者的表格中必须至少包含100个数值。
“Update value on”定义的是什么时候更新数据值,备选项有每次迭代,每次出现和一次。
表 LoadRunner参数更新方法和数据分配
更新方法 | 数据分配方法 | ||
---|---|---|---|
顺序 | 随机 | 唯一 | |
每次迭代 | 对于每次迭代Vuser会从数据表中提取下一个值。 | 对于每次迭代,Vuser会从数据表中提取新的随机值。 | 对于每次迭代,Vuser会从数据表中提取下一个唯一值。 |
每次出现(仅数据文件) | 参数每次出现时,Vuser将从数据表中提取下一个值,即使在同一次迭代中。 | 参数每次出现时,Vuser将从数据表中提取新的随机值,即使在同一迭代中。 | 参数每次出现时,Vuser将从数据表中提取新的唯一值,即使在同一迭代中。 |
一次 | 对于每一个Vuser,第一次迭代中分配的值将用于所有的后续迭代 | 第一次迭代中分配的随机值将用于该Vuser的所有迭代 | 第一次迭代中分配的唯一值将用于该Vuser的所有后续迭代 |
如果LoadRunner的函数中某个参数不能直接使用LoadRunner参数,那么可以通过lr_eval_string进行转换取到参数的值。 下表给出了select next row和update value on不同的设置,对于LR的参数取值的结果将不同,给出了详细的描述。
Select next row | Update Value on | 实际运行结果 |
---|---|---|
sequential | each iteration | 在某次循环中所有用户取值相同。所有用户第一次循环取第一行值,第二次循环取第二行值 |
each occurrence | 在某次循环中或者脚本中使用参数的地方,所有用户取值相同。脚本中出现要使用参数的话,参数值就更新一次,循环一次值再更新一次。 | |
once | 在所有的循环中所有用户取值相同。所有的用户所有的循环中,只用一个值(即参数中的第一行值) | |
random | each iteration | 不同的用户,在不同的循环次数中,随机取值 |
each occurrence | 不同的用户,脚本中出现要使用参数的话,随机取值一次,循环一次再随机取值一次 | |
once | 不同的用户,不管循环多少次,只随机取值一次。 | |
unique | each iteration | 若选择手工自配参数,那LR按照每用户几个参数先分配参数,然后进行循环。若选择自动分配参数:Controller中edit schedule中run until comletion:按照循环次数先分配第一个VU(例如设置的循环次数为3,那分配给第一个VU 3个参数值),然后接下来的3个参数值分配给第二个VU,依次类推…...Controller中edit schedule中run for:若选择自动分配,LR将按照用户数均分参数,剩余的参数不使用。 |
each occurrence | 只能手工分配用户,给每个用户分配好X个参数后,在脚本中有参数的地方,就使用已经分配好的X个参数。 | |
once | 按照用户数分配给每个用户分配一个参数而已。以后的循环这个用户就使用这一个参数 |
参数化方法:
........
web_submit_form("Login.ashx",
"Snapshot=t3.inf",
ITEMDATA,
"Name=UserName", "Value=chongshi", ENDITEM,
"Name=Password", "Value=123456", ENDITEM,
"Name=VerifyCode", "Value=", ENDITEM,
"Name=auto", "Value=<OFF>", ENDITEM,
EXTRARES,
......
方法一,右键---【Replace with a new parameter】
方法二,菜单【insert】----【new Parameter…】