zoukankan      html  css  js  c++  java
  • Loadrunner--参数化知识点及参数池策略

    一、为何进行脚本参数化?
    脚本在录制的时候,记录的参数都是常量值,这样,虚拟用户在执行同一个脚本,向服务器发送请求时,使用的都是同一个参数值,与实际不符。所以使用参数化技术。
    二、参数化的逻辑?
    对脚本中的常量进行参数化,让不同的VU在执行相同的脚本时,分别使用参数数据源中的不同数据来代替这些常量,从而达到模拟多用户真实使用系统的目的。
    三、脚本参数化的步骤?
    1.确定需要参数化的数据
    2.准备数据
    3.参数化
    四、如何进行参数化?

    1、把需要参数化的用户名选中,右击鼠标,选中replace with a parameter,如下图-44所示:

    Loadrunner中参数化设置 - 王小白 - 王新宇的博客

    图-1

    2、把参数名称改为username,如下图-45所示:

    Loadrunner中参数化设置 - 王小白 - 王新宇的博客

    图-2

    3、选中要参数化的密码,右击鼠标,选中replace with a parameter,如下图-46所示:

    Loadrunner中参数化设置 - 王小白 - 王新宇的博客

    图-3

    4、把参数名称改为passwd,如下图-47所示:

    Loadrunner中参数化设置 - 王小白 - 王新宇的博客

    图-4

    5、参数化的代码为下图-48所示:

    Loadrunner中参数化设置 - 王小白 - 王新宇的博客

    图-5

    五、参数池策略

    1.select next now(取值方式 ? who?)

    (1)顺序:对于每个VU,都是从第一行开始,顺序(依次)向下取值--------每个VU取值序列相同
    (2)唯一:对于每个VU,从第一行开始,唯一的依次向下取值--------每个VU取值序列不同
    规律:如果是单用户,顺序和唯一的取值序列相同
    (3)随机:每个VU都可随机取值,可重复
    (4)和XX步调一致:和XX参数取值行相同
    2.Update Value on(如何取? when?)
    (1)每次迭代:每次脚本循环(Action)时更新参数值
    (2)每次遇到:脚本运行时,只要遇到即更新参数值(每次遇到=每次迭代次数*n(n表示脚本Action中参数出现的次数))
    规律:对于单用户,如果脚本中某参数只出现一次,每次迭代和每次遇到的取值序列相同
    (3)只取一次:一次取值,从不改变
    说明:Once整个过程不改变;Random:任意取值
    (4)out of value(越界策略--参数池策略不够时unique)
    <1>放弃VU:直接放弃该虚拟用户,会报错
    <2>以循环的方式继续:循环从第一行开始
    <3>以最后一个值继续:一直使用最后一个值

    =================================================================================

    参数池策略练习:
    题目一:某参数现有备份数据a1,a2,a3...a30;Action中实现3次for循环;脚本迭代2次(不打开控制台),完成以下结果:
    1.顺序+每次迭代:a1 a1 a1,a2 a2 a2
    每次迭代时换值,每次迭代使用3次
    2.唯一+每次迭代:a1 a1 a1,a2 a2 a2
    单用户,顺序和唯一是一样的;迭代时换值
    3.随机+每次迭代:a12 a12 a12,a9 a9 a9
    每次迭代取随机值
    4.顺序+每次遇到:a1 a2 a3,a4 a5 a6
    只要遇到name就换值,从第一个开始
    5.唯一+每次遇到:a1 a2 a3,a4 a5 a6
    单用户,顺序和唯一是一样的;
    考虑超过值时,关注block块大小
    对于单用户,无需关注块大小,多用户(控制台)才考虑
    改为:外循环5次(run-time setting),内循环10次(for循环)
    要准备充足的数据
    when out value:
    1.Abort Vuser放弃VU:报告出错
    Action.c(7): Error: Parameter 'name': No more unique values for this parameter in table 'name.dat'
    [unique range is 1-30]. The Vuser is aborted according to "When Out Of Values" policy.
    2.continue in a cyclic manner继续从头再来:不会出错,正常取值
    3.continue with last value持续最后一个:结果正常,日志报错
    Action.c(7): Error: Parameter 'name': No more unique values for this parameter in table 'name.dat'
    [unique range is 1-30].The parameter continues with last value of the range according to "When Out Of Values" policy.
    6.随机+每次遇到:a13 a19 a2,a27 a30 a4
    一共遇到2*3=6次,随机取值
    7.顺序+一次:a1 a1 a1,a1 a1 a1
    8.唯一+一次:a1 a1 a1,a1 a1 a1
    9.随机+一次:a8 a8 a8,a8 a8 a8
    题目二:某参数现有备份数据a1,a2,a3...a30;脚本迭代4次;3个VU;完成以下结果:
    1.顺序+每次迭代:<重要>
    VU1:a1 a2 a3 a4;
    VU2:a1 a2 a3 a4;
    VU3:a1 a2 a3 a4;
    2.唯一+每次迭代:(无特殊说明,块大小自动分配)<重要>
    VU1:a1 a2 a3 a4;
    VU2:a5 a6 a7 a8;
    VU3:a9 a10 a11 a12;
    从第一行开始取值,每个VU都不同;每个VU迭代4次,取值4次(默认块大小为4)
    3.随机+每次迭代:<重要>
    VU1:a11 a15 a3 a27;
    VU2:a5 a10 a7 a22;
    VU3:a21 a11 a15 a12;
    4.顺序+每次遇到:
    VU1:a1 a2 a3 a4;
    VU2:a1 a2 a3 a4;
    VU3:a1 a2 a3 a4;
    5.唯一+每次遇到:(块大小为6)<重要>
    VU1:a1 a2 a3 a4;
    VU2:a7 a8 a9 a10;
    VU3:a13 a14 a15 a16;
    6.随机+每次遇到:
    VU1:a9 a15 a3 a17;
    VU2:a5 a17 a6 a22;
    VU3:a21 a11 a2 a12;
    7.顺序+一次:<重要>
    VU1:a1 a1 a1 a1;
    VU2:a1 a1 a1 a1;
    VU3:a1 a1 a1 a1;
    每个VU取值一样,都从第一个开始
    8.唯一+一次:<重要>
    VU1:a1 a1 a1 a1;
    VU2:a2 a2 a2 a2;
    VU3:a3 a3 a3 a3;
    从第一个开始,每个VU唯一向下取值,每个VU取值后不变
    9.随机+一次:<重要>
    VU1:a4 a4 a4 a4;
    VU2:a16 a16 a16 a16;
    VU3:a9 a9 a9 a9;
    10.唯一+每次迭代:(块大小为6)
    VU1:a1 a2 a3 a4;
    VU2:a7 a8 a9 a10;
    VU3:a13 a14 a15 a16;

  • 相关阅读:
    nodejs微服务健康检查方案
    RabbitMQ inequivalent arg 'durable' for exchange 'csExchange' in vhost '/': received
    python 虚拟环境
    gulp-babel使用
    node-schedule定时任务
    微信小程序分包(附微信小程序开发学习手册)
    抖音、腾讯、京东、阿里等大厂性能优化方案总结(含项目实战分析及视频)
    微信小程序绘制二维码(附微信小程序开发学习手册)
    【纯干货分享】拒绝卡顿,揭秘盒马鲜生 APP Android 短视频秒播优化方案
    碰壁五次!我闭关28天啃完这些书,再战拿下腾讯,爱奇艺,小红书,快手等10家大厂!化身offer收割机!
  • 原文地址:https://www.cnblogs.com/wxinyu/p/7688087.html
Copyright © 2011-2022 走看看