loadrunner参数化

上传人:第*** 文档编号:31075047 上传时间:2018-02-04 格式:DOCX 页数:4 大小:43.72KB
返回 下载 相关 举报
loadrunner参数化_第1页
第1页 / 共4页
loadrunner参数化_第2页
第2页 / 共4页
loadrunner参数化_第3页
第3页 / 共4页
loadrunner参数化_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《loadrunner参数化》由会员分享,可在线阅读,更多相关《loadrunner参数化(4页珍藏版)》请在金锄头文库上搜索。

1、深入解析 LoadRunner 下的参数化取值熟悉 LoadRunner 的人,相信都会经常使用参数化功能,但是对于参数化的使用到底了解多少,就值得深思了。包括本人在内也是,每次在做压力测试的时候,基本上都少不了要对一些动态的参数进行大数据量的读取,使用参数化功能也都是为了更符合实际应用。所以说用了就不表示理解了,更不能代表能灵活运用了。最近在一次接口压力测试中就让我遇到了一点麻烦,本来准备了 10 万级的数据量,但是在执行压力场景运行总,配合做压力的开发人员监控数据库中表记录就发现,真正插入进去的数据有时候只有不到 1000 条,甚至有时候只有一条,起初我以为是接口那边做一些复杂的判断规则导

2、致的,要求开发人员把程序里的规则包括数据库表中的约束等属性都适当的去除,或者是放宽,这样以来可以避免一些数据不至于因为规则和约束而插入失败。经过一番折腾之后,发现不以为然,数据还是没能按照预期的结果入库,而当前表约束只有一个规则,那就是唯一性,要求每次插入的数据都必须是唯一的,也就是新值,不过这对于 LoadRunner 的参数化功能是完全可以实现的,经过一番折腾之后发现这个参数化功能真还是那么简单,看似每个设置都能理解,但如果没有深入实践去证明,结果还真是大不相同。改变参数化的取值方式,关键在于 Select next row 和 Update value on 这两个选项。Select n

3、ext row 包括以下选项: Sequential:顺序方式 Random:随机方式 Unique:唯一方式Update value on 包括如下选项: Each iteration:每次迭代更新取值 Each occurrence:每次取值更新 Once:只更新一次下面我们将通过如下的一段脚本来分别解析各个组合设置的效果,脚本如下:Action()int i = 0;for (i=0; i5; i+) lr_eval_string(paramtemp);lr_eval_string(paramtemp);return 0;注:以上脚本的功能就是先重复循环取 5 次参数,然后循环结束后再读

4、取一次参数的值。这里为参数paramtemp 准备的参数数据有 temp18 共 8 条数据,供测试使用。1 、 Sequential+Each iteration(顺序方式+每次迭代更新取值),设置 RunLogic 中 action 循环迭代 5 次,并运行以上脚本,结果如下:Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): No

5、tify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(7): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parame

6、ter Substitution: parameter paramtemp = temp2Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp2Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp2Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp2Action.c(5): Notify: Parameter Substitu

7、tion: parameter paramtemp = temp2Action.c(7): Notify: Parameter Substitution: parameter paramtemp = temp2.通过如上的回放日志可以发现,共循环 action5 次,共取了 5 个参数化中的数据,但每次执行 action脚本时,脚本内部的取值均相同。设置 Sequential 是为了保证顺序读取方式,而 Each iteration 是基于 RunLogic 的设置的,就是说每次循环一次后,读取新的值。如果设置循环次数超过数据的行数,此时再回放之后的结果就是,超过第八,从第九次开始就又从 te

8、mp1 开始读取,完成循环迭代的读取过程。2、Sequential+Each occurrence(顺序方式+每次取值更新),设置 RunLogic 中 action 循环迭代 5 次,并运行以上脚本,结果如下:Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp2Action.c(5): Notify: Parameter Substitution: param

9、eter paramtemp = temp3Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp4Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp5Action.c(7): Notify: Parameter Substitution: parameter paramtemp = temp6Action.c(5): Notify: Parameter Substitution: parameter paramte

10、mp = temp7Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp8Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp2Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp3Ac

11、tion.c(7): Notify: Parameter Substitution: parameter paramtemp = temp4.分析如上的两次迭代回放日志我们可以发现,每一次迭代中取值都在变化,而且都是在读取新的一行数据,当数据读取完之后,又重新顺序读取。这里我们就可以很清晰的认识到 Each occurrence 和 Each iteration 之后的结果,是完全不同的方式进行读取的,Each occurrence 每一次取值更新的。3 、 Sequential+Once(顺序方式+只读取一次),设置 RunLogic 中 action 循环迭代 5 次,并运行以上脚本,结果

12、如下:Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(

13、5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(7): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify:

14、Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(5): Notify: Parameter Substitution: parameter paramtemp = temp1Action.c(7): Notify: Parameter Substitution: parameter paramtemp = temp1.从回放日志中可以看出,这里的读取方式很符合 Once 的字面理解

15、,它只对参数读取一次,由于是顺序读取,所以它就只读取一个第一行数据。关于 Once 的读取方式是我们通常容易犯错的地方,就以为选择 Once 可能就是每个参数只读取一次,导致最后可能就只插入一条数据进去进入到库中。接下来我们需要了解的就是 Select next row 中其他两种方式,分别为 Random 和 Unique,具体如下:Random:表示随机读取方式 Random+Each iteration,跟顺序读取的结果唯一不同的就是这里是随机读取,取值是每次迭代取值 Random+Each occurrence,随机取值更新方式 Random+Once,随机取一行数据,然后重复迭代读取这一行数据Unique:主要是强调取值的唯一性,如果到最后没有该值了,LR 提供了其他解决方案,如图所示:此处的下拉列表中提供了三种方式,具体如下: About Vuser,当取值次数超过参数的行数时,忽略脚本的运行 Continue in a cyclic manner,取值超过时,启用循环扫描,扫描那些还未被使用的数据进行使用 Continue with last value,重复读取最后一行数据所以关于 Unique 的唯一性取值方式还是需要值得,而且通常也用得比较多,特别是对于一些数据库表有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号