zoukankan      html  css  js  c++  java
  • 转:LoadRunner中参数化技术详解

    LoadRunner中参数化技术详解

    LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入。这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求。

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

    【好处】

    l  减少脚本的大小

    l  提供使用不同的值执行脚本的能力,更加真实的模拟现实应用。

    【参数化步骤】

    l  用参数替换Vuser脚本中的常量值

    l  为参数设置属性和数据源

    【操作步骤】

    1. 在脚本中选择需要参数化的内容,单击鼠标右键,从弹出菜单中选择Replace with a parameter。

    2. 在弹出的对话框中设置参数名称、参数类型。

    3. 单击对话框中的Properties按钮,可以设置参数数据池中的内容以及参数的取值方式。

    数据类型:

    序号

    参数类型

    说明

    1

    Date/Time

    在需要输入日期、时间的地方,可以用Date/Time来代替,可以选择日期格式,也可进行定制。

    2

    Group Name

    该类型的参数用执行脚本的VU所属组的名称来替代。但是在VuGen中运行时,该值为None。

    3

    LoadGenerator Name

    LoadRunner使用该虚拟用户所在的Load Generator机器名来代替参数。

    4

    Iteration Number

    LoadRunner使用该测试脚本当前循环的次数来代替参数

    5

    Random Number

    随机数,可以设置产生随机数的范围

    6

    Unique Number

    唯一值来代替参数

    7

    Vuser ID

    LoadRunner使用该虚拟用户的ID来代替参数值,该ID是由Controller来控制的,在VuGen中运行脚本时,该值为-1.

    8

    DataFile/Table

    可以在属性设置中编辑文件,添加内容,也可以从数据库中提取数据。

    9

    UseDefinedFunction

    从dll的简单函数中获取信息替代参数

    【注意】对于参数类型为File/Table的数据文件:

    l  在参数数据显示区中,最多只显示前100条数据,之后的不显示,但不影响正常取数据。

    l  在记事本中编辑参数数据时,数据文件一定要以一个空行结束,否则,最后一行输入的数据不会被参数所使用。

    对于参数类型为File/Table的参数的更新方式:

    Update Value on

    (更新方法)

    Select next row

    (数据分配方法)

    Sequential顺序

    Random随机

    Unique唯一

    Each Iteration(每次迭代)

    对于每次迭代,Vuser会从数据表中提取下一个值

    对于每次迭代,Vuser会从数据表中提取新的随机值。

    对于每次迭代,Vuser会从数据表中提取下一个唯一值。

    Each Occurrence(每次出现)

    参数每次出现时,Vuser将从数据表中提取下一个值,即使在同一迭代中。

    参数每次出现时,Vuser将从数据表中提取新的随机值,即使在同一迭代中。

    参数每次出现时,Vuser将从数据表中提取新的唯一值,即使在同一迭代中。

    Once(一次)

    对于每一个Vuser,第一次迭代中分配的值,将用于所有后续的迭代。

    第一次迭代中分配的随机值将用于该Vuser的所有迭代。

    第一次迭代中分配的唯一值将用于所有的后续迭代。

    举例:

    假设存在: 
    数据:A、B、C 
    虚拟用户:Vuser1、Vuser2、Vuser3 
    脚本中参数出现三次,脚本迭代三次
    怎样取下一行数据? 
    Sequential:顺序,所有虚拟用户按照顺序读取数据表 
    Random:随机,所有虚拟用户随机形式读取数据表 
    Unique:唯一,所有虚拟用户每次各取一值(不重复)
    什么时候访问数据表完成数据更新? 
    Each iteration:每次迭代以后 
    Each occurrence:每次出现参数 
    Once:每出现一个虚拟用户

    实例: 
    顺序 
    Sequential + Each iteration 
    第一次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取A 
    第二次迭代 无论参数任何时候出现 Vuser1、Vuser2、Vuser3 取B 
    第三次迭代 无论参数任何时候出现Vuser1、Vuser2、Vuser3 取C
    Sequential + Each occurrence 
    第N次迭代 参数第一次出现 Vuser1、Vuser2、Vuser3 取A 
    第N次迭代 参数第二次出现 Vuser1、Vuser2、Vuser3 取B 
    第N次迭代 参数第三次出现 Vuser1、Vuser2、Vuser3 取C
    Sequential + Once 
    第N次迭代 无论参数任何时候出现 Vuser1取A Vuser2取B Vuser3取C

    所有用户均取A
    随机 
    Random + Each iteration 
    第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C,本次迭代不再更新 
    第N次迭代 无论遇到该参数多少次 Vuser2都只取A,或者B,又或者C,本次迭代不再更新 
    第N次迭代 无论遇到该参数多少次 Vuser3都只取A,或者B,又或者C,本次迭代不再更新 
    在N+1次迭代,每个Vuser重新随机抽取数据

    Random + Each occurrence 
    第N次迭代 第一次遇到该参数 Vuser1、Vuser2、Vuser3在A、B、C中随机抽取一个 
    第N次迭代 第二次遇到该参数 Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个 
    第N次迭代 第三次遇到该参数 Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个 
    在N+1次迭代,每个Vuser继续保持每遇到一次参数就重新抽取一次数据
    Random + Once 
    第N次迭代 无论遇到该参数多少次 Vuser1都只取A,或者B,又或者C 
    第N次迭代 无论遇到该参数多少次 Vuser2都只取A,或者B,又或者C 
    第N次迭代 无论遇到该参数多少次 Vuser3都只取A,或者B,又或者C 
    在N+1次迭代,每个Vuser不会重新抽取数据
    唯一 
    注意:使用该Unique类型必须注意数据表有足够多的数。 
    比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。
    因此以下例子在数据表中加入数据D、E、F、G、H、I。
    Unique + Each iteration 
    第一次迭代 无论参数出现多少次 Vuser1取A Vuser2取D Vuser3取G 
    第二次迭代 无论参数出现多少次 Vuser1取B Vuser2取E Vuser3取H 
    第三次迭代 无论参数出现多少次 Vuser1取C Vuser2取F Vuser3取I
    Unique + Each occurrence 
    第一次迭代 第一次出现该参数 Vuser1取A Vuser2取D Vuser3取G 
    第一次迭代 第二次出现该参数 Vuser1取B Vuser2取E Vuser3取H 
    第一次迭代 第三次出现该参数 Vuser1取C Vuser2取F Vuser3取I
    Unique + Once 
    无论进行多少次迭代 无论参数任何时候出现 Vuser1取A Vuser2取B Vuser3取C 
    数据D、E、F、G、H、I不取

  • 相关阅读:
    ajax 请求登录超时跳转登录页的示例代码
    [WPF]实现密码框的密码绑定
    Linq系列(5)——表达式树之案例应用
    idea设置内存大小
    idea右下角显示使用内存情况
    idea打开Run Dashboard
    java的byte[]与String相互转换
    java有包名的调用没有包名的类,用反射
    【转】查看电脑显卡型号及显卡性能
    idea关闭sonarLint自动扫描
  • 原文地址:https://www.cnblogs.com/lci05/p/3952342.html
Copyright © 2011-2022 走看看