• 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;
    }


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

  • 相关阅读:
    ES6解构之复杂数据
    QQ音乐API-借他人之力实现我的音乐盒
    canvas 简易的加载进度条
    File System 之本地文件系统
    File System 定额(配额查询)
    window.btoa 和 window.atob
    Web App、Hybrid App与Native App
    函数节流和函数防抖
    javascript瀑布流
    protobuf的使用(netty传输多种对象类型)
  • 原文地址:https://www.cnblogs.com/riasky/p/3435973.html
Copyright © 2020-2023  润新知