在Loadrunner录制脚本及执行的过程中,经常会用到变量参数化来进行一些不同组合及唯一性值的设定,对于Loadrunner参数化的文章也很多,在此也不在繁述,今天我们就探讨下如何更高效的进行Loadrunner参数化,以更好的提高工作效率。
很多人在接触参数化时,都多少有这这样的困扰:我的参数化设置执行结果和我预期的结果有很大区别!在很多系统中对数据唯一性要求很高的话,我们会经常碰到这样的情形:我的脚本成功执行完毕,但是到后台一查数据却发现,数据没有执行进入系统,这样的测试案例根本无法对系统性能进行评估。
首先我们先看一下再Loadrunner参数管理器中的2个设定项select next row和update 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:返回当前VU 的ID值
Group Name:返回次脚本在当前场景内Group名称
Load Generator Name:返回脚本执行的测试机名称
在脚本参数化的过程中,以参数的应用对脚本执行回馈有着很大的帮助,在脚本执行完毕后如果需要查询和统计每个VU的参数取值以及执行情况,则这些参数化的使用将使你受益良多。
其次由于以上参数类型具有一定的唯一性,可以通过适当的组合来获得一组有规则可循的唯一值,在后期性能分析过程中的数据分析阶段事半功倍。
例如我们可以用UserID+Iteration Number来确定一个唯一值作为脚本内某些数据的参数使用,则省去了繁琐的数据准备及设置工作并且容易查找;同理,在多脚本或多测试机执行的场景中可以加入Group Name以及Load Generator Name来区分。
上述类型的参数设定均比较简单,根据参数管理器内的提示即可。有一些参数类型可以支持自定义类型,稍微懂一些C的printf的都完全可以理解,再次也不在赘述。
对于本文未涉及到的一些参数类型以及参数化以后的数据汇集我会在以后的Loadrunner教程中与大家探讨,敬请期待!
以上是我对Loadrunner参数化过程中的一些心得及看法,不胜详尽。希望对各位朋友的学习和工作有所帮助。