LoadRunner脚本的参数设置-block篇

一、问题引入:当我们在Run中添加一个Block0,并在Block0中添加需要的Action,同时给Block0设置运行逻辑,比如按顺序运行10次(Run Logic为Sequential,Iterations为10)。如果Block0中的Action含有参数,那么该参数应该如何设置?

   其实参数设置最主要的有三个:Select next row、Update value on和When out of values。其中Update value on的值可选的是Each iteration、Each occurrence和Once。而它们的意思分别如下:

(1)Each iteration是指每次迭代时更新值,但这个迭代其实只针对Run-time Settings中,选项Run Logic的Run的Iterations,对Run中的Block是不起作用的。也就是说,当Run迭代了10次,同时Run中的Block0也迭代10次的时候,每Run一次,会更新一个参数值,而Block0迭代10次时都使用这个参数值,不会再去更新参数值了。也可以这样理解,每一个Block其实相当于我们自己在脚本里面写一个for循环,去循环调用Block中的Action,此时Each iteration当然只对Run有效。

(2)Each occurrence是指每次参数出现时就更新值。

(3)Once是指只取值一次。

显然,在这种情况下,Update value on只能选择Each occurrence。另外当我们选择了unique和Each occurrence后,LR要求我们设置Allocate …values for each Vuser,这个值与虚拟用户数和参数化值有关,例如:设置Allocate 5 values for each Vuser,虚拟用户数是10个,那么参数化的值至少需要50个(前提是选择了unique选项)
二、Each occurrence带来的问题:

1. 问题引入:

当我们在进行某个参数设置时,有时Update value on不得不选择Each occurrence(类似一中所述情况),但是,如果Action中有多个相同的参数时,此时参数会在每次出现就更新值,这不是我们所期望的,应为每次执行Action时,同一个参数的值应该都是一样的,否则实际业务操作将运行失败。

2. 解决方案:

其实解决方法很简单,所有相同的参数以不同名字命名(如,P1,P2,P3…),每个参数指向同一个Dat文件,对参数P1进行相应的设置,接下来其他参数的Select next row选择Same line as P1,这样所有的参数的值的更新机制和P1一样,每次行Action时,同一个参数的值就都是一样了。

三、Dat文件记录读取原理:

Controller在运行时,会首先初始化Vuser脚本,以检查脚本是否有语法错误,以及为各个虚拟用户分配参数值。而分配参数值的时候,本人猜测它是根据需要读取的参数数量循序或者随机读取Dat的记录(一行为一个记录),当记录个数不足时,就会抛出错误提示。因此我们在选择文件源是,就要多加小心,以防止Controller自己“错乱方寸”:

1.不同参数(对应相同的列)对应的Dat文件要不同,若想指向同一文件,则参数设置“Select next row”应选择“Same line as…”

2.不同Vuser脚本不要使用同一个Dat文件。

 

最近做的项目中刚好用到这个,具体如图所示:

设置两个block,每个block中的Action均有batchCode参数,且batchCode的值在每个blcok中至少使用20多次,如图所示:

我的需求:block迭代n次,按照参数列表的batchCode参数取值,每次迭代更新,但在同一次迭代中仅使用同一个batchCode值。

因为参数列表的值更新仅针对外部迭代(即run的迭代有效),对block迭代是无效的,所以按照上面文章中的方法,新增多个参数值,均指向同一个data文件,即batchCode的data文件,将block中的Action的batchCode处变更为p1,p2,p3...  设置1个参数的更新方式为Each occurrence,其他参数均Same line as…”,则可以实现上面我的需求。

脚本调试过程中发现的小问题及解决办法:

1. block第二次迭代并没有变更为新值。具体是:

如果指在上面web_url()处写成batchCode2,而第二个batchCode2变更为p1,则到block的第二次迭代并没有变更为新值。添加输出语句,设置断点调试后发现,web_url()处并没有作为参数值输出,即第一个参数实际上是第二行的batchCode2,。

参数如图所示:

 

虽然麻烦了点,但做出的脚本能符合业务需要,心里还是比较高兴的。关于block的action参数取值,暂时还没有想到更好的办法,希望有兴趣者能提供更简便的方法。

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Runtime-Setting参数详解General / Run Logic 选项卡 主要用来设置运行时脚本迭代的次数,迭代次数只对run部分的脚本迭代次数有影响,而对int和end部分并没有影响。一般设置为1~3次,只会影响在单位时间内客户端向服务器提交的HTTP请求数,其他的没有影响。 Number of Iterations:说明的是反复循环的次数。 常境的时间中,如果时间设为5分钟,而实际上程序的运行只需要1分钟,而在这项中,选择的是1次的话,那程序就运行完一次后,就不会再运行。相同的,如果在这一项中选择的是3次的话,那程序在运行后第一次后,还会再运行第二次,第三次。也就是说,在规定的时间和循环次数中,程序Run模块的运行不超过规定时间时,那程序Run模块会运行到规定的时间,不设定时间也可以进行循环。    Insert Action:为模块Init, Run和End再添加Action。 Insert Block:为模块Init, Run和End添加阻碍。添加第一次为Block0,子目录为:No Actions;添加第二个为Block1,子目录为:No Actions,以此为推。 Delete:删除。删除每个模块下的Action Move Up:移动下面的模块到上一层 Move Down:移动下面的模块到下一层 。 Properties:确定Run logic中各Action的循环顺序和Iterations次数。 一个Run中可以添加多个Action和多个Block,一个BLock中可以添加多个Action。 如何在一个脚本中实现不同事务不同次数的循环呢? 案例:假如你想在一个脚本中,实现登录执行1次,查询执行2次,插入执行3次,怎么办? 录3个Action脚本,我们只需要设置3个Block,每个Block中分别插入一个Action,设置执行次数分别为1,2,3就可以了; 另Block的properties。这里有两种选择,Sequential和Random,分别代表顺序执行/随机执行下属的Action

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值