LoadRunner之参数化
一、为什么要进行参数化
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之参数化的更多相关文章
- 转:LoadRunner中参数化技术详解
LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提 ...
- Loadrunner进行参数化
Loadrunner进行参数化 Loadrunner中进行参数化,这里有三种方法. 对需要多次使用的变量进行参数化,比如登录信息的用户名和密码,首先需要选中需要参数化的值,然后右键选择Replace ...
- Loadrunner中参数化取值方式分析
Loadrunner中参数化取值依赖两个维度: 1.取值顺序分为“顺序”“随机”“唯一”. select next row:Sequential , Random,unique 2.更新值时分为 ...
- LoadRunner脚本参数化设置
LoadRunner,是一种预测系统行为和性能的负载测试工具,其中VUG(Virtual User Generator)主要用于虚拟用户生成和脚本编辑.为了实现单用户多次迭代执行脚本,VUG提供了强大 ...
- LoadRunner脚本参数化之自动关联和手动关联
一.关联的意义 1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的 ...
- LoadRunner脚本参数化常见错误
错误代码:Error:missing newline in d:\loadrunner\username.dat 错误原因:场景设置不合理,参数数量不够,或者参数化文件有问题. 1)如果参数化文件反复 ...
- LoadRunner的参数化
好久不用loadrunner,以前的东西又都还给百度了,今天心血来潮,把参数化搞了一下 Action() { web_url("WebTours", "URL=http: ...
- Loadrunner中参数化实战(9)-Unique+Once
参数化数据30条: 脚本如下,演示登录,投资,退出操作是,打印手机号: 首先验证Vugen中迭代: Unique+Once 设置迭代4次Action 结果如下:
- Loadrunner中参数化实战(8)-Unique+Each occurrence
参数化数据30条: 脚本如下,演示登录,投资,退出操作是,打印手机号: 首先验证Vugen中迭代: Unique+Each occurrence 设置迭代4次Action 结果如下:
随机推荐
- java 约瑟夫问题
题目: 给定一个数组及数组的长度,另外给定一个数m,从数组的第一个元素出发,数到第m个元素出列(如果到最后则回到第一个元素).出列元素的值作为m的新值,从出列元素的下一元素继续开始数下去,直到所有元素 ...
- hbase权限控制
HBase的权限管理依赖协协处理器.所以我们需要配置以下参数: hbase.superuser=hbase hbase.coprocessor.region.classes=org.apache.ha ...
- Big Data(四)关于Hadoop的HA&CAP理论详解
问题 思路: 主从集群:结构相对简单,主与从协作 主:单点,数据一致好掌握 问题: 单点故障,集群整体不可用 压力过大,内存受限 解决方案 单点故障: 高可用方案:HA(High Available) ...
- C#.net中的rank方法
string[,] abcd = new string[2, 4];abcd[0, 0] = "a";abcd[0, 1] = "b";abcd[0, 2] = ...
- winmm.dll包含函数
DLL 文件: winmm 或者 winmm.dll DLL 名称: Windows Multimedia API 描述: winmm.dll是Windows多媒体相关应用程序接口,用于低档的音频和游 ...
- [工具] BurpSuite--Scanner功能
BurpSuite--Scanner功能 0x00 配置 Scanner有四个选项 Result -- 展示扫描结果 Scan queue -- 显示扫描的队列 Live scanning -- 我们 ...
- Nginx静态文件服务器配置方法
在Java开发以及生产环境中,最常用的web应用服务器当属Tomcat,尽管这只猫也能够处理一些静态请求,例如图片.html.样式文件等,但是效率并不是那么尽人意.在生产环境中,我们一般使用Nginx ...
- 使用bitmap实现对一千万个无重复的正整数(范围1~1亿)快速排序
1 Bytes(字节) == 8 bit 1 KBytes == 1024 Bytes 思路: 1)申请长度为1亿的保存二进制位的数组 a, 2)通过位运算,将整数做为索引,将数组a对应的索引位置为1 ...
- POJ 2528 Mayor’s posters (线段树段替换 && 离散化)
题意 : 在墙上贴海报, n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000).求出最后还能看见多少张海报. 分析 ...
- Luogu P3408 恋爱
题目链接:Click here Solution: 设f[x]表示要使x向它的父亲写信需要花的最少的钱,per[x]为要使x向它的父亲写信最少要多少人 则\(f[x]=\sum_{i=1}^{per[ ...