Loadrunner参数化_迭代参数说明(精)

合集下载

03_LoadRunner参数化详解

03_LoadRunner参数化详解

一、参数化的方法选中需要参数化的数据方法一,右键---【Replace with a new parameter】方法二,菜单【insert】----【new Parameter…】Parameter Properties (参数属性对话框)----我们的参数化设置就通过这个对话框完成.二、参数化的方式:其实参数化得方式有很多种,这里简述几种比较常见人方式。

其实方式略有不同,但其结果都是将数据添加进来。

1、编辑数据点击Create Table 会出现表格,在表格,再次点击Edit with Notepad ,然后会打开一个记事本,我们可以对记事本进行添加数据2、添加dat数据文件点击File输入框后面的“Browse..”按钮,找到本地的txt数据文件,进行添加就可以了。

需要注意的是,文件里面的数据不要乱写,每条数据一行,不然会读取有误。

3、数据库添加数据在很多情况下,我添加的数据不是十条二十条,也不是一百两百,如果还通过上面的两种方式添加,我想会是一件非常纠结的事情。

所以我们可以通过数据库将数据导入。

你是否疑虑数据库的数据怎么弄,数据库的数据生成非常简单,可以写一段简单的代码生成,也可以通过数据库数据生成工具来完成点击Date Wizard 打开连接数据库向导。

通常不用这种方式,而是直接在数据库中把数据查询出来,然后放到参数化列表当中。

4、其他类型设置如果我们要参数化的不是一个文件,比如是特定的日期时间,可以从Parameter type列表中进行选择这里可以设置日期时间格式,循环迭代方式,不过除了file类型外,其他用的不多。

其他类型用法我也不是十分了解。

参数化之间的关联前面我们已经对用户名进行了参数化,或对密码进行了参数化,这样是不是脚本就能正常跑了,不好说。

因为用户名和密码不是一一对应关系,每次运行脚本时取的用户名和密码没有对应上的话肯定就会出问题。

假设,我们已经对用户名已经进行了参数化,参数名为【username】,下面设置密码参数化与用户名关联。

详细分析LoadRunner参数化

详细分析LoadRunner参数化

详细分析LoadRunner参数化在进⾏⽹页的性能测试时,对⽹页的登录界⾯进⾏压⼒测试情况下就会使⽤到多⽤户进⾏登录,就需要对登录名和密码进⾏参数化,那么loadrunner 怎么参数化设置呢?下⾯我们来详细分析⼀下。

⼀、我们这⾥通过loadurnner录制⼀个软件⾃带的航空⽹站登陆。

下⾯是截取的登录代码⼆、下⾯通过loadrunner对⽤户名和密码进⾏参数化设置。

1、双击jojo,右击选择Replace with a Parameter,弹出窗⼝Select or Create Parameter,在 Parameter name处输⼊变量名name,点击OK,密码重复名字的操作。

2、把⽤户名jojo改成变量name,密码bean改成变量psw三、下⾯对参数进⾏编辑添加。

第⼀种⽅法是直接在界⾯上添加编辑。

1、点击P图标或者按键盘ctrl +L 进⼊参数化设置界⾯,2、点击name进⾏编辑变量参数,点击Edit with Notepad,弹出记事本框,输⼊好⽤户名后,保存后,参数就设置完成了。

密码也是重复名字的操作。

3、也可以在界⾯上直接编辑,添加⾏、列或者删除⾏、列4、参数都添加后之后,我们要注意每个参数对应的名称5、也可以把所有的参数编辑在⼀个⽂件⾥⾯,⼀列对应⼀个参数。

6、当参数放在在⼀个⽂件⾥⾯时,设置处就要⼀⼀对应。

四、第2种⽅法对参数进⾏编辑添加,就是直接导⼊已编辑好了的数据。

1、在⽂件处选择已经编辑好的数据⽂件位置,点击打开后,⽂件111.dat的数据就⾃动导⼊进来了。

五、设置好参数后,就可以设置数据取值⽅式与更新⽅法。

1、Select next row: 选择下⼀⾏⽅法Sequential默认顺序的,按照参数化的数据顺序,从上往下⼀个⼀个的来取。

Random随机取,参数化中的数据,每次随机的从中抽取数据。

Unique唯⼀,唯⼀的向下取值,只能被⽤⼀次。

Same line as xxx,和xxx列取同⼀⾏的值,(⾏相同)步调⼀致例如:数据a b c d e f g ...,现有3个⽤户(甲⼄丙)取值;循环2次。

LoadRunner_参数化

LoadRunner_参数化

Load Runner 参数化基础讲解Loadrunner中参数的设置在做负载或者压力测试时,很多人选择使用了Loadrunner测试工具。

该工具的基本流程是先将用户的实际操作录制成脚本,然后产生数千个虚拟用户运行脚本(虚拟用户可以分布在局域网中不同的PC机上),最后生成相关的报告以及分析图。

但是在录制脚本的过程中会遇到很多实际的问题,比如不同的用户有不同的使用数据,这就牵涉到参数的设置问题。

本文就Loadrunner中参数的设置进行说明,希望对大家有所帮助。

在录制程序运行的过程中,VuGen(脚本生成器)自动生成了包含录制过程中实际用到的数值的脚本。

如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值。

这个过程称为参数化脚本。

本文主要包括如下内容:理解参数的局限性、建立参数、定义参数的属性、理解参数的类型、为局部数据类型设置参数的属性、为数据文件设置参数的属性、从已经存在的数据库中引入数据。

除了GUI,以下的内容适合于各种类型的用户脚本。

一、关于参数的定义在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本。

函数中参数的值就是在录制过程中输入的实际值。

例如,你录制了一个Web应用程序的脚本。

脚本生成器生成了一个声明,该声明搜索名称为“UNIX”的图书的数据库。

当你用多个虚拟用户和迭代回放脚本时,也许你不想重复使用相同的值“UNIX”。

那么,你就可以用参数来取代这个常量。

结果就是你可以用指定的数据源的数值来取代参数值。

数据源可以是一个文件,也可以是内部产生的变量。

用参数表示用户的脚本有两个优点:① 可以使脚本的长度变短。

② 可以使用不同的数值来测试你的脚本。

例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。

在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。

参数化包含以下两项任务:① 在脚本中用参数取代常量值。

LoadRunner-迭代和并发设置

LoadRunner-迭代和并发设置

LoadRunner-迭代和并发设置
迭代:指运⾏⼀次脚本时某段代码块(action)循环执⾏的次数,串⾏执⾏
并发:指同时运⾏脚本的次数,并⾏执⾏(多个⽤户同时跑)
以下是⽤例和对应的相关设置
Iterations是在Vuser Generator的Run-time Setting中进⾏设置
Quantity是在Controller Scenario中进⾏设置
其余是在Parameter List 中进⾏设置
1.select next row:参数值取值的顺序
Sequential(顺序),Random(随机),Unique(唯⼀)三个选项;如果要求使⽤不同的账号登录则设置为Unique;
如果构造的账号数不够⼜对⽤户是否相同不做要求,则可以设置Sequential,参数调到最后⼀列后再从第⼀列开始调⽤。

2.update value on : (什么事件)触发参数取值更换
each iteration:进⼊⼀个迭代更换⼀次参数值;(sequential时)每个迭代不同⽤户使⽤相同参数值(不管并发是多少);(unique时)每个迭代不同⽤户使⽤不同值
each occurence :脚本中每次变量出现就换⼀个新值,谨慎⽤,⽤于账号肯定不⾏。

(⽐如user1登录user2权限操作)
once:只取⼀个值(不管并发和迭代是多少)。

loadrunn_参数化设置详解

loadrunn_参数化设置详解

Select next rowUpdate value on每种搭配1 sequential+each iteration 每次迭代更新Action(){Int I;For(i=0;i<2;i++){Lr_eval_string("{param}");//param的内容是甲乙丙丁戊}Lr_eval_string("{param}");Return 0;}在Run-Time Settings的Run Logic设置迭代次数,设置迭代次数为2运行结果为【甲甲甲|乙乙乙】2 Sequential+Each occurrence 每次取值更新Action(){Int I;For(i=0;i<2;i++){Lr_eval_string("{param}");//param的内容是甲乙丙丁戊}Lr_eval_string("{param}");Return 0;}在Run-Time Settings的Run Logic设置迭代次数,设置迭代次数为2运行结果为【甲乙丙|丁戊甲】3 Sequential+once 只取一次值,因为是顺序所以都是第一个值,无论是有多少for循环,或者多少次迭代,运行结果都是【甲】4 random+each iteration 每当一次新的迭代开始,重新从列表中取一次随机值5 Random+Each occurrence每次取值都随机取6 Random+once只取一次随机值7uniqueAbort vuser 当参数取值超出参数表记录的条数时,忽略当前用户Continue in a cyclic manner 超出记录表,以循环方式继续Continue with last value 超出记录表,一直用最后一个值8 same line as同行取值,比如账号密码匹配。

LoadRunner中参数的设置

LoadRunner中参数的设置

LoadRunner中参数的设臵参数个数:10个tester1、tester2、tester3…tester10迭代次数:2次场景设臵(一):Sequential+Each Iteration执行结果:VuGen中:1个用户第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2Controller中:5个用户并发,每个用户第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2(备注:5个用户每次迭代取值都相同,强调了用户之间的一致性)场景设臵(二):Sequential+Each Occurrence执行结果:VuGen中:1个用户,1次迭代第一次出现(Occurrence)取值为tester1第二次出现(Occurrence)取值为tester2Controller中:5个用户,1次迭代第一次出现(Occurrence)取值为tester1第二次出现(Occurrence)取值为tester2每次迭代以此类推…(备注:5个用户每次出现取值都相同,每次迭代取值都不同)场景设臵(三):Sequential+Once执行结果:VuGen中:1个用户每次都取同一个值,无论迭代多少次,都取tester1Controller中:5个用户每次都取同一个值,无论迭代多少次,都取tester1(备注:5个用户每次都取同一个值,无论迭代多少次)场景设臵(四):Unique+Each Iteration+Abort Vuser执行结果:VuGen中:1个用户第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2Controller中:5个用户用户1:第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester3(注:此处取值,依据用户到达的先后顺序)用户2:第一次迭代(Iteration)取值为tester2第二次迭代(Iteration)取值为tester4...以此类推…(备注:当6个用户并发时,会出现参数不够的情况,有一个用户就会被终止)场景设臵(五):Unique+Each Iteration+Continue in a cycle manner执行结果:VuGen中:1个用户第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2Controller中:5个用户用户1:第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2用户2:第一次迭代(Iteration)取值为tester3第二次迭代(Iteration)取值为tester4..用户6:第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2以此类推…(备注:当6个用户并发时,会出现参数不够的情况,会重新从参数列表第一行开始取)场景设臵(六):Unique+Each Iteration+With Last Value执行结果:VuGen中:1个用户第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2Controller中:5个用户用户1:第一次迭代(Iteration)取值为tester1第二次迭代(Iteration)取值为tester2用户2:第一次迭代(Iteration)取值为tester3第二次迭代(Iteration)取值为tester4..用户6:第一次迭代(Iteration)取值为tester9第二次迭代(Iteration)取值为tester10以此类推…(备注:当6个用户并发时,会出现参数不够的情况,会用最后的值作为参数)场景设臵(七):Unique+Once执行结果:VuGen中:1个用户,迭代2次,每个迭代中参数出现2次与迭代无关,一次都取唯一一个值:tester1Controller中:5个用户用户1:取值为tester1用户2:取值为tester2用户3:取值为tester3..以此类推…(备注:与迭代无关,强调用户之间的差异性)场景四至七中,Block Size是自动分配的,如果人工分配取值会有变化,比如说2个用户,每个用户迭代2次,为每个用户分配3个参数,则:用户1取值:tester1、tester2(tester3)用户2取值:tester4、tester5(tester6)。

LoadRunner使用说明

LoadRunner使用说明

Load Runner 使用说明一、组件:(一) VuGen:用于捕获最终用户业务流程和创建怎动化性能测试脚本。

1. 录制脚本:(1) 集合点Rendezvous(2) 验证点Check Point:文本验证点Text Check、图片验证点Image Check(3) 事务Transaction:事务开始Start Transaction、事务结束End Transaction(4) 注释与消息Comment & Message:/***/2. 增强并编辑Vuser脚本(1) 参数化:在Select next now中的参数:Sequential顺序、Random随机、Unique唯一在Update value on 参数:Each iteration每次迭代、Each occurrence每次出现、Once 一次(2) 从数据库中导入数据3. 配置动行时设置Runtime settings(运行时设置)(1) Number of Iterations:迭代次数(2) 在Preferences中的Enable image and text check在脚本中添加验证点时必须选中。

4. 在独立模式下运行Vuser脚本5. 集成Vuser脚本(二) Controller:用于组织、驱动、管理和监控负载测试。

1. 创建方案(1) 创建手动方案(2) 创建百分比模式方案(3) 创建面向目标的方案2. 计划方案(1) 开始时间(2) 方案运行设置:加压Ramp Up、持续时间Duration、减压Ramp Dowm3. 运行方案4. 监视方案(1) RuntimeGraphs(运行时图)A. Running Vusers运行时图:Running正在运行的Vuser总数、Ready完成脚本初始化部分、即可以运行的Vuser数、Finished结束运行的Vuser数,包括通过的和失败的、Error执行时发生的错误VuserB. Transaction Graphs事务监视图:Trans Response Time事务响应时间、Trans/Sec(Passed)每秒事务数(通过)、Trans/Sec(Failed/Stopped)每秒事务数(失败、停止)、Total Trans/Sec(Passed)每秒事务总数(通过)。

loadrunner参数详细解释

loadrunner参数详细解释

51Testing 软件测试论坛 » [LoadRunner] » 关于LoadRunner 参数的详细解释(自己看的)[转贴] 关于LoadRunner 参数的详细解释(自己看的)1# 大 中 小 发表于 2010-6-18 10:05 只看该作者关于LoadRunner 参数的详细解释(自己看的)通过创建表方式和数据向导方式都可以成功创建数据文件,操作员可以随意选择自己习惯的方式。

总之,能坚守数据文件放数据的原则,就不会出问题了。

当回到“参数属性页面”中后,发现数据已经准备好了,而且原来灰色的区域目前也可以选择了。

“选择下一行”共有下面几个选项:Sequential :按照顺序一行行的读取。

每一个虚拟用户都会按照相同的顺序读取。

Random :任意选择。

但是在每一次迭代中,将不发生变化。

Unique :唯一的数。

当使用该选项时,需要保证准备的数据文件中有足够的数据。

比如要做20个虚拟用户,每个用户要进行5次迭代,第一个用户在5次迭代中分别使用数据文件中的数据1~数据5,第二个用户在5次迭代中分别使用数据文件中的数据6~数据10,类推以后20个用户将使用到100个数据。

那么必须保证准备的数据文件中有100个以上的数据,否则运行时会出错。

Same line as 某个参数:和前面定义的参数取同行的记录。

通常用在有关联性的数据上面。

比如当我做登录密码的参数化时,由于它和UserID 是有关联的,所以会用到这种选择方式。

“更新值的时间”共有下面几个选项:Each iteration :每次迭代更新一个新的值。

Each occurrence :每次出现时该参数时更新一个新的值。

Once不管迭代多少次该参数的值一直保持不变。

*****注意*****1、参数类型:在创建参数的时候,我选择了参数类型为File。

参数类型共有9种,现在来简单介绍一下所有的参数类型以及意义。

1.1、DateTime:在需要输入日期/时间的地方,可以用DateTime 类型来替代。

LoadRunner参数化设置:数据分配与取值方式

LoadRunner参数化设置:数据分配与取值方式

LoadRunner参数化设置:数据分配与取值⽅式参数化设置中有九种取值⽅式:(以⽤户名参数user为例,其数据参数列表为:jojo、201401、201402、201403、201405、201406、201407、201408、201409,迭代次数设置为10次) 1、Sequential+Each Iteration 脚本会执⾏10次,每次迭代会按数据列表顺序取值,每⼀次迭代中出现的参数user的值是当前第⼀次参数替换的值。

第1次迭代均为jojo,以此类推。

2、Sequential+Each Occurrence 脚本执⾏10次,每次迭代中出现参数user,顺序取值⼀次,第1次迭代中出现3次user,则user取值为jojo、201401、201402,等到取值到201409,下次会从第⼀个数顺序取值。

3、Sequential+Once 脚本执⾏10次,user只取值⼀次,每次出现的user替换参数值都是jojo。

4、Random+Each Iteration 脚本执⾏10次,数据表中的数据随机取,⽐如第⼀次迭代取值201405,则这次迭代中出现参数user地⽅则⽤201405替代。

5、Random+Each Occurrence 脚本执⾏10次,数据表中的数据随机取,迭代过程中只要出现参数user的地⽅就随机取值⼀次。

第1次迭代出现3次user,则随机数为201407、jojo、201403。

6、Random+Once 脚本执⾏10,数据表中数据随机取值,参数user只取值⼀次,10次迭代过程中出现参数user的地⽅都是⽤随机取值(⽐如201406)替代。

7、Unique+Each Iteration 每个⽤户对应⼀次数据,当迭代次数超过⽤户数据量,根据设置情况处理情况,如下图所⽰: 每次迭代出现的参数user⽤当前取值替代。

8、Unique+Each Occurrence 当前有9条数据,没出现⼀次参数user,只能⽤⼀个数值替代,9条数据取完之后根据设置超出值处理。

loadrunner参数化说明

loadrunner参数化说明

LR参数取值的几种配置介绍
“Select next row ”有以下几种选择:
⏹ Sequential:按照顺序一行行的读取。

每一个虚拟用户都会按照相同的顺序读取
⏹ Random:在每次循环里随机的读取一个,但是在循环中一直保持不变
⏹ Unique :唯一的数。

注:使用该类型必须注意数据表有足够多的数。

比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。

⏹ Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。

通常用在有关联性的数据上面。

我们这里取值Sequential 即可。

Advance row each iteration 选中即可,表示每一次循环都往前走一行。

手工输入数据比较简单,这里就不再单独介绍了。

LR参数取值配置举例:
假设有2个虚拟用户,每个用户执行3次循环,共有10条数据,如下:100001,100002,100003,100004,100005,100006,100007,100008,1000109,100110。

如何使用Loadrunner进行参数化设置

如何使用Loadrunner进行参数化设置

LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本,如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值,这个过程叫做参数化。

以下为参数化过程:参数化过程比较简单,参数化时复杂的是对参数属性的设置。

主要是以下两个属性的组合。

select next row 中有三个选项: Sequential(顺序读取)、Random(随机读取)、Unique (唯一)update the value 中也有三个选项: Each Occurrence(每次遇到 )、 Each iteration(每次迭代 )、 Once(一直 )这两个属性可以有九种组合方式,每种方式都不一样。

接下来我们就用一个小实例来验证一下每种取值方式的效果。

录制一个lr自带实例WebTours的定单脚本。

脚本中将出发城市与到达城市均参数化一下。

参数化后还需做个关联(这个就重点说了)保证回放脚本成功。

设置10个用户并发持续加载的场景(参数文件中有10个数据),用默认设置均可。

即每15秒加载两个用户,持续时间为5分钟,每30秒停止5个用户。

然后并发跑脚本。

以下为9种组合的测试结果:(1)sequential Once十个用户每个用户取值均一样,,每个用户的所有迭代中的取值均一样。

第一个用户执行了5次迭代,每次迭代均取得第一个参数。

第二个用户也执行了5次迭代,每次迭代均取的第一个参数。

第三个。

第四个。

等等十个用户均一样。

(2)unique once十个用户每个用户取值都唯一,每个用户的所有迭代中的取值均一样。

第一个用户执行了5次迭代,每次迭代均取第一个参数;第二个用户执行了5次迭代,每次迭代均取第二个参数;第三个。

第四个。

依此类推。

第十个用户执行了5次迭代,每次迭代均取第十个参数。

(3)Random Once十个用户,每个用户为随机取值,每个用户的所有迭代中的取值均一样。

LoadRunner参数化功能分享

LoadRunner参数化功能分享

在vugen脚本中,很多地方都是可以直接填写参数的,从而大大 简化了脚本开发过程。可以简单地把参数理解为一种vugen自己 的高级变量,相对于C语言变量来说要高级一点。
既然参数的作用这么大,那么什么地方可以使用参数化呢?
基本上所有LoadRunner函数中带“”内容都可以直接使用参数化, 把刚刚自动访问四大门户网站的脚本切换到tree模式下,双击函数, 在出现的图形化函数设置中,文本框后有ABC按钮,这些属性就可 以直接使用参数化,例如web_url()函数中的URL和Target frame就 支持参数化
(1)AB|CD|EFA (2)AA|BB|CCC (3)AB|CD|EFF (4)AA|AA|AAA
在unique模式下whenoutvalues选项为continuecyclicmanner时循环的范围是受到记录分配策略的影响的例如vuser2被分配到de两个参数值那么当出现多次调用超出记录范围的时候结果为ded总结下参数在场景下取值的对应关系如下表所示总结下参数在场景下取值的对应关系如下表所示场景下取值的各种情况updatevalueonselectnextrowsequentialrandomunique优先分配每sequentialrandomunique优先分配每个用户的数据块eachiteration每个用户的数据相同每个用户独立根据自动或者手动分配blocksize的方式获数据相同户独立随机配blocksize的方式获取每个用户的数据块eachoccurrence每个用户的数据相同每个用户独立根据手动设置分配每个用户的数据块数据相同户独立随机个用户的数据块once每个用户的数据相同每个用户独立随机每个用户使用参数列同行取值接着来看最后记录的选择方式sli接着来看最后一种selectnextrow记录的我们也可以通过下面的这种方 法来实现。

Loadrunner 参数化_迭代参数说明

Loadrunner 参数化_迭代参数说明

Loadrunner参数化策略测试小组齐国杰使用工具:Loadrunner 8.1试用版引子近日没有具体的项目做,就总去泡论坛,发现有的网友会问一些参数化的问题,回答他们的问题时,突然发现自己也是一知半解,因此写了三个实验脚本,目的是彻底搞清楚参数化的做法以及参数化策略的疑问。

流程参数化要做一些准备,主要是参数化数据的准备,例如TXT 文本、EXCEL表格以及数据库中的表都可以作为参数的数据集载体,而且LR都是支持的。

具体的参数化流程如下:1、录制脚本2、准备参数的数据集(也可以不准备,让LR自己生成固定格式参数)3、把对应的变量参数化4、选择对应的参数化策略具体的操作请查询LR帮助手册例子下面我来介绍几个例子,例子统一使用try_params.txt做参数数据集,txt内容如下:aaa bbba1 b1a2 b2……a30 b30脚本一:Action(){char *a = "{aaa}"; //获得参数赋值给achar *b = "{bbb}";//获得参数赋值给blr_log_message("%s,%s,%s,",lr_eval_string(a),lr_eval_string (b),ctime(&t));//打印结果return 0;}运行时设置:设置action的迭代次数为30(runtime-setting的Run Logic里)回放结果:备注:“…,…”省略符号,如果前后都相同则省略相同部分,如果前后不同则省略不同部分。

脚本二:Action(){int i; //循环种子for (i=0;i<30;i++) //循环30次{char *a = "{aaa}"; //获得参数赋值给achar *b = "{bbb}";//获得参数赋值给blr_log_message("%s,%s\n",lr_eval_string (a),lr_eval_string (b));}//打印结果return 0;}运行时设置:设置action的迭代次数为1(runtime-setting 的Run Logic里)回放结果:备注:“…,…”省略符号,如果前后都相同则省略相同部分,如果前后不同则省略不同部分。

loadrunner参数化

loadrunner参数化

参数化的定义:使用指定的数据源中的值来替换脚本录制生成的语句中的参数。

对Vuser脚本进行参数化的好处:1、减小脚本的大小2、提供了使用不同的脚本的值执行脚本的能力参数化涉及两个任务:1、用参数替换Vuser脚本的常量值2、为参数设置属性和数据源“Select next row”定义的是如何选择下一行数据。

该处有三个选项"Sequential","Random","Unique",Sequential:顺序地向Vuser分配数据。

Random:当测试开始运行时,“随机”方法为每个Vuser分配一个数据表中的随机值。

Unique:为每一个Vuser的参数分配一个唯一的顺序值。

在这种情况下必须确保表中的数据对所有的Vuser和它们的迭代来说是充足的。

如果拥有20个Vuser并且要进行5次迭代,则测试者的表格中必须至少包含100个数值。

“Update value on”定义的是什么时候更新数据值,备选项有每次迭代,每次出现和一次。

表 LoadRunner参数更新方法和数据分配数据分配方法顺序随机唯一每次迭代对于每次迭代Vuser会从数据表中提取下一个值。

对于每次迭代,Vuser会从数据表中提取新的随机对于每次迭代,Vuser会从数据表中提取下一个唯一值。

值。

每次出现(仅数据文件)参数每次出现时,Vuser将从数据表中提取下一个值,即使在同一次迭代中。

参数每次出现时,Vuser将从数据表中提取新的随机值,即使在同一迭代中。

参数每次出现时,Vuser将从数据表中提取新的唯一值,即使在同一迭代中。

一次对于每一个Vuser,第一次迭代中分配的值将用于所有的后续迭代第一次迭代中分配的随机值将用于该Vuser的所有迭代第一次迭代中分配的唯一值将用于该Vuser的所有后续迭代如果LoadRunner的函数中某个参数不能直接使用LoadRunner参数,那么可以通过lr_eval_string进行转换取到参数的值。

loadrunner怎么设置参数化?loadrunner参数化设置的图文教程

loadrunner怎么设置参数化?loadrunner参数化设置的图文教程

loadrunner怎么设置参数化?loadrunner参数化设置的图
⽂教程
在进⾏使⽤到loadrunner的⼯具进⾏对⽹页进⾏性能的测试,⽽对⽹页的性能测试时,对有⽹页的登录的界⾯,在做压⼒测试情况下就会使⽤到多⽤户进⾏登录,就需要对代码进⾏参数化,那么loadrunner怎么参数化设置呢?下⾯⼩编要为⼤家带来的是loadrunner参数化设置的图⽂教程!感兴趣的朋友⼀起去看看吧!
⽅法:
1、在loadrunner的进⾏编写脚本,或者⼀个⽹页登录界⾯进⾏录制脚本,录制完成之后,在脚本找登录的⽤户名,选中⽤户右键》》replace with a pararmeter。

2、弹出了⼀个为select or create parameter的框,可以对parameter name名称重名,也可不命名。

3、这样在代码脚本中的⽤户名就变为了⼀种颜⾊,变为参数名。

4、需要对参数名进⾏参数化,可以点击菜单中的open parameter list的按钮,点击进⼊。

5、可以看到的是newparam默认的⼀个参数了为xinling,需要在⾏中在添加数据,可点击add row添加⾏,输⼊数据双击value就可进⾏输⼊,输⼊⽹页中其它的⽤户名。

6、参数化数据准备好之后,就进⾏执⾏了,在执⾏前,需要到run-time settings设置的界⾯中,run logic的选项界⾯中,把循环的次数改为2次,因准备数据只有两条了,
7、设置完成之后,可以点击loadrunner的界⾯中菜单运⾏按钮,等待脚本完成之后,可以在执⾏log看到执⾏的结果数据,是成功执⾏成功的。

LoadRunner参数化

LoadRunner参数化

1.1参数化1.选中用户名,右击– Relace with a Parameter2.弹出下图窗体,输入name,点击P roperties…3.弹出下图窗体,点击Create Table4.弹出确认框,确认后,显示如下图,点击E dit with Notepad…5.弹出记事本,可编辑需参数化内容,添加多个用户名添加之后,效果如图用户名、密码:点击Add Column,弹出Add new column窗体,输入列名,进行步骤5参数值编辑操作添加效果图:1.2Parameter Properties(参数属性)1.2.1S elect next row(获取数据方式)、1.2.2U pdate value on(参数值改变时间)注:对Each Iteration而言,一个VU执行时,每次迭代时更新参数的值,如果在一个迭代过程中某参数出现了多次,参数取相同的值;而对Each Occurrence而言,如果在一个迭代过程中某参数出现了多次,每次都取不同的之1.2.3When out of values(数据量不能支持迭代和Unique要求的数据量时,指示LoadRunner的处理方法)When out of values选项只在Select next row设置为Unique时才有效,当数据池中的数据量不能支持迭代和Unique要求的数据量时,可以通过设置该选项的值指示LoadRunner的处理方法:设置为Abort VUser,则遇到这种情况,VU停止运行;设置为Continue in a cyclic manner,则遇到这种情况,重新从数据池的第一个取值开始循环;设置为Continue with last value,则遇到这种情况,所有不足的取值都用最后一个取值来代替1.2.4S elect column、Select column(列数值/名称;分隔符)1)选择列。

在Select column部分,指定列的数值或名称。

LoadRunner常用参数使用说

LoadRunner常用参数使用说

LoadRunner常用参数使用说明一、引言 (4)二、Web Vuser Functions:C Language(WEB)的功能参数介绍 (4)1.Action Functions (4)web_custom_request (5)举例: (6)Web Image (7)举例: (8)web_link (9)举例: (10)web_submit_data (10)举例: (12)web.submit_form (12)举例: (14)web_url (15)举例: (16)2.Check Functions (17)web_find (17)举例 (18)web_global_verification (18)举例 (19)web_image_check (19)举例 (20)web_reg_add_cookie (21)举例 (21)web_reg_find (22)举例 (23)3.Concurrent Group Functions (24)web_concurrent_end (24)举例 (24)web_concurrent_start (25)举例 (25)4.Cookie Functions (25)web_remove_cookie (26)举例: (26)web_add_cookie (26)举例: (27)web_cleanup_cookies (27)举例: (27)web_reg_add_cookie (28)举例: (28)5.Correlation Functions (29)web_create_html_param (29)举例 (30)web_create_html_param_ex (30)web_reg_save_param (31)举例: (32)web_reg_save_param (32)举例: (34)web_save_param_length (34)举例: (34)web_save_timestamp_param (35)举例: (35)web_set_max_html_param_len (35)举例: (35)三、Web GUI Level Vuser Functions (WEB) (36)1.web_browser (36)举例: (38)2. web_button (38)举例: (39)3. web_check_box (39)举例 (40)4.web_edit_field (40)举例: (41)5.web_eval_java_script (42)举例: (43)6.web_image_link (43)举例: (44)7.web_image_submit (44)举例: (45)8.web_list (46)举例: (47)9.web_radio_group (47)举例: (48)10. web_reg_dialog (48)举例: (49)11. web_static_image (49)举例: (50)12. web_text_area (50)举例: (51)13. web_text_link (51)举例: (52)一、引言本文主要介绍一些网站测试所需的参数的使用说明,主要涉及到:Web Vuser Functions:C Language(WEB)中的Action Functions、Check Functions、Concurrent Group Functions、Correlation Functions 、Cookie Functions和Web GUI Level Vuser Functions (WEB)等的参数使用。

Loadrunner参数化详解

Loadrunner参数化详解

试验过程:1、使用loadrunner 录制一个脚本;2、录制脚本内容为登录一个web 网站,并下载网站的一个文件;(注本例无登录和退出操作)3、把所下载的文件设置参数化;4、对select next row 和update value on 进行两两组合,并设置不同用户数量(用户数量多余参数数量和等于参数数量)和迭代次数(1 次迭代或多次迭代)参数列表:1、test-0.chm2、test-2.chm3、test-3.chm4、test-4.chm5、test-5.chm6、test-6.chm7、test-7.chm8、test-8.chm9、test-9.chmaction 代码:web_url("myweb", "URL=http://172.16.41.112/myweb/","Resource=0","RecContentType=text/html","Referer=","Snapshot=t5.inf","Mode=HTML",LAST);web_li nk(//"{move name}", "test-O.chm", "Text={move name}", "Sn apshot=t6.i nf", LAST); 实例(试验结果):action 代码:web_url("myweb","URL=http://172.16.41.112/myweb/","Resource=0","RecConte ntType=text/html","Referer=","Snapshot=t5.inf, "Mode=HTML",LAST);webji nk(〃"{move name}","test-O.chm","T ext={move name}","Snapshot=t6.inf, LAST);web_url("myweb","URL=http://172.16.41.112/myweb/","Resource=0","RecConte ntType=text/html","Referer=","Snapshot=t5.inf, "Mode=HTML",LAST);webji nk(〃"{move name}","test-O.chm","Text={move name}","Sn apshot=t6.i nf", LAST); 实例(试验结果):。

loadrunner参数化取值方式详解

loadrunner参数化取值方式详解

loadrunner参数化取值⽅式详解参数化对话框中与参数取值⽅式有关的区域如下:改变参数化的取值⽅式,关键在于Select next row和Update value on这两个选项。

Select next row包括以下选项:Sequential:顺序⽅式Random:随机⽅式Unique:唯⼀⽅式 Update value on包括如下选项:Each iteration:每次迭代更新取值Each occurrence:每次取值更新Once:只更新⼀次以下代码以登录接⼝和参数化进⾏演⽰,参数化⽂件中有2个值lr_output_message("login_username:%s",lr_eval_string("{login_username}"));web_custom_request("login","URL=http://192.168.44.130:8080/mobile/api/user/login","Method=POST","TargetFrame=","Resource=0","Referer=","Mode=HTTP","EncType=application/json;charset=utf-8","Body={\"mobile\":\"{login_username}\",\"password\":\"123456\"}",LAST); 参数化⽂件中的数据为:131********131********第⼀种取值⽅式:Sequential+Each iteration,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 1.Starting iteration 2.Notify: Next row for parameter login_username = 2 [table = login_username].Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 2.Starting iteration 3.Notify: Next row for parameter login_username = 1 [table = login_username].Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 3.第⼆种取值⽅式:Sequential+Each occurrence,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Next row for parameter login_username = 2 [table = login_username].Action.c(20): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 1.Starting iteration 2.Starting action Action.Action.c(18): Notify: Next row for parameter login_username = 1 [table = login_username].Action.c(18): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Next row for parameter login_username = 2 [table = login_username].Action.c(20): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 2.Starting iteration 3.Starting action Action.Action.c(18): Notify: Next row for parameter login_username = 1 [table = login_username].Action.c(18): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Next row for parameter login_username = 2 [table = login_username].Action.c(20): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 3.第三种取值⽅式:Sequential+Once,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 1.Starting iteration 2.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 2.Starting iteration 3.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 3.第四种取值⽅式:Random+Each iteration,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 1.Starting iteration 2.Notify: Next row for parameter login_username = 1 [table = login_username].Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 2.Starting iteration 3.Notify: Next row for parameter login_username = 2 [table = login_username].Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 3.第五种取值⽅式:Random+Each occurrence,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Next row for parameter login_username = 2 [table = login_username].Action.c(20): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 1.Starting iteration 2.Starting action Action.Action.c(18): Notify: Next row for parameter login_username = 1 [table = login_username].Action.c(18): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Next row for parameter login_username = 2 [table = login_username].Action.c(20): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 2.Starting iteration 3.Starting action Action.Action.c(18): Notify: Next row for parameter login_username = 1 [table = login_username].Action.c(18): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Next row for parameter login_username = 2 [table = login_username].Action.c(20): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 3.第六种取值⽅式:Random+Once,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 1.Starting iteration 2.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 2.Starting iteration 3.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending iteration 3.第七种取值⽅式:Unique+Each iteration这种取值⽅式,⼜可以有以下⼏种设置:当值不⾜时,可以选择以下3种⽅式:1)、中断虚拟⽤户2)、循环取参数中的值,返回到第⼀⾏取值3)、取最后⼀⾏值以下运⾏结果以Abort Vuser为例执⾏,其它情况可⾃⾏设置运⾏,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 1.Starting iteration 2.Notify: Next row for parameter login_username = 2 [table = login_username].Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 2.Starting iteration 3.Error: Parameter 'login_username': No more unique values for this parameter in table 'login_username.dat' [unique range is 1-2]. The Vuser is aborted according to "When Out Of Values" policy.Action was aborted.Ending Vuser...第⼋种取值⽅式:Unique+Each occurrence,参数不够⽤时,也会报错,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '1'.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Next row for parameter login_username = 2 [table = login_username].Action.c(20): Notify: Getting new value for parameter 'login_username': table = 'login_username.dat' column = '0' row = '2'.Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 1.Starting iteration 2.Starting action Action.Action.c(18): Error: Parameter 'login_username': No more unique values for this parameter in table 'login_username.dat' [unique range is 1-2]. The Vuser is aborted according to "When Out Of Values" policy. Abort was called from an action.Ending Vuser...第九种取值⽅式:Unique+Once,参数不够⽤时,也会报错,设置迭代次数为3次,参数取值结果为:Starting iteration 1.Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 1.Starting iteration 2.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385]Ending action Action.Ending iteration 2.Starting iteration 3.Starting action Action.Action.c(18): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(18): login_username:131********Action.c(20): web_custom_request("login") started [MsgId: MMSG-26355]Action.c(20): Notify: Parameter Substitution: parameter "login_username" = "131********"Action.c(20): web_custom_request("login") was successful, 361 body bytes, 157 header bytes, 12 chunking overhead bytes [MsgId: MMSG-26385] Ending action Action.Ending iteration 3.总结:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Loadrunner参数化策略
测试小组齐国杰
使用工具:Loadrunner 8.1试用版
引子
近日没有具体的项目做,就总去泡论坛,发现有的网友会问一些参数化的问题,回答他们的问题时,突然发现自己也是一知半解,因此写了三个实验脚本,目的是彻底搞清楚参数化的做法以及参数化策略的疑问。

流程
参数化要做一些准备,主要是参数化数据的准备,例如TXT文本、EXCEL表格以及数据库中的表都可以作为参数的数据集载体,而且LR都是支持的。

具体的参数化流程如下:
1、录制脚本
2、准备参数的数据集(也可以不准备,让LR自己生成固定格式参数)
3、把对应的变量参数化
4、选择对应的参数化策略
具体的操作请查询LR帮助手册
例子
下面我来介绍几个例子,例子统一使用try_params.txt做参数数据集,txt内容如下:
aaa bbb
a1 b1
a2 b2
……
a30 b30
脚本一:
Action()
{
char *a = "{aaa}"; //获得参数赋值给a
char *b = "{bbb}";//获得参数赋值给b
lr_log_message("%s,%s,%s,",lr_eval_string (a),lr_eval_string (b),ctime(&t));//打印结果return 0;
}
运行时设置:设置action的迭代次数为30(runtime-setting的Run Logic里)
备注:“…,…”省略符号,如果前后都相同则省略相同部分,如果前后不同则省略不同部分。

脚本二:
Action()
{
int i; //循环种子
for (i=0;i<30;i++) //循环30次
{
char *a = "{aaa}"; //获得参数赋值给a
char *b = "{bbb}";//获得参数赋值给b
lr_log_message("%s,%s\n",lr_eval_string (a),lr_eval_string (b));
}//打印结果
return 0;
}
运行时设置:设置action的迭代次数为1(runtime-setting的Run Logic里)
备注:“…,…”省略符号,如果前后都相同则省略相同部分,如果前后不同则省略不同部分。

脚本三:
Action()
{
char *filename = "C:\\work\\log\\try_params.log";
typedef long time_t;
time_t t;
char *a = "{aaa}";
char *b = "{bbb}";
long fileopen;
if ((fileopen = fopen(filename,"a+")) == NULL) {
lr_error_message ("file isn't open,path=%s",filename);
return 0;
}
time(&t);
fprintf(fileopen,"%s,%s,%s",lr_eval_string (a),lr_eval_string (b),ctime(&t));
fclose(fileopen);
return 0;
}
运行时设置:设置action的迭代次数为1(runtime-setting的Run Logic里)场景设置:不更改任何场景策略,运行vuser数为30
备注:“…,…,…”省略符号,如果前后都相同则省略相同部分,如果前后不同则省略不同部分。

文档实例位置:
脚本一:try_param_2文件夹
脚本二:try_param_1文件夹
脚本三:try_param文件夹
参数文件:try_param.txt在每个脚本目录下。

相关文档
最新文档