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中并发用户和迭代次数的问题
=========================
集合点
事务开始:上传文件
ftp连接
ftp上传文件
ftp断开连接
事务结束;上传文件
事务开始:将记录添加到数据库
添加到数据库的代码
事务结束:将记录添加到数据库
==================================
我是这样设置的,在action中参数化了10个用户,迭代次数也是2
问题1:假如我要测试10个并发用户,场景中是否设置5个用户就可以实现10个并发呢?
问题2:在场景中设置20个并发用户的话,我的参数只有10个,运行时会怎样执行呢?
问题3:假如我要模拟不允许同一个用户上传同一个文件2次,是否我的并发人数是多少,就要设置多少参数呢?
那参数化时,是否就是用户是一个文件,
文件的信息:文件名,文件描述,文件类型是一个文件。
然后将用户设置为取值唯一,
如果这样的话,一个用户是否只能上传一个文件了?
麻烦大家了,我是刚开始学的。。。
问题2:参数的取值方式,在参数属性中进行设置;
问题3:如果只是不允许同一个用户上传同一个文件2次,而不同的用户可以上传相同的文件,则只需将用户进行参数化,并设置取值方式为唯一。
如果不同的用户也不允许上传相同的文件,则需要将上传的文件也参数化,并设置取值方式为唯一。
lr参数化——多个用户取同一条数据(500户并发迭代1次 循环取5条数据)问题
lr参数化——500户并发迭代1次 循环取5条数据
lr参数化——500户并发迭代1次 循环取5条数据
比如vuser1、vuser2、vuser3..........,vuser500
shuju1,shuju2,shuju3,shuju4,shuju5
想实现vuser1取shuju1,vuser2取shuju1,vuser3取shuju1,vuser4取shuju1,vuser5取shuju1..........vuser100取shuju1。
vuser101取shuju2,vuser102取shuju2,vuser103取shuju2,vuser104取shuju2,vuser105取shuju2..........vuser200取shuju2
。。。。。。。
vuser401取shuju5,vuser402取shuju5,vuser403取shuju5,vuser404取shuju5,vuser405取shuju5..........vuser500取shuju5
或者
vuser1取shuju1,vuser2取shuju2,vuser3取shuju3,vuser4取shuju4,vuser5取shuju5,
vuser6取shuju1,vuser7取shuju2,vuser8取shuju3,vuser9取shuju4,vuser10取shuju5。。。。。。。
方法1、造数据,把5条数据中每条都复制成100条,总共500条,唯一就可以了
---------------------
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:只取一个值(不管并发和迭代是多少)
controller中多用户并发时候,每个用户使用完参数化中的数据不在重复使用且每个用户不使用相同参数化数据的方法
工作中经常遇到标题中这样的情况,看到群里也经常有人问,操作很简单,如下:
select next row:Unique(唯一)
说明:每个Vuser取的参数都不一致,确保数据唯一性。
Upate value on:Eachinteration(每次迭代)
说明:每次遇到参数都取一个新值,如果在脚本的一次迭代中,该参数出现两次,那么两次都取不同的值。
如图设置,每次每个用户取不同的值,保证每个用户使用的流水号数据唯一
loadrunner中并发数与迭代的区别
录制脚本时只会有1个虚拟用户,1个虚拟用户可以有多次 迭代,也就是 重复执行 Action里面的内容,在场景设置的时候,如果你说的10时在runtime-setting的Run Logic里面设置的,那就是1个虚拟用户 迭代 10次,并且要求你设置的场景Duration的类型为Run until Completion 时,这个设置才会起作用,如果Duration的类型是Run
for
<时间>, 这个意思就是1个用户在这段时间内不停执行Action里面的操作。
追问:
不是那个意思,我知道迭代,好像在参数化的时候,在table里面要设置几个虚拟用户的用户名和密码,在场景设计的时候有10个,不知道这两个之间的区别,那在录制脚本的时候比如要多用户的登录,在哪里设置用户数?
回答
用户登录的流程是不是把 用户名和密码提交到服务器,每个用户的用户名不一样吧?所以你录制1个用户的登录,然后把这个用户的操作复制多个,然后把复制的用户名和密码都改成唯一的,是不是就有多个用户了。loadrunner里面的1个虚拟用户就是1个线程(或者进程),然后把每个线程里面的用户名改成不同的,启多个线程,就是多个用户了。你在写脚本的时候就是创建1个源文件(被复制的对象),controller的作用就是复制多个线程,复制的线程的用户名就是从你table里面取出来的。录制脚本就是创建第一个源文件的过程,controller是多个用户并发的时候。你可以先看一下loadrunner的用户手册
那么首先要说,在场景下面无论是一个用户还是多个用户,都是去读脚本,如果没有设集合点,这些用户完全是各自跑各自的,随机地跑完同一脚本。第一个问题如果设置时间很短,虚拟用户也会跑完脚本再停止,也不会报错。
在脚本里面设置参数的时候可以设置变量在迭代方式上怎么取值,也可以设置不同用户都是怎么去取值(用户和用户之间没什么关系)假设是M个用户,脚本迭代N次,那么在跑场景的时候(假设场景设置用户跑完场景就停止),每一个用户都会去跑一遍脚本(一个脚本迭代N次action);如果场景设置5分钟,则M个用户自己跑自己的,跑够五分钟,然后最后一次脚本跑完,就停止了。
追问
并发用户数,我可不可以在采集的时候理解为最大的允许vuser值
回答
某个脚本设置的vuser值, 可以理解为这个业务场景的并发用户数,但如果要测试具体某个业务的并发操作, 那就需要设置集合点, 而且集合点数目不能大于vuser值.
问题1:LoadRunner是怎么重复迭代和怎么增加并发运行的呢?
问题2:另外,在参数化时,对于一次压力测试中均只能用一次的资源应该怎么参数化呢?就是说这些资源用了一次就不能在用了的。
--参数化时,在
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也是可以的。不过那就不只每个用户运行10次了。
如果想实现用户迭代10次,并且想同时running为10个用户,就应该设置集合点。
迭代(Iterate)设计,或者我们称之为增量(Incremental)设计的思想和XP提倡的Evolutionary Design有异曲同工之妙。