如何在一个脚本中实现不同事务不同次数的循环呢?
案例:假如你想在一个脚本中,实现登录执行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就可以了。
对于支持多Action的Vuser,可以把一个脚本的Action import到另外一个脚本中。当然必须保证这两个import的脚本Vuser类型是相同的。注意,被import的Action中的有关参数也一同被improt。选择被import的脚本,然后选择被import的Action。步骤如下:
1、 选择“Action”>“Import Action into vuser”,会显示对话框,提示选择脚本。
2、 选择要import的Action,单击确定按钮。
3、 生成一个新的Action,名为Imported_Action,函数都被import在此中。
在“Run-time Settings”>“Run Logic”中调整Action的运行策略。
打开“Run-time Settings”(运行时设置)对话框,然后选择“General”下的“Run logic”节点,
(1)迭代次数(Number of Iterations):迭代的次数。将按指定的次数重复执行所有Actions,但不会重复Vuser脚本的vuser_init和vuser_end部分。
需要注意的是,如果在Controller的计划设置中指定了方案持续时间,则持续时间设置将覆盖Vuser迭代设置。这意味着,如果将持续时间设置为5分钟(默认设置),Vuser将在5分钟内按照需要继续运行任意多次迭代,即使运行时设置仅指定一次迭代。
另外:若Block里Action中的代码里有思考时间,即使在Run Time Setting里选中了“Ignore think time”也不会影响Block里Action中的思考时间;因为Block里的逻辑优先级比较高。
(2)操作块(Block):操作块是脚本内函数的组合。每个块都有自己的单独属性设置,包括顺序、迭代和权重。可以通过单击“Properties”设置Block的属性。
顺序(Sequence):可以设置块内脚本的操作顺序。有两种方式:按顺序和随机执行操作。
迭代(Iteration):除了为整个Run部分设置迭代次数以外,还可以设置单个操作或操作块的迭代。该设置非常有用,例如,可以用来模拟一个商业站点,你在该站点执行了多个查询查找某个产品,但只进行了一次采购。
提示:操作块(Block)是Vuser脚本的操作组。这是VU为用户提供的一个很贴心的功能。
比如在一个银行转账系统中,系统提供多个业务,有查询、转账、储蓄等业务,但每个业务被执行的概率可能会不一样。在这种情况下,我们可以把查询设为Block1,转账设为Blcok2,储蓄设为Block3,各个Block的Iteration属性体现了它们的概率分配,同时“登录”和“注销”操作是这三个Block所共有的。这样,执行一次脚本,就执行了所有的业务。当然,如果VU没有Block功能,我们也可以使用脚本C语言的循环机制来实现。有兴趣的朋友可以思考一下如何做。
4、 运行脚本。验证Action确实按照我们在Run-time Settings中的设置运行。
提示:运行时设置(Run-time Settings)
VU中有运行时设置(Run-time Settings),而Controller在运行时也同样有一个运行时设置。这两个运行时设置虽然看起来是一样的,但其实并不出自一处,而是分别存储在各自的环境下。VU的