loadrunner参数化总结

Select next row:Sequential,Rondom,Unique
Update value on:Each iteration,Each occurrence,Once
下面分别对这两种取值情况组合介绍


一、Sequential与Update value on各个选项的组合情况:


  1.Sequential+Each iteration
    说明:此组合是在每次迭代时,顺序循环取值,即迭代次数超过参数个数时,循环取值


1.当此组合放在vuser_init函数中时,取Action第一次迭代的值
2.当此组合放在Action函数中是,取值为顺序取值(fromFirst->toLast->fromfirst),可以从ReplayLog中,以“Starting iteration”
 为标志
3.当此组合放在vuser_end函数中时,取Action最后一次迭代的值


    总结:vuser_int函数包含在Action的第一次迭代中,而vuser_end函数包含在Action最后一次迭代中,此组合只受迭代的影响。


  2、Sequential+Each occurrence
    说明:此组合是在每次发生参数取值时,就会更新参数值,同样是顺序取值。


此组合的特点是取值与迭代无关,不管是在vuser_init(),Action(),vuser_end()中,只要发生取值,就会从参数列表中顺序循环取
值。


  3、Sequential+Once
    说明:这种组合比较简单,对于整个脚本来说参数值只取一次,再也不会更新,且与脚本迭代无关。




二、Random与Update value on各个选项的组合情况:
  1.Random+Each iteration
    说明:每当一次新的迭代开始(以Starting iteration为标志),从参数列表中取一次随机值。


    总结:与“Sequential+Each iteration”这中情况相同,vuser_int函数包含在Action的第一次迭代中,而vuser_end函数包含在Action最后一次迭代中,只受迭代的影响。
 唯一的不同点:每次取值方式不同。


  2.Random+Each occurence
    说明:每当取一次参数值时,从参数列表中取一次随机值。


    总结:取值情况与“Sequential+Each occurrence”类似,
 唯一不同点:此组合每次取值方式是随机从参数列表中读取的,而前者每次取值是顺序循环的方式读取值。


  3.Random+Once
    说明:当第一次取到值时,再也不更新记录


    总结:与“Sequential+Once”类似,唯一不同的是取值方式不同。


三、Unique与Update value on各个选项的组合情况:
    说明:1.Unique取值是一种类似于Sequential的顺序取值方式
   不同点:Unique强调的是取值的唯一性,即当取值遍历完参数列表中的数据时,默认将终止vuser
 
          2.通过When out of values选项可以设置vugen对vuser超出参数列表边界时的处理方式:
1.Abort Vuser:默认是此模式,当参数取值超出参数表记录的条数时,中止当前vuser
2.Continue in a cyclic manner:此方式与“Sequential”完全相同。
3.Continue with last value:当参数取值超出参数表记录的条数时,使用参数列表中最后一个值。
    
    1.Unique+Each Iteration 设置了run上的迭代次数后,按照纪录顺序读取,当纪录超出列表后,执行when out of values策略
    2.Unique+Each occurrence 每当参数取值时,顺序读取参数纪录,当纪录超出列表后,执行when out of values策略
    3.Unique+Once 第一次取值后,一直使用该记录




到这里就把Select next row与Update value on中的各选项组合介绍完毕,在实际应用中可能这些组合还是无法满足我们对参数取值,下面
介绍两个常用函数,手工将参数值下移一位,以Sequential+Each iteration为例。
1.lr_advance_param()
参数列表name中,顺序存储A,B,C,D四个数据,如果想参数在第一次Action迭代中,取得A值后,紧接取得B值,显然依靠之前的9种
组合无法完成,接下来以代码为例,讲解lr_advance_param()的使用。
  代码:Action()
{
lr_eval_string("{name}"); //取值为A
lr_advance_param("name"); //Next row for parameter name,将参数取值下移一位
lr_eval_string("{name}"); //取值为B
return 0;
}


2.lr_next_row()
  代码:Action()
{
lr_eval_string("{name}");     //取值为A
lr_advance_param("name.dat"); //Next row for parameter name,将参数取值下移一位
lr_eval_string("{name}");     //取值为B
return 0;
}


总结:两个函数主要区别在于前者在函数内的参数值是参数名称,后者写的是参数文件名。

原文地址:https://www.cnblogs.com/riasky/p/3435973.html