转:loadrunner参数化

上一篇 / 下一篇  2013-11-27 20:27:19 / 个人分类:loadrunner

Loadrunner录制脚本及执行的过程中,经常会用到变量参数化来进行一些不同组合及唯一性值的设定,对于Loadrunner参数化的文章也很多,在此也不在繁述,今天我们就探讨下如何更高效的进行Loadrunner参数化,以更好的提高工作效率。

 

 

很多人在接触参数化时,都多少有这这样的困扰:我的参数化设置执行结果和我预期的结果有很大区别!在很多系统中对数据唯一性要求很高的话,我们会经常碰到这样的情形:我的脚本成功执行完毕,但是到后台一查数据却发现,数据没有执行进入系统,这样的测试案例根本无法对系统性能进行评估。

 

 

首先我们先看一下再Loadrunner参数管理器中的2个设定项select next rowupdate value on,很多朋友在刚开始接触参数化时会对这2个设定项产生混淆,我们可以从2个特定的维度和覆盖角度进行理解:

 

 

Select next row是针对于所有vu的取值方式进行限定的,此指标是针对于全局的

 

Update value on是针对每一个用户每一次循环过程中如何更新值进行限定的

 

 

根据上面的定义,我们来逐个对这2个设定项内的选项进行说明

 

Select next row

 

Sequential:所用用户分配相同参数,以顺序方式进行分配

 

Random:所有用户分配随机参数,以随机方式进行分配

 

Unique:所有的用户分配不同参数,以顺序方式进行分配

 

Update next row

 

Each iteration:当前循环内值不变

 

Each occurrence:当前循环内只要触发就进行值的更新

 

Once:执行过程中不更新(即在脚本执行前进行取值,然后在执行过程中均取该值)

 

 

然后我们就可以根据这样的句式来理解参数分配的方式:当脚本开始时,为< --select next row -- >,在< -update next row -- >。通过这样的方式对在执行过程中参数分配方式可以有更直观的理解;

 

 

下面我对以上的选项做一个排列组合,供大家参考

 

 

Sequential

Random

Unique

 

Each iteration

所有vu均取参数列表的第一行,在循环结束后取第二行

所有vu随机选取参数列表内参数,在循环结束后取第二个随机数

所有vu按顺序取不同值,在循环结束后取下一个未被使用的值

 

Each occurrence

所有vu均取参数列表的第一行,在当第二次出现时取第二行值,即使在同一迭代内

所有vu随机选取参数列表内参数,在当第二次出现时取第二个随机数,即使在同一迭代内

所有vu按顺序取不同值,在第二次出现时取下一个未被使用的值,即使在同一迭代内

 

Once

所有用户取参数列表的第一行,在脚本执行过程中均为该值

所有用户随机选取参数列表内唯一参数,在脚本执行过程中均为该值

所有vu按顺序取不同值,在脚本执行过程中均为该值

 

 

 

在参数设置的过程中,可能会遇到参数列表内数据量小于(VU*循环数)的情况,若可能出现该情况的组合中,参数管理器中会出现when out of value选项,来配置参数用尽后的操作方式,我们可以选择退出vu,从新轮循以及使用最后一个值,根据测试需求设定即可

 

 

对于Allocate Vuser values in the Controller选项一般情况下默认选择Automatically allocate block size即可,若选择手动设定则block size的数量需于脚本循环数对应。

 

 

以上对Loadrunner参数化设置进行了说明,现在我们再来看一些在实际使用过程中比较实用的参数设置方式

 

 

Iteration Number:返回当前循环次数

 

UserID:返回当前VUID

 

Group Name:返回次脚本在当前场景内Group名称

 

Load Generator Name:返回脚本执行的测试机名称

 

 

在脚本参数化的过程中,以参数的应用对脚本执行回馈有着很大的帮助,在脚本执行完毕后如果需要查询和统计每个VU的参数取值以及执行情况,则这些参数化的使用将使你受益良多。

 

 

其次由于以上参数类型具有一定的唯一性,可以通过适当的组合来获得一组有规则可循的唯一值,在后期性能分析过程中的数据分析阶段事半功倍。

 

 

例如我们可以用UserID+Iteration Number来确定一个唯一值作为脚本内某些数据的参数使用,则省去了繁琐的数据准备及设置工作并且容易查找;同理,在多脚本或多测试机执行的场景中可以加入Group Name以及Load Generator Name来区分。

 

假设存在: 
数据:AB
虚拟用户:Vuser1Vuser2Vuser3 
脚本中参数出现三次,脚本迭代三次

怎样取下一行数据? 
Sequential
:顺序,所有虚拟用户按照顺序读取数据表 
Random
:随机,所有虚拟用户随机形式读取数据表 
Unique
:唯一,所有虚拟用户每次各取一值(不重复)

什么时候访问数据表完成数据更新? 
Each iteration:每次迭代以后 
Each occurrence
:每次出现参数 
Once
:每出现一个虚拟用户


实例: 
顺序 
Sequential + Each iteration 
第一次迭代 无论参数任何时候出现Vuser1Vuser2Vuser3
第二次迭代 无论参数任何时候出现Vuser1Vuser2Vuser3
第三次迭代 无论参数任何时候出现Vuser1Vuser2Vuser3C

Sequential + Each occurrence 
N次迭代 参数第一次出现Vuser1Vuser2Vuser3
N次迭代 参数第二次出现Vuser1Vuser2Vuser3
N次迭代 参数第三次出现Vuser1Vuser2Vuser3C

Sequential + Once 
N次迭代 无论参数任何时候出现Vuser1A Vuser2B Vuser3C

随机 
Random + Each iteration 
N次迭代 无论遇到该参数多少次Vuser1都只取A,或者B,又或者C,本次迭代不再更新 
N次迭代 无论遇到该参数多少次Vuser2都只取A,或者B,又或者C,本次迭代不再更新 
N次迭代 无论遇到该参数多少次Vuser3都只取A,或者B,又或者C,本次迭代不再更新 
N+1次迭代,每个Vuser重新随机抽取数据


Random + Each occurrence 
N次迭代 第一次遇到该参数Vuser1Vuser2Vuser3ABC中随机抽取一个 
N次迭代 第二次遇到该参数Vuser1Vuser2Vuser3重新在ABC中随机抽取一个 
N次迭代 第三次遇到该参数Vuser1Vuser2Vuser3重新在ABC中随机抽取一个 
N+1次迭代,每个Vuser继续保持每遇到一次参数就重新抽取一次数据

Random + Once 
N次迭代 无论遇到该参数多少次Vuser1都只取A,或者B,又或者
N次迭代 无论遇到该参数多少次Vuser2都只取A,或者B,又或者
N次迭代 无论遇到该参数多少次Vuser3都只取A,或者B,又或者
N+1次迭代,每个Vuser不会重新抽取数据

唯一 
注意:使用该Unique类型必须注意数据表有足够多的数。 
比如Controller中设定20个虚拟用户进行5次循环,那么编号为1的虚拟用户取前5个数,编号为2的虚拟用户取6-10的数,依次类推,这样数据表中至少要有100个数据,否则Controller运行过程中会返回一个错误。 
因此以下例子在数据表中加入数据DEFGHI

Unique + Each iteration 
第一次迭代 无论参数出现多少次Vuser1A Vuser2D Vuser3
第二次迭代 无论参数出现多少次Vuser1B Vuser2E Vuser3
第三次迭代 无论参数出现多少次Vuser1C Vuser2F Vuser3I

Unique + Each occurrence 
第一次迭代 第一次出现该参数Vuser1A Vuser2D Vuser3
第一次迭代 第二次出现该参数Vuser1B Vuser2E Vuser3
第一次迭代 第三次出现该参数Vuser1C Vuser2F Vuser3I

Unique + Once 
无论进行多少次迭代 无论参数任何时候出现Vuser1A Vuser2B Vuser3
数据DEFGHI不取


TAG:

 

评分:0

我来说两句

Open Toolbar