一、为什么要进行参数化

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

二、是否必须要做参数化

参数化可以尽量不用做,但是以下两种情况需要做参数化

1、插入数据时,数据库字段要求是唯一的。

2、避免走数据库的查询缓存。比如:每次都用同一个用户登录,页面展示该用户的信息,每次登录都跑同一个sql语句,执行第一次以后就被保存到数据库的缓存当中,后面再用该用户登录就不会去数据库里面查询了,而是直接从缓存里面取出来。这样就少了sql语句的解析过程,后面每次执行就会快一些。但是线上真实的情况不可能是同一个人一直在不断的登录,而是不同的用户在登录,所以这种情况也是必须要做参数化的。

三、怎么进行参数化

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

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

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

数据类型:

序号

参数类型

说明

1

Date/Time

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

2

Group Name

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

3

LoadGeneratorName

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的数据文件

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

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

四、文件参数化取值策略

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

假设一个dat文件中有多列值,Selectcolumn中设置取值的标识:by number是按第一列、第二列、第三列的方式取列值;by name是按列名取值。File format中column定义分列方式,是按逗号,tab还是空格;First data定义取值从列表的第几行开始取值,默认是第一行。

与参数取值方式相关的设置有三个:

1、Select next row:下次取值怎么取

(1)Sequential:按照顺序一行行的取值。每一个虚拟用户都会按照相同的顺序读取

(2)Random:在每次迭代里随机的读取一个,但是在循环中一直保持不变

(3)Unique :每个VU取唯一的值

除此之外还有一个Same Line As ,可以设置和前面定义的参数取同行的记录。通常用在有关联性的数据上面。比如做登录测试的脚本时,每个用户的密码都不同,就可以这样定义:创建参数文件,共两列username、passwd,则设置完username的取值方式后passwd设成 same line as username。

2、Update value on:碰到什么情况去更新这条数据

(1)Each iteration :每次迭代都要取新值。从action头运行到action尾叫一次迭代。

(2)Each occurrence :每次出现重新取值,如果一个action中该参数多次出现,每遇到一个就要重新取一个值

(3)Once :取一次之后再也不变了

3、When out of value:值不够的情况如何取值

Unique实际上是压力测试中更为常用的设置。如果Select next row选择unique的设置,每个数据只会用一次,当调用的次数或迭代次数超过值的个数时就可能会报错。when out of value可以选择当数值个数不够的情况系统改如何取值。

(1)Abort Vuser:停止测试

(2)Continue in a cyclic manner:循环取值,再重新开始新一轮的unique取值

(3)Continue with last value:沿用最后一个值

五、举例说明

1、单用户多次循环

Action里面username出现2次,password出现一次

username(1,2,3,4,5)

password(a,b,c,d,e)

(1)Sequential + Each iteration

第1次循环:1,1,a

第2次循环:2,2,b

。。

。。

第5次循环:5,5,e

第6次循环:1,1,a

(2)Sequential + Each occurrence

第1次循环:1,2,a

第2次循环:3,4,b

第3次循环:5,1,c

第4次循环:2,3,d

第5次循环:4,5,e

(3)Sequential + Once

第1次循环:1,1,a

第2次循环:1,1,a

。。

第5次循环:1,1,a

第n次循环:1,1,a

(4)Unique + Each iteration + Continue with last value

第1次循环:1,1,a

第2次循环:2,2,b

。。

第5次循环:5,5,e

第n次循环:5,5,e(会提示值已经用完,但依然会执行下去,沿用第5次的取值)

(5)Unique + Each iteration + Continue in a cyclic manner

第1次循环:1,1,a

第2次循环:2,2,b

。。

第5次循环:5,5,e

第6次循环:1,1,a   (值取完后又循环开始取)

第7次循环:2,2,b

(6)Unique + Each iteration + Abort Vuser

第1次循环:1,1,a

第2次循环:2,2,b

。。

第5次循环:5,5,e

第6次循环:报错并停止运行

(7)Unique + Each occurrence + Continue with last value

第1次循环:1,2,a

第2次循环:3,4,b

第3次循环:5,5,c  (这一步第二个username取值会提示值已经取完)

第4次循环:5,5,d  (username值已经取完,一直提示)

第5次循环:5,5,e  (username值已经取完,一直提示)

第6次循环:5,5,e  (username和password值都取完了,这一步三个取值都提示值已经取完)

(8)Unique + Each occurrence + Continue in a cyclic manner

第1次循环:1,2,a

第2次循环:3,4,b

第3次循环:5,1,c  (username值取完又循环开始取)

第4次循环:2,3,d

第5次循环:4,5,e

第6次循环:1,2,a  (username和password值都取完,都开始循环取)

(9)Unique + Each occurrence + Abort Vuser

第1次循环:1,2,a

第2次循环:3,4,b

第3次循环:5,报错,第二个username取值时报错,并停止运行

(10)Unique + Once

第1次循环:1,1,a

第2次循环:1,1,a

。。

第5次循环:1,1,a

第n次循环:1,1,a

2、多用户循环取值(Unique)

Action只有一个username,出现两次

多个用户并发的时候,每个用户都是独立取值的,任何用户取值都不会影响到其他用户。但是,有一种情况是除外。Select next row选择Unique时,LoadRunner会预先将参数值分配给每个用户,分配给A用户的值B用户就不能再用,分配给B用户的值A用户也不能用,参数值都是被用户独占的。下面我们来举例说明:

(1)Unique + Each iteration + Continue with last value

    三个用户A、B、C,循环3次:

    username(1,2,3,4,5,6)

因为配置写的是给每个用户分配2个值。LoadRunner预先将1,2分配给了A用户,3,4分配给了B用户,5,6分配给了C用户

A用户第一次循环:1,1

A用户第二次循环:2,2

A用户第三次循环:2,2  (值取完了之后每次都取最后一个)

B用户第一次循环:3,3

B用户第二次循环:4,4

C用户第三次循环:4,4  (值取完了之后每次都取最后一个)

C用户第一次循环:5,5

C用户第二次循环:6,6

C用户第三次循环:6,6  (值取完了之后每次都取最后一个)

(2)Unique + Each occurrence + Continue with last value

    三个用户A、B、C循环3次

    username(1,2,3,4,5,6,7,8,9,10,11,12)

因为配置写的是给每个用户分配4个值。LoadRunner预先将1,2,3,4分配给了A用户,5,6,7,8分配给了B用户,9,10,11,12分配给了C用户

A用户第一次循环:1,2

A用户第二次循环:3,4

A用户第三次循环:4,4      (值取完了之后每次都取最后一个)

B用户第一次循环:5,6

B用户第二次循环:7,8

C用户第三次循环:8,8      (值取完了之后每次都取最后一个)

C用户第一次循环:9,10

C用户第二次循环:11,12

C用户第三次循环:12,12  (值取完了之后每次都取最后一个)

(3)Unique + Once

    三个用户A、B、C,循环3次:

    username(1,2,3,4,5,6)

自动分配,LoadRunner预先将1,2分配给了A用户,3,4分配给了B用户,5,6分配给了C用户

A用户第一次循环:1,1

A用户第二次循环:1,1

A用户第三次循环:1,1

B用户第一次循环:3,3

B用户第二次循环:3,3

C用户第三次循环:3,3

C用户第一次循环:5,5

C用户第二次循环:5,5

C用户第三次循环:5,5

3、多用户循环取值(Sequential&Random)

Select next row 选择Sequential和Random时,所有用户的取值都不受其他用户的影响。

username(1,2,3,4,5,6,7,8,9,10)

假如有三个用户A、B、C,三个用户都可以在1~10当中取值,不存在独占的情况。取值的规律是和单用户一样的,这里就不再介绍了。

4、练习

银行流水号参数化,要求:1000人的并发,运行15分钟,tps为1000。参数化如何设置

分析:

1、参数化所需数据总数:1000*15*60=900000

2、每个用户分配数据条数:900000/1000=900,这里我们给每个用户多给100个数即1000,那上面的总数应该是1000*1000=1000000

3、银行流水号是不能重复的,所以要选Unique

具体设置如下:

六、其他参数类型介绍

1、Random Number

2、Vuser ID

3、Date/Time

LoadRunner之参数化的更多相关文章

  1. 转:LoadRunner中参数化技术详解

    LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提 ...

  2. Loadrunner进行参数化

    Loadrunner进行参数化 Loadrunner中进行参数化,这里有三种方法. 对需要多次使用的变量进行参数化,比如登录信息的用户名和密码,首先需要选中需要参数化的值,然后右键选择Replace ...

  3. Loadrunner中参数化取值方式分析

    Loadrunner中参数化取值依赖两个维度: 1.取值顺序分为“顺序”“随机”“唯一”.    select next row:Sequential , Random,unique 2.更新值时分为 ...

  4. LoadRunner脚本参数化设置

    LoadRunner,是一种预测系统行为和性能的负载测试工具,其中VUG(Virtual User Generator)主要用于虚拟用户生成和脚本编辑.为了实现单用户多次迭代执行脚本,VUG提供了强大 ...

  5. LoadRunner脚本参数化之自动关联和手动关联

    一.关联的意义  1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的 ...

  6. LoadRunner脚本参数化常见错误

    错误代码:Error:missing newline in d:\loadrunner\username.dat 错误原因:场景设置不合理,参数数量不够,或者参数化文件有问题. 1)如果参数化文件反复 ...

  7. LoadRunner的参数化

    好久不用loadrunner,以前的东西又都还给百度了,今天心血来潮,把参数化搞了一下 Action() { web_url("WebTours", "URL=http: ...

  8. Loadrunner中参数化实战(9)-Unique+Once

    参数化数据30条: 脚本如下,演示登录,投资,退出操作是,打印手机号: 首先验证Vugen中迭代: Unique+Once 设置迭代4次Action 结果如下:

  9. Loadrunner中参数化实战(8)-Unique+Each occurrence

    参数化数据30条: 脚本如下,演示登录,投资,退出操作是,打印手机号: 首先验证Vugen中迭代: Unique+Each occurrence 设置迭代4次Action 结果如下:

随机推荐

  1. install-info - 更新 info/dir 项

    SYNOPSIS 总览 install-info [OPTION]... [INFO-FILE [DIR-FILE]] DESCRIPTION 描述 从 Info 目录文件 DIR-FILE 中的文件 ...

  2. 微软宣布全新命令行+脚本工具:PowerShell 7

    DOS 逐渐退出历史舞台后,Windows 一直内置着 CMD 命令行工具,并在 Windows 7 时代升级为更强悍的 PowerShell,不仅可以执行命令行,更可以执行各种高级脚本,还能跨平台. ...

  3. spring boot 2.0(三)使用docker部署springboot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  4. UI控件Telerik UI for ASP.NET MVC全新发布R2 2019 SP1

    Telerik UI for ASP.NET MVC拥有使用JavaScript和HTML5构建网站和移动应用所需的70+UI部件,来满足开发者的各种需求,提供无语伦比的开发性能和用户体验.它主要是针 ...

  5. chrome获取页面element的xPath

    chrome真的是强大的工具 1.在chrome打开的页面点击F12,进入开发者模式 2.点击弹出的开发者工具左上角的跟踪箭头,再点击需要跟踪的页面元素,html程序定位到元素在程序中位置 3.选中的 ...

  6. Vue项目的痛点

    前言 用Vue做项目,难免会有痛点,移动端还是PC端,我也总结了下关于问题: 进入详情页的传参问题. 服务器接口跨域 axios封装请求 UI库的按需加载 如何只在当前页面中覆盖ui库中组件的样式 定 ...

  7. C语言做的句柄程序

    以vs2015为例---创建对话框程序  一直下一步,下一步,到最后 通过一个小型程序诸如 microsoft spy++我们可以获悉,窗口中失效按钮的句柄为0x00040AE8,由此我们可以给句柄发 ...

  8. python+selenium封装UI自动化框架

    seleinum框架 框架的思想:  解决我们测试过程中的问题:大量的重复步骤,用自动化来实现    1)配置和程序的分离    2)测试数据和程序的分离    3)不懂编程的人员可以方便使用:使用的 ...

  9. BZOJ 4289: PA2012 Tax Dijkstra + 查分

    Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...

  10. BZOJ 5004: 开锁魔法II 期望 + 组合

    Description 题面:www.lydsy.com/JudgeOnline/upload/task.pdf Input Output 一般概率题有两种套路: 满足条件的方案/总方案. 直接求概率 ...