1.Controller-Edit Schedule-Initialize all Vusers before Run
这是Controller中一个很有用的功能,why?正如该选项下面括号中所说,选择这个选项意味着,只有当所有的Vusers都到达Ready状态,才能开始Run。那究竟有什么用处呢?
案例1:测试500人并发测试登录,不选择这个这个选项,系统会按照默认的每次50个Vusers进行初始化,如果,系统吞吐能力很强的话,观察Running Vusers中的Running曲线,会呈现出一种缓慢上升,到达一个最高点,平缓一段时间,然后下降的曲线。然而,查找最高点的值,它肯定小于500。这样,根本达不到500并发的目的。
案例2:有3个脚本,如:登录100;查看工资条100;修改信息集200;想在同一个场景下同时并发操作。不选这个选项,直接执行。你看到了什么?一个脚本都有执行完的了,而其他的还有没开始的呢。还怎么并发啊?
2.设置“ThinkTime”
“ThinkTime”顾名思义-思考时间。它效仿真实用户在实际操作过程中的等待时间。也就是说,实际用户在浏览网页,操作B/S系统的时候,不可能像机器一样不停的点啊点,在操作和操作之间会有一定的间隔。如:你浏览网页,打开一个或几个网页后,你会阅读,读过之后才会继续打开新网页。你阅读时所消耗的时间就是Think Time。对于服务器来说,这段时间是没有压力的。
我们做性能测试,很多时候就要模拟这种状态。例如:某系统,要求满足100用户同时在线操作,响应时间在5秒。如果不设置Think Time,我觉得,你的测试是失败的。大家想想为什么?答案将在文章的结尾揭晓。
下面我来讲解一下LR中Think Time的设置。
设置Think Time有两种方式,一种是使用Record think time在录制过程中根据实际等待时间自动的写入脚本。另一种是在脚本录制结束后手动加入到脚本中。接下来我们详细介绍。
自动:
位置及操作:Recording Option-Advanced:勾上Record think time,这样在你录制的时候,Think Time就会自动添加入你的脚本。需要注意的是,后面还有一项Think time threshold,它的作用是定义你所要录制的Think Time的最小时间。举个例子,如果你把这个值设置为5秒,那么如果录制过程中等待的时间小于5秒,那么就不会在脚本中记录这个Think Time。
手动:
位置及操作:脚本中任何你想要插入的地方。注意,不要将Think Time插入到你定义的事务当中,否则,测出的事务时间需要减去Think Time的时间呦。操作:在你想要插入Think Time的地方,右键,Insert-New Step在Time To Think () second在空中填写你为想要设置的时间。也可以在脚本中直接写函数lr_think_time();
添加好后,我们在Run-time Settings中设置执行的策略。
位置:Run-time Settings-Think Time。进入后,我们会看到两个选项。Ignore think time:忽略think time,也就是即使你添加了think time,脚本执行的时候也不会理睬,忽略不执行。Replay the think time:下面还有3个子项。As recorded:按照录制的执行。不用多说。Multiply recorded think time by:这就是我录制的think time乘一个系数。如,你录制的think time是4秒,在这里设置2,最后执行时就会按4秒×2=8秒来执行。如果你想要执行2秒,就在这里填0.5。Use random percentage of the recorded think time:这里随机设置一个百分比,并规定上下限。如,录制的think time为4秒。Min为50%,Max为200%。那么执行的时候它就会从2秒到8秒内随机取一个数来执行。Limit think time to:为think time设置一个上限,不管上面的如何设置,执行的时候,取值都不会操过这个上限。
讲到这里,think time的设置大家应该很明白了。不知道让大家思考的问题是否想通了。需求说的是100用户同时在线操作,注意,是在线!大家想想,100人在线肯定有人在操作,也有人只是在线,没有对服务器发出任何请求。如果不设置think time,相当于100人并发操作,每个人都不停的向服务器发送请求,这比需求的压力可是大很多的呦~
3.Vugen和Controller中都有Run-time Settings,那么它们有什么区别呢?
其实它们里面的内容和实现的功能完全一样,区别主要在用法上。
1.在Vugen中设置Run-time Settings,单独运行脚本,会按照Vugen里的设置运行。
2.如果在Controller中加载Vugen,Controller中的Run-time Settings会和加载Vugen中的完全相同。
3.如果Vugen已经被加载,修改Vugen中的设置,Controller不会自动更新,需要重新加载。
4.如果Vugen已经被加载,修改Controller中的设置,Vugen不会别更改。
5.如果Vugen已经被加载,修改Controller中的设置,并保存Controller。下次打开Controller的时候,Controller中Run-time Settings的设置会跟Controller保存前一致,不管Vugen的设置是否改动。
总之,只要Vugen被Controller加载,就以Controller中的Run-time Settings设置为准。
4.如何在一个脚本中实现不同事务不同次数的循环呢?
案例:假如你想在一个脚本中,实现登录执行1次,查询执行2次,插入执行3次,怎么办?录3个脚本?每个事务分别在脚本中复制N次?
当然不用,LR早就想到了你的需求,下面让我们隆重推出Block。
位置:
Run-time Settings--General--Run Logic
操作:
1.将你所要考察的事务设置在不同的Action内。
2.在Run Logic中的Run中删掉默认的Action。
3.在Run中插入Block。
4.在插入的Block中再插入我们要考察的Action。
5.设置Block的properties。这里有两种选择,Sequential和Random。如果选择Sequential,在下面的Iteration中直接填入数值,那么Block中的Action都会按输入的次数执行。如果选择Random,下面的properties还可以设置Block内各Action执行的百分比。
按照我们前面的案例,我们只需要设置3个Block,每个Block中分别插入一个Action,设置执行次数分别为1,2,3就可以了。