LoadRunner参数化中参数迭代规则详解

合集下载

LoadRunner使用说明

LoadRunner使用说明

LoadRunner使用说明一、概述LAODRUNNER8.1 作为专业的性能测试工具,通过模拟成千上万的用户对被测应用进行操作和请求,在实验室环境中精确重现生产环境中任意可能出现的业务压力,然后通过在测试过程中获取的信息和数据来确认和查找软件的性能问题,分析性能瓶颈.LOADRUNNER提供了三个大主要模块,这三个模块既可以作为独立的工具分别完成各自的功能,又可以作为LOADRUNNER的一部分彼此衔接,与其他模块共同完成软件性能的整体测试.这三大模块主要是:Ø VITUAL USER GENERATOR--------用于录制脚本ØMERCURY LOADRUNNER CONTROLLER---------用于创建,运行和监视场景ØMERCURY LOADRUNNER ANALYSIS--------用于分析测试结果;二、LOADRUNNER8.1 安装 LAODRUNNER8.安装过程比较简单,只需按系统的提示一步一步操作就可以了,这里对安装过程中的一些要点进行简要的说明.Ø安装类型安装盘内有两个盘片,MERCURY LOADRUNNER8.1和MECURY LOADRUNNER 8.0ADD-INS.前者包括了LR安装程序及常用组件,后者全部为组件,各组件的作用在安装盘中都有详细的提示.Ø LICENSE 类型LICENSE类型说明如下:PERMANENT 永不过期的LICENSE;TIME LIMITED 限定了使用的起始时间和使用周期;TEMPORARY 从安装后开始计算,限定了使用的天数;VUD-BASED 限定了虚拟用户数量PLUGGED 需要DONGLE,也就是HARDWARE KEY,DONGLE在中国被音译为“狗”,主要是防止软件被盗用Ø RPM和WEB SERVER之间的鉴权如果在安装时选择安装REMOTE PERFORMANCE MONITOR SERVER,LOADRUNNER会弹出一个要求输入用户名和密码的对话框,REMOTE PERFORMANCE MONITOR SERVER是一个远程监视场景的服务器,为测试人员提供WEB化的场景页面,用于实现多台及其通过浏览器同时在线监视场景.这里设定用户名和口令的目的主要是为了REMOTE PERFORMANCE MONITOR(RPM)和运行了IIS的WEB SERVER之间进行鉴权.在RPM安装完毕之后,只有在LOADRUNNER CONTROLLER的RPM用户配置对话框中输入指定的用户名和口令,系统才能允许进行远程监控.Ø设定LOADRUNNER GENERATOR如何登陆到CONTROLLERLOADRUNNER提供了两种方式让LOAD GENERATOR的虚拟用户登陆到CONTROLLER,n ALLOW VIRTUALUSERS TO RUN ON THIS MACHINE WITHOUT USER LOGINn MANUAL LOG IN TO THE LOAD GENERATOR MACHINE三、使用VITUAL USER GENERATOR录制开发脚本LOADRUNNER脚本的开发过程一般需要以下几个过程Ø使用LOADRUNNER的VIRTUAL USER GENERATOR录制基本的测试脚本;Ø根据系统需求编辑测试脚本,看能否通过,Ø在单机模式下运行脚本看能否通过,1.选择协议要想正确的选择LOADRUNNER的脚本协议,首先要从LOADRNNER的工作原理上深入理解协议的作用和意义。

LoadRunner中的迭代

LoadRunner中的迭代

通过用lr做负载压力测试过程发现,如果设定不同的action迭代次数,每次得出的结果是不同的,曲线的表现形式也是不同的。

这点就使我们会感觉困惑,为什么要设置action 的迭代次数?以及对于不同的应用系统应该怎样设置迭代次数呢?首先你要理解性能测试是在干什么?性能测试是模拟系统一段时间内真实的压力情况,以考察系统的性能。

再看怎么模拟系统真实的压力情况?比如在半个小时内,用户都在进行登录操作,且平均分布在这半个小时内。

我们要做的是什么?模拟这半个小时用户的行为。

怎么模拟?估算出同时操作的人数,并用LoadRunner不断的发送登录请求,这就是我们为什么要迭代。

至于迭代次数,只要能够模拟出真实情况,多少次都无所谓,不过10次8次估计是模拟不出来。

迭代次数至少要保证压力达到一个稳定值后再运行一段时间,这样我们得到的数据才是有效的。

所以我们除非是特别要求,一般不用迭代次数,而是用运行时间。

1,迭代和并发,是完全不同的概念。

没有什么关系。

比如,一个用户迭代十次,还是一个用户的压力。

10个用户执行一次,就是10个用户的压力。

10个用户迭代10次,还是10个用户的压力。

但他们都和参数化的数据有关系(也要看参数化是如何设置的,以及系统如何判断提交值的)。

2,你要是想知道,LR是如何实现迭代和并发:说一个比较容易理解的层面:迭代就是不停的反复调用同一脚本,反复执行,注意,对1个用户执行10次来说,只会分配一块内存。

10个用户执行一次,是调用同一脚本10次,会分配10块内存。

LR调用脚本,编译后,运行,按脚本发送数据。

比如:web_url这样的函数,执行就会发HTTP request。

如果你还想知道更细节的进程和函数的实现,只能侧面验证(具体方法看各人的能力和擅长),因为我们都不是LR的开发者。

3,太显然的问题了,参数化时选择每次出现唯一,只要参数够用就OK,不够用,就设置相应的规则。

action在场景运行中iteration只对其起作用,对vuser_init和vuser_end都不起作用,action是一个可以被重复使用的最小单位其实你可以将所有脚本录制到一个action里,只是不方便管理罢了。

详细分析LoadRunner参数化

详细分析LoadRunner参数化

详细分析LoadRunner参数化在进⾏⽹页的性能测试时,对⽹页的登录界⾯进⾏压⼒测试情况下就会使⽤到多⽤户进⾏登录,就需要对登录名和密码进⾏参数化,那么loadrunner 怎么参数化设置呢?下⾯我们来详细分析⼀下。

⼀、我们这⾥通过loadurnner录制⼀个软件⾃带的航空⽹站登陆。

下⾯是截取的登录代码⼆、下⾯通过loadrunner对⽤户名和密码进⾏参数化设置。

1、双击jojo,右击选择Replace with a Parameter,弹出窗⼝Select or Create Parameter,在 Parameter name处输⼊变量名name,点击OK,密码重复名字的操作。

2、把⽤户名jojo改成变量name,密码bean改成变量psw三、下⾯对参数进⾏编辑添加。

第⼀种⽅法是直接在界⾯上添加编辑。

1、点击P图标或者按键盘ctrl +L 进⼊参数化设置界⾯,2、点击name进⾏编辑变量参数,点击Edit with Notepad,弹出记事本框,输⼊好⽤户名后,保存后,参数就设置完成了。

密码也是重复名字的操作。

3、也可以在界⾯上直接编辑,添加⾏、列或者删除⾏、列4、参数都添加后之后,我们要注意每个参数对应的名称5、也可以把所有的参数编辑在⼀个⽂件⾥⾯,⼀列对应⼀个参数。

6、当参数放在在⼀个⽂件⾥⾯时,设置处就要⼀⼀对应。

四、第2种⽅法对参数进⾏编辑添加,就是直接导⼊已编辑好了的数据。

1、在⽂件处选择已经编辑好的数据⽂件位置,点击打开后,⽂件111.dat的数据就⾃动导⼊进来了。

五、设置好参数后,就可以设置数据取值⽅式与更新⽅法。

1、Select next row: 选择下⼀⾏⽅法Sequential默认顺序的,按照参数化的数据顺序,从上往下⼀个⼀个的来取。

Random随机取,参数化中的数据,每次随机的从中抽取数据。

Unique唯⼀,唯⼀的向下取值,只能被⽤⼀次。

Same line as xxx,和xxx列取同⼀⾏的值,(⾏相同)步调⼀致例如:数据a b c d e f g ...,现有3个⽤户(甲⼄丙)取值;循环2次。

LoadRunner-迭代和并发设置

LoadRunner-迭代和并发设置

LoadRunner-迭代和并发设置
迭代:指运⾏⼀次脚本时某段代码块(action)循环执⾏的次数,串⾏执⾏
并发:指同时运⾏脚本的次数,并⾏执⾏(多个⽤户同时跑)
以下是⽤例和对应的相关设置
Iterations是在Vuser Generator的Run-time Setting中进⾏设置
Quantity是在Controller Scenario中进⾏设置
其余是在Parameter List 中进⾏设置
1.select next row:参数值取值的顺序
Sequential(顺序),Random(随机),Unique(唯⼀)三个选项;如果要求使⽤不同的账号登录则设置为Unique;
如果构造的账号数不够⼜对⽤户是否相同不做要求,则可以设置Sequential,参数调到最后⼀列后再从第⼀列开始调⽤。

2.update value on : (什么事件)触发参数取值更换
each iteration:进⼊⼀个迭代更换⼀次参数值;(sequential时)每个迭代不同⽤户使⽤相同参数值(不管并发是多少);(unique时)每个迭代不同⽤户使⽤不同值
each occurence :脚本中每次变量出现就换⼀个新值,谨慎⽤,⽤于账号肯定不⾏。

(⽐如user1登录user2权限操作)
once:只取⼀个值(不管并发和迭代是多少)。

LoadRunner之并发用户数与迭代关系

LoadRunner之并发用户数与迭代关系

Q1:
例如在LR里,要测100个用户同时并发登陆所用时间,是不是在录制好脚本后,需要参数化“用户名”,“密码”以及在那个记事本里构造100个真实的用户名和密码?然后运行Controller,设置用户数为100?
A:说的是对的。

但是测并发数的时候,本身就是模拟的虚拟用户,所以认为不一定非要参数化100个用户,用一个用户跑100遍也是可以的。

当然这样进行设置的话更符合实际情况。

Q2:那么这里的迭代次数该怎么设啊,设成1和设成10有什么区别啊?搞不清测试并发用户,“迭代”和“并发用户数”(就是controller里设的虚拟用户数)的区别。

A:
迭代次数如果设置为1,那么你的脚本就只跑100遍(续Q1),如果你设置为100,那么当你设置并发数为100,那么脚本就要跑100*100=10000 遍。

当然这种情况是在没有设置Conrtoller中的durantion,如果设置了这个场景的持续时间,那么你运行的场景时间就以这个时间结束为准,和迭代次数就没有关系了。

Q3:假如用LR测100个用户同时注册一个网站的帐号,参数化了100个用户名和密码,那么跑一遍脚本,并跑通了,并在controller里也run了一遍,那么这100个新增帐号是不是就真在数据库里添加了啊?
A:是的,如果脚本没问题的话,那么数据库里肯定会有100条记录的。

可以自己查看数据库,或者访问你录制的脚本网站,都能看到相应的记录。

Q4:对于并发数更多的情况下呢,例如并发数是1000,那是不是应该在多个机器上运行才可以阿?
A:不一定啊,如果你有条件的话,当然多台机器运行得出的结果更为准确,但是用LR如果是录制web应用程序的话,最大并发数可以到10000的。

Loadrunner参数的取值方式

Loadrunner参数的取值方式

根据取值方式以及数据分配方式进行组合,将产生九种取值方式。

Select Next Row 【选择下一行】Update Value On【更新时的值】Replay Result【结果】顺序(Sequential)每次迭代(Each i t eration)结果:分别将15条数据写入数据表中功能说明:每迭代一次取一行值,从第一行开始取。

当所有的值取完后,再从第一行开始取如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条顺序(Sequential)每次出现(Each occurrence)结果:分别将15条数据写入数据表中功能说明:每迭代一次取一行值,从第一行开始取。

当所有的值取完后,再从第一行开始取如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条顺序(Sequential)只取一次(once)结果:表中写入15条一模一样的数据。

功能说明:每次迭代都取参数化文件中第一行的数据。

随机(Random)每次迭代(Each i t eration)结果:表中写入15条数据,但可能有重复数据出现功能说明:每次从参数化文件中随机选择一行数据进行赋值随机(Random)每次出现(Each occurrence)结果:表中写入15条数据,但可能有重复数据出现功能说明:每次从参数化文件中随机选择一行数据进行赋值随机(Random)只取一次(once)结果:表中写入15条相同数据功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。

唯一(Unique)每次迭代(Each i t eration)结果:分别将15条数据写入数据表中自动分配块大小功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。

注:如果设置迭代次数为16次。

结果:在执行第16次迭代时会抛异常,异常日志可在LoadRunner的回放日志(replayLog)中看到。

LoadRunner中Action的迭代次数的设置和运行场景中设置

LoadRunner中Action的迭代次数的设置和运行场景中设置

LoadRunner中Action的迭代次数的设置和运⾏场景中设置LoadRunner中Action的迭代次数的设置和运⾏场景中设置 是怎么重复迭代和怎么增加并发运⾏的呢? 另外,在参数化时,对于⼀次压⼒中均只能⽤⼀次的资源应该怎么参数化呢?就是说这些资源⽤了⼀次就不能在⽤了的。

--参数化时,在select next row选择unique,update value on选择 each occurence, 1. 迭代跟虚拟⽤户数没什么必然联系 迭代是这样的: 迭代1次迭代2次迭代3次 ⽤户1 X1 X2 X3 ⽤户2 Y1 X2 Y3 其中的X1-3 Y1-3是参数,参数规则就是⼆楼说的 这么两个⽤户是根据你的rump up 上来的,⽐如5秒上两个⽤户,那么⽤户1和2就在5秒之内加载进来的,不知道说清楚了没。

第⼆个问题就简单了,只能⽤⼀次的参数,⾸先确保你的参数⾜够,另外规则选择的时候,注意选择唯⼀ 迭代次数只是对你设置了迭代次数的action进⾏迭代,⽽⽤户数可以理解为对整个录制过程的迭代(只是各个⽤户不同) ⽽且增加并发量可以通过增加⽤户来达到 还可以设置集合点来增加某个操作的并发量 假如⼀个脚本,设置最⼤并发量为10,每5秒中增加2个并发⽤户,⽽Action设置的迭代为10次: 当开始⾄2秒时,加载了2个⽤户,这2个⽤户分别开始运⾏,并都运⾏10次,不管这个2个⽤户运⾏10次是否结束,当下⼀个2两秒到来时,即开始⾄第4秒时⼜加载了2个⽤户,这2个⼜运⾏10次;就这样⼀直加载到10个并发⽤户,然后当每个⽤户都运⾏完10次时就结束。

这样中间最⼤并发是10个,但不⼀定能达到10个,因为在加载最后⼏个时,前⾯的有可能已经运⾏结束,所以如果要真正达到最⼤并发10就必须设置集合点来完成 不过也不⼀定⾮要设置集合点才能实现同时处在running的状态有10个⽤户。

设置duration也是可以的。

loadrunner参数化详解

loadrunner参数化详解
rows delimeter for log display
每次迭代遇到该参数时,取出的参数后加入什么值,与rows per iteration
配合使用
例如:rows per iteration设置为2
此处设置为分号
运行后显示的结果为
aa:a;b
bb:a;b
例如:rows per iteration设置为3
参数

结果
总结
第一次迭代
第二次迭代
第三次迭代
select next row
sequential
aa:a
aa:c
aa:b
顺序的取参数列表中的值
在一次迭代过程中如果再次遇到该参数时,所取得值是下一个值
在第二次迭代的时候会顺序取下一个值,所有取得值不会重复
update value on
each occurrence
bb:b
bb:a
bb:c
第三种设置
参数

结果
总结
第一次迭代
第二次迭代
第三次迭代
select next row
sequential
aa:a
aa:a
aa:a
不论迭代几次,无论在一次迭代中第几次遇到该参数均使用一个值
update value on
each once
bb:a
bb:a
bb:a
lr_message("bb:%s",lr_eval_string(bb));
return 0;
}
前提:
对aa,bb进行参数化,使用同一个参数列表
参数类型为table
脚本迭代次数为3次
参数列表为:
a
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教程贴士:多次使用同一参数,而且没有什么关联,例如随机数。

Each Occurrence
每次遇到参数就进行更新。

多次使用同一参数,而且没有什么关联,例如随机数。

Each Iteration
每次迭代时发生更新。

如果参数出现几次,虚拟用户用同一个数值。

适用同一个关联的参数。

Once
所有的地方都用同一个数值,包括所以的迭代。

文件类型参数分派方法
Sequential
按照顺序访问。

更新方式
Sequential
例子
1.
Each Iteration
所有用户每次迭代同时取下一个数值。

All the Vusers use Kim in the first iteration, David in the second iteration, Michael inthe third iteration, etc.
2.
Each Occurrence
所有用户每次遇到同时取下一个数值,即使在同一个迭代。

All the Vusers use Kim in the first occurrence, David in the second occurrence,Michael in
the third occurrence, etc.
3.
Once
所有用户第一次迭代时同时取第一个值,该用户所有的子迭代值不变。

If you specified Once, all Vusers take Kim for all iterations.
例子:
First Name
Kim
David
Michael
Jane
Ron
Alice
Ken
Julie
没有足够的值,从第一行开始重新取值。

Random:每个虚拟用户开始运行时安排随机的数值。

更新方式
Random
1.
Each Iteration
每次迭代时,随机从数据表中取数。

2.
Each Occurrence
每次遇到随机取一个数值,即使在同一个迭代。

3.
Once
第一次迭代时随机取值,改用户所有的子迭代值不变。

Unique
The Unique method assigns a unique sequential value to the parameter for
each Vuser.
更新方式
Unique
例子
1.
Each Iteration
每个用户每次迭代时,虚拟用户取下一个不同的数值。

If you specified Each Iteration, for a test run of 3 iterations, the first Vuser takes Kim in the first iteration,David in the second, and Michael in the third. The second Vuser takes Jane, Ron, and Alice. The third Vuser,Ken, Julie, and Fred.
2.
Each Occurrence
每个虚拟用户每次遇到取一个新的不同的数值,即使在同一个迭代。

lr自己决定。

3.
Once
每个第一次迭代时取不同值,该用户所有的子迭代值不变。

If you specified Once, the first Vuser takes Kim for all iterations
the second Vuser takes David for all iterations, etc.
数据必须足够,例如20个虚拟用户,5次迭代,至少要有100个数据。

相关文档
最新文档