精华内容
下载资源
问答
  • LoadRunner参数化

    2019-09-18 15:21:41
    LoadRunner参数化 LoadRunner参数化详解

    LoadRunner参数化

    LoadRunner参数化详解

    展开全文
  • Loadrunner参数化

    2019-03-26 22:29:29
    Loadrunner参数化 今天学习了loadrunner的参数化,在这里整理一下,希望对大家有用。 参数化:使用指定数据源中的值来替换脚本录制生成的语句中的参数。 参数化的原因: 1、当所有的用户都输入相同的数据,不能体现...

    Loadrunner参数化

    今天学习了loadrunner的参数化,在这里整理一下,希望对大家有用。

    参数化:使用指定数据源中的值来替换脚本录制生成的语句中的参数。

    参数化的原因:
    1、当所有的用户都输入相同的数据,不能体现出真实的业务环境。
    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
    只要遇到就换值,从第一个开始
    5.唯一+每次遇到:a1 a2 a3,a4 a5 a6
    单用户,顺序和唯一是一样的;
    考虑超过值时,关注block块大小
    对于单用户,无需关注块大小,多用户(控制台)才考虑
    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;

    3.随机+每次迭代:
    VU1:a1 a4 a6 a2 ;
    VU2:a3 a5 a20 a23;
    VU3:a12 a2 a6 a8 ;
    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: a1 a4 a6 a2;
    VU2: a3 a5 a20 a10;
    VU3: a12 a15 a20 a10;
    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: a2 a2 a2 a2;
    VU2: a24 a24 a24 a24;
    VU3: a30 a30 a30 a30;
    10.唯一+每次迭代:(块大小为6)
    VU1: a1 a2 a3 a4;
    VU2: a7 a8 a9 a10;
    VU3: a13 a14 a15 a16;

    展开全文
  • loadrunner参数化

    2012-12-06 18:02:37
    loadrunner如何进行参数化,简述了参数化的方法
  • LoadRunner 参数化

    2017-06-27 23:19:00
    脚本开发遇到的问题: 1)被业务场景所迫: 所有用户都输入相同的数据,不能体现出真实的业务环境。...Loadrunner中提供一种机制帮助解决上述问题, 叫参数化(parameterization) 参数化 LoadRunn...

    脚本开发遇到的问题:

    1)被业务场景所迫: 所有用户都输入相同的数据,不能体现出真实的业务环境。(搜索操作)

    2)被系统体系所迫: 存在缓存,不能体现出真正的性能。

    3)被系统业务约束所迫: 有些系统禁止一个用户多次登陆的系统,也就严重到无法测试的地步 了。

    Loadrunner中提供一种机制帮助解决上述问题, 叫参数化(parameterization)

     参数化

    LoadRunner中的参数化和 函数的参数 不要混淆

    那些能参数化

    大部分情况下只有函数的参数才能参数化,但也不是所有函数的参数都可以参数化。

    需要参数化的:

    1、登陆认证信息

    2、一些和时间相关的,违反时间约束的

    3、一些受其他字段约束的

    4、一些来自于其他数据源(例如数据库的)

    5、其他在运行过程中需要变动的

    Action()
    {
        int i={NewParam}; //错误的参数化
        return 0;
    }
    Action.c (3): undeclared identifier `NewParam'

    参数化方法

    下面演示参数化

    Action()
    {
        web_url("s", 
            "URL=https://www.baidu.com/s?wd=ccc", 
            "Resource=0", 
            "RecContentType=text/html", 
            "Referer=http://www.baidu.com/", 
            "Snapshot=t6.inf", 
            "Mode=HTTP", 
            LAST);
        return 0;
    }

    运行结果

    下面对,kw进行参数化。右键ccc

    这时候参数化后,显示参数化变量。前后大括号在 tool-generaloptions设置。

    设置参数内容:右键参数名

    可添加列,searchtext.dat文件在保存路径下。

    用记事本编辑,记事本最后一定要且只有一个空行。不然lr会报错。

    设置action迭代次数为3.可将每次请求的kw换成数据列中的数据。

    运行将参数输出到log。

    运行结果:

    Action.c(3): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(3): 通知: 参数替换:参数“searchtext”=“bbb”
    Action.c(3): 通知: 参数替换:参数“searchtext”=“aaa”

    2、参数化取值方法

    select next row : 获取下一行数据的方式

       Sequential:顺序

       Random:随机

     

    当参数文件为:

    text
    1
    2
    3
    4
    5

    前面2种对于虚拟用户来讲,都是按以下顺序执行:

    user1:1,2,3,4,5,
    user2:1,2,3,4,5,
    user3:1,2,3,4,5,
    user4:1,2,3,4,5,

       Unique:唯一。这个值,我这个user选了这个参数,其他的user都不能选。

    参数searchtext的值为

    searchtext
    1
    2
    3
    4
    5

    代码

    Action()
    {
        lr_output_message("当前的参数值是:%s",lr_eval_string("{searchtext}"));
        return 0;
    }

    1、选择AbortVuser。Action迭代6次返回结果。超出范围,Vuser被终止。

    Action.c(3): 通知: 参数替换:参数“searchtext”=“5”
    Action.c(3): 当前的参数值是:5
    正在结束操作 Action。
    正在结束迭代 5。
    正在开始迭代 6。
    错误: 参数 'searchtext': 表 'searchtext.dat' 中没有该参数的其他唯一值[唯一范围是 1-5]。根据“When Out Of Values”策略,Vuser 被中止。
    View Code

    2、选择continue in a cyclic manner。Action迭代6次,运行结果:(在迭代第6次时,从头开始)

    正在开始迭代 6。
    警告: 参数 'searchtext': 表 'searchtext.dat' 中没有更多唯一值可用于此参数[唯一范围是 1-5]。根据“When Out Of Values”策略,此参数以循环方式继续至范围的起点。
    通知: 正在获取参数“searchtext”的新值:表 =“searchtext.dat”列 =“0”行 =“1”。
    正在开始操作 Action。
    Action.c(3): 通知: 参数替换:参数“searchtext”=“1
    View Code

    3、选择 continue with last value。Action迭代7次。运行结果(在迭代第6,7次时,用了最后一个value 5):

    正在开始迭代 6。
    错误: 参数 'searchtext': 表 'searchtext.dat' 中没有该参数的其他唯一值[唯一范围是 1-5]。根据“When Out Of Values”策略,参数从范围的最后一个值继续。
    通知: 正在获取参数“searchtext”的新值:表 =“searchtext.dat”列 =“0”行 =“5”。
    正在开始操作 Action。
    Action.c(3): 通知: 参数替换:参数“searchtext”=“5”
    Action.c(3): 当前的参数值是:5
    正在结束操作 Action。
    正在结束迭代 6。
    正在开始迭代 7。
    错误: 参数 'searchtext': 表 'searchtext.dat' 中没有该参数的其他唯一值[唯一范围是 1-5]。根据“When Out Of Values”策略,参数从范围的最后一个值继续。
    通知: 正在获取参数“searchtext”的新值:表 =“searchtext.dat”列 =“0”行 =“5”。
    正在开始操作 Action。
    Action.c(3): 通知: 参数替换:参数“searchtext”=“5”
    Action.c(3): 当前的参数值是:5
    View Code

    4、

     

    update value on : 重新获取下一个参数的时机(条件)

    Action()
    {
        lr_output_message("当前的参数值是:%s",lr_eval_string("{searchtext}"));
        lr_output_message("当前的参数值是:%s",lr_eval_string("{searchtext}"));
        return 0;
    }

    选择 Each iteration每次迭代改变 执行结果

    Action.c(3): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(3): 当前的参数值是:ccc
    Action.c(4): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(4): 当前的参数值是:ccc
    View Code

    选择 Each Occurrence 每次遇到一次 就变一次。执行结果

    Action.c(3): 通知: 正在获取参数“searchtext”的新值:表 =“searchtext.dat”列 =“0”行 =“1”。
    Action.c(3): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(3): 当前的参数值是:ccc
    Action.c(4): 通知: 参数 searchtext = 2 [表 = searchtext] 的下一行。
    Action.c(4): 通知: 正在获取参数“searchtext”的新值:表 =“searchtext.dat”列 =“0”行 =“2”。
    Action.c(4): 通知: 参数替换:参数“searchtext”=“bbb”
    View Code

    选择Once  不管action被迭代多少次都不会变。 这里吧action迭代设置为2的结果如下:

    正在开始迭代 1。
    正在开始操作 Action。
    Action.c(3): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(3): 当前的参数值是:ccc
    Action.c(4): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(4): 当前的参数值是:ccc
    正在结束操作 Action。
    正在结束迭代 1。
    正在开始迭代 2。
    正在开始操作 Action。
    Action.c(3): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(3): 当前的参数值是:ccc
    Action.c(4): 通知: 参数替换:参数“searchtext”=“ccc”
    Action.c(4): 当前的参数值是:ccc
    正在结束操作 Action。
    View Code

     总结:

    1、根据你需要的参数获取方式设置不同的组合,满足你的需求

    2、select next row能随即尽量随机

    3、使用不同用户登录一次使用 Unique + Once模式

    随机数

     

    也可以点击这里进行参数化设置。

    2个参数对应一个文件的不同列

      

    LR自带测试网站 WebTours 注册demo

    Action()
    {
    
        web_url("WebTours", 
            "URL=http://127.0.0.1:1080/WebTours/", 
            "Resource=0", 
            "RecContentType=text/html", 
            "Referer=", 
            "Snapshot=t14.inf", 
            "Mode=HTML", 
            LAST);
    
        web_link("sign up now", 
            "Text=sign up now", 
            "Snapshot=t15.inf", 
            LAST);
    
        web_submit_form("login.pl", 
            "Snapshot=t16.inf", 
            ITEMDATA, 
            "Name=username", "Value={username}", ENDITEM, 
            "Name=password", "Value={password}", ENDITEM, 
            "Name=passwordConfirm", "Value={password}", ENDITEM, 
            "Name=firstName", "Value=f", ENDITEM, 
            "Name=lastName", "Value=l", ENDITEM, 
            "Name=address1", "Value=s", ENDITEM, 
            "Name=address2", "Value=c", ENDITEM, 
            "Name=register.x", "Value=48", ENDITEM, 
            "Name=register.y", "Value=10", ENDITEM, 
            LAST);
    
        return 0;
    }
    View Code

    参数化和变量的区别

    1)参数作用域远远大于局部变量,在一个action中的参数可以再另一个函数使用,而局部变量不行,除非是全局 变量。

    参数和变量的转换

    1)参数转换成变量 lr_eval_string   读取参数的值

    2)变量转换成参数 lr_save_string  创建参数。可以将变量写入参数。

    Action()
    {
        int a =10;
        char name[]="lr";
        lr_output_message("变量的取值是:%d",a);
        lr_output_message("参数的取值是:%s","{output}");
        lr_output_message("参数的取值是:%s",lr_eval_string("{output}"));
        lr_save_int(a,"p");
        //lr_save_string(name,"p");
        lr_output_message("参数的取值是:%s",lr_eval_string("{p}"));
        return 0;
    }
    Action.c(5): 变量的取值是:10
    Action.c(6): 参数的取值是:{output}
    Action.c(7): 参数的取值是:1
    Action.c(10): 参数的取值是:10
    View Code

    从数据库里提取数据

    需要配置ODBC

     

    转载于:https://www.cnblogs.com/milanmi/p/7085499.html

    展开全文
  • Loadrunner 参数化

    2016-09-18 10:52:25
    1.选择你要参数化的内容,点击右键,选择“replace with a parameter” 2.输入参数的名字和类型,点击properties,进行详细设计,参数类型可选择 怎样连接mysql数据库,需要先安装mysql数据库驱动,点击Data ...

    1.选择你要参数化的内容,点击右键,选择“replace with a parameter”

    2.输入参数的名字和类型,点击properties,进行详细设计,参数类型可选择


    怎样连接mysql数据库,需要先安装mysql数据库驱动,点击Data wizard








    展开全文
  • loadrunner 参数化

    2015-11-12 12:10:54
    1. 新建参数化的几种方式: (1)在脚本中选中变量名,然后鼠标右键,选择“替换为参数”; (2)插入>新建参数; (3)点击参数图标,进入参数设置; 2. 参数之间的关联方式: (1)在参数设置"选择下一行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,154
精华内容 461
关键字:

loadrunner参数化