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不取

转:LoadRunner中参数化技术详解的更多相关文章

  1. 深度学习基础系列(十一)| Keras中图像增强技术详解

    在深度学习中,数据短缺是我们经常面临的一个问题,虽然现在有不少公开数据集,但跟大公司掌握的海量数据集相比,数量上仍然偏少,而某些特定领域的数据采集更是非常困难.根据之前的学习可知,数据量少带来的最直接 ...

  2. P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解

    1.内容概述 P2P即点对点通信,或称为对等联网,与传统的服务器客户端模式(如下图"P2P结构模型"所示)有着明显的区别,在即时通讯方案中应用广泛(比如IM应用中的实时音视频通信. ...

  3. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  4. 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型

    ​关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...

  5. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  6. 《CDN技术详解》 - CDN知多少?

    开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了.或者,知道思路也行,毕 ...

  7. Comet技术详解:基于HTTP长连接的Web端实时通信技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  8. SSE技术详解:一种全新的HTML5服务器推送事件技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  9. Protocol Buffer技术详解(数据编码)

    Protocol Buffer技术详解(数据编码) 之前已经发了三篇有关Protocol Buffer的技术博客,其中第一篇介绍了Protocol Buffer的语言规范,而后两篇则分别基于C++和J ...

随机推荐

  1. Openjudge-计算概论(A)-求特殊自然数

    描述: 一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反.编程求此自然数,并输出显示. 输入为1时,输出此自然数的十进制表达式:输入为2时,输出此自然数的 ...

  2. 使用block函数的基本形式

    以前从未接触过block函数. 如果在.h头文件中定义的形式如下的话: @property (nonatomic, copy) void(^fontValueChangedBlock)(void); ...

  3. HDU - 5455 Fang Fang

    Problem Description Fang Fang says she wants to be remembered.I promise her. We define the sequence  ...

  4. linux脚本Shell之九九乘法表

    说到9*9乘法表,许多朋友在想这是小学二年级就会的东西,不错,确实是这样,那么在linux下,使用shell打印出99乘法表应该如何编写脚本的? 笔者的文档今天就写下来,有需要的朋友可以参考下 代码: ...

  5. 常用的css

    产品鼠标经过加边框效果 .productsCol:hover { box-shadow: 0 0 0 3px #333333 inset; transition: all 0.2s ease 0s; ...

  6. JVM调优总结-调优方法

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪 JProfiler ...

  7. 查看使用了那种shell

    cat /etc/shells  root@OpenWrt:/www/cgi-bin# cat /etc/shells/bin/ash

  8. Django:之Sitemap站点地图、通用视图和上下文渲染器

    Django中自带了sitemap框架,用来生成xml文件 Django sitemap演示: sitemap很重要,可以用来通知搜索引擎页面的地址,页面的重要性,帮助站点得到比较好的收录. 开启si ...

  9. word转pdf swf 在线预览

    来源:http://www.cnblogs.com/wuhenke/archive/2010/08/01/1789750.html 之前在项目中研究使用了一套word转PDF,然后将PDF转成SWF的 ...

  10. 算法:1!+(1!+3!)+(1!+3!+5!) + ( 1! + 3! + 5! + 7! + 9!)+....+(1!+3!+5!+ ... + m!)

    -(void)touchesBegan:(nonnull NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event{ / ...