相信对大家会有用的,这个版本是基于78的。 做负载或者压力测试时,很多人选择使用了Loadrunner测试工具。该工具的基本流程是先将用户的实际 *** 作录制成脚本,然后产生数千个虚拟用户运行脚本(虚拟用户可以分布在局域网中不同的PC机上),最后生成相关的报告以及分析图。但是在录制脚本的过程中会遇到很多实际的问题,比如不同的用户有不同的使用数据,这就牵涉到参数的设置问题。本文就Loadrunner中参数的设置进行说明,希望对大家有所帮助。在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本。如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值。这个过程称为参数化脚本。本文主要包括如下内容:理解参数的局限性、建立参数、定义参数的属性、理解参数的类型、为局部数据类型设置参数的属性、为数据文件设置参数的属性、从已经存在的数据库中引入数据。除了GUI,以下的内容适合于各种类型的用户脚本。一、关于参数的定义在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本。函数中参数的值就是在录制过程中输入的实际值。例如,你录制了一个Web应用程序的脚本。脚本生成器生成了一个声明,该声明搜索名称为“UNIX”的图书的数据库。当你用多个虚拟用户和迭代回放脚本时,也许你不想重复使用相同的值“UNIX”。那么,你就可以用参数来取代这个常量。结果就是你可以用指定的数据源的数值来取代参数值。数据源可以是一个文件,也可以是内部产生的变量。用参数表示用户的脚本有两个优点:① 可以使脚本的长度变短。② 可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。参数化包含以下两项任务:① 在脚本中用参数取代常量值。② 设置参数的属性以及数据源。参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。另外,不是所有的函数都可以参数化的。二、参数的创建可以指定名称和类型来创建参数。不存在对脚本中参数个数的限制。在Web程序的用户脚本中,你可以使用如下过程在基于文本的脚本视图中创建参数。或者,也可以在基于图标的树形视图中创建参数。在基于文本的脚本视图中创建一个参数:1、 将光标定位在要参数化的字符上,点击右键。打开d出菜单。2、 在d出菜单中,选择“Replace with a Parameter”。选择或者创建参数的对话框d出。3、 在“Parameter name”中输入参数的名称,或者选择一个在参数列表中已经存在的参数。4、 在“Parameter type”下拉列表中选择参数类型。5、 点击“OK”,关闭该对话框。脚本生成器便会用参数中的值来取代脚本中被参数化的字符,参数用一对“{}”括住。注意:在参数化CORBA或者General-Java 用户脚本的时候,必须参数化整个字符串,而不是其中的部分。另外注意:除了Web或者WAP,缺省的参数括号对于任何脚本都是 “{}”。你可以在“General Options”对话框中的“Parameterization”标签(Tools>General Options)中定义参数括号种类。6、用同样的参数替换字符的其余情况,选中参数,点击右键,d出菜单。从d出的菜单中,选择“Replace More Occurrences”。搜索和替换对话框d出。“Find What”中显示了你企图替换的值。“Replace With”中显示了括号中参数的名称。选择适当的检验框来匹配整个字符或者大小写。如果要搜索规则的表达式(,!,等等),选中“Regular Expression”检验框,然后点击“Replace”或者“Replace All”。注意:小心使用“Replace All”,尤其替换数字字符串的时候。脚本生成器将会替换字符出现的所有情况。7、 如果想用以前定义过的参数来替换常量字符串的话,选中该字符串,点击右键,然后选择“Use Existing Parameter”,子菜单“Use Existing Parameters”d出。从子菜单“Use Existing Parameters”选择参数,或者用“Select from Parameter List”来打开参数列表对话框。注意:如果用以前定义过的参数来替换常量字符串的话,那么,使用“Parameter List”非常方便。同时,还可以查看和修改该参数的属性。8、 对于已经用参数替换过的地方,如果想取回原来的值,那么,就在参数上点击右键,然后选择“Restore Original value”。在Web用户脚本的树形视图中创建参数:1、将光标定位在企图参数化的地方,点击右键,从d出的菜单中选择“Properties”。则相关的属性对话框打开。2、点击在要参数化的参量的旁边的“ABC”形状的图标。“Select or Create Parameter”对话框打开。3、在“Parameter name”中输入参数的名称,或者从列表中选择一个已经存在的参数。4、在“Parameter type”中输入参数的类型。5、点击“OK”关闭该对话框。用户脚本生成器会用参数来替换最初的字符串常量,并用一个表格形状的图标替换“ABC”形状的图标。6、要恢复参数化以前的值,点击图标,然后从d出的菜单中选择“Undo Parameter”,则以前的值便会重现。三、定义参数的属性创建参数完成后,就可以定义其属性了。参数的属性定义就是定义在脚本执行过程中,参数使用的数据源。在Web用户脚本中,你既可以在基于文本的脚本视图中定义参数属性,也可以在基于图标的树形视图中定义参数属性。下面的过程将教你如何在基于本文的脚本视图中定义参数属性。在基于文本的脚本视图中定义参数属性步骤:1、 在参数上点击右键,有菜单d出。2、 在d出的菜单中,选择“Parameter Properties”。参数属性对话框打开,显示和当前参数类型相关的属性。3、 输入参数的属性值。4、 点击“Close”关闭参数属性对话框。在Web用户脚本的树形视图中定义参数的属性:1、 将关标定位在参数上,然后点击右键,选择“Properties”。属性对话框打开。2、 点击要定义属性的参数旁边的表格形状按钮,点击右键,选择“Parameter Properties”。参数属性对话框打开,和参数类型相关的属性显示出来。3、 输入参数的属性。4、 点击“Close”关闭参数属性对话框。使用参数列表:使用参数列表可以在任意时刻查看所有的参数,创建新的参数、删除参数,或者修改已经存在参数的属性。 1、 点击参数列表按钮或者用“Vuser>Parameter List”。参数列表对话框打开。2、 要创建新的参数,点击“New”按钮。新的参数则被添加在参数树中,该参数有一个临时的名字,你可以给它重新命名,然后回车。设置参数的类型和属性,点击“OK”,关闭参数列表对话框。注意:不要将一个参数命名为“unique”,因为这个名称是用户脚本生成器本身的。用户脚本生成器创建新的参数,但是不会自动用该参数在脚本中替换任意选中的字符串。3、 要删除已有的参数,那么,要先从参数树中选择该参数,点击“Delete”,然后确认你的行为即可。4、 要修改已有参数,那么,要先从参数树中选择该参数,然后编辑参数的类型和属性。四、理解参数的类型在你定义参数属性的时候,要指定参数值的数据源。你可以指定下列数据源类型的任何一种:Internal Data―― 虚拟用户内部产生的数据。Data Files ――存在于文件中的数据。可能是已存在的文件或者是用脚本生成器新创建的。User-Defined Functions―― 调用外部DLL函数生成的数据Internal Data包括以下几种: 1、 Date/TimeDate/Time用当前的日期/时间替换参数。要指定一个Date/Time格式,你可以从菜单列表中选择格式,或者指定你自己的格式。这个格式应该和你脚本中录制的Date/Time格式保持一致。 2、 Group NameGroup Name 用虚拟用户组名称替换参数。在创建scenario的时候,你可以指定虚拟用户组的名称。当从用户脚本生成器运行脚本的时候,虚拟用户组名称总是None。 3、 Load Generator NameLoad Generator Name用脚本负载生成器的名称替换参数。负载生成器是虚拟用户在运行的计算机。 4 Iteration NumberIteration Number用当前的迭代数目替换参数。 5、 Random NumberRandom Number用一个随机数替换参数。通过指定最大值和最小值来设置随机数的范围。 6、 Unique NumberUnique Number用一个唯一的数字来替换参数。你可以指定一个起始数字和一个块的大小。 7、 Vuser IDVuser ID用分配给虚拟用户的ID替换参数,ID是由Loadrunner的控制器在scenario运行时生成的。如果你从脚本生成器运行脚本的话,虚拟用户的ID总是-1。
loadrunner12各版本使用的都是统一的技术核心,所以没有任何区别,都适用于过模拟实际用户的 *** 作行为和实行实时性能监测,查找和发现问题。此外,LoadRunner能支持广泛的协议和技术。
LoadRunner使用虚拟用户(Virtual users)来模拟实际用户对业务系统施加压力。虚拟用户在一个中央控制器(controller station)的监视下工作。
在做一个测试方案时,要做的第一件事就是创建虚拟用户执行脚本。LoadRunner提供了Virtual User Generator来录制或编辑虚拟用户脚本。
扩展资料:
LoadRunner的自带函数:
LoadRunner有自带的随机函数,如果巧妙的加以采用,能解决一些看似很困难的实际问题。
一个项目的性能测试。与数据库直连,根据外部传入的SQL ID和SQL参数,从指定数据库中读取SQL模版,拼装成真实的SQL语句、执行,并将得到的结果放入缓存中。目的是减少数据库的压力。
该系统将支撑大量的SQL *** 作,性能自然成为备受关注的焦点之一。
由于它跟SQL语句相关,在真实环境下,同一时间可能执行着不同类型的SQL,即便是同一类型,其参数也各式各样。那么,怎样才能模拟出最符合实际情况的性能测试场景呢?
首先设计场景,即,在LoadRunner中按照比例随机取到某一类型的SQL,再随机传入参数给它,让最终的每条SQL都是随机生成,各不相同。
从场景中,可以看到,此处涉及双重随机。只采用loadruner的参数设置是无法实现的。此时需要想办法先按设定好的比例随机取到SQL,然后在每条SQL上随机取参数列表中的参数。
于是想到了loadrunner的随机函数。先实现随机取SQL ID,之后再在特定的SQL中随机取参数列表中的参数。
参考资料来源:百度百科-loadrunner
原因是因为这个随机数是用当前的时间为基数进行一系列的转换而得到随机数
如果你重复的调用这个函数在很短的时间内,它取到的时间值就差别很小,最后换算后得到的随机数就会相同了。
至于如何避免,原因已给你讲了,你自己开动脑筋解决吧!
在while里面把fromPort和toPort打印出来
lr_output_message("fromPort=%s toPort=%s",fromPort,toPort);
另外注意检查下city 参数取值是否设置为每次随机: random + Each occurrence
1、迭代
指的是一个用户运行多少次脚本,与并发用户数没有关系;1个用户迭代10次还是一个用户的压力,10个用户迭代1次是10个用户压力
2、取值方式(所取的参数化的值是按照什么逻辑获取的)
①Sequential:顺序(参数化列表第一条按顺序进行下去)
②Random:随机(随机获取列表中的数据,可能会出现重复取值)
③Uniqe:唯一(每条记录只会被抽取一次)
3、 值更新方式(设置什么情景下对参数化的值进行更新)
①each iteration:每次迭代(每进行一次迭代时就需要重新取值)
②each occurrence:每次出现(每当脚本中的参数化变量出现时就要进行重新取值)
③once:只取一次(只对参数化的变量取一次值,不在获取新值)、
4、参数化值更新各种组合情况
1)sequential
①each iteration:
当用户出现迭代时,进行值的重新获取。从第一条开始按顺序获取下去,当参数化数据不够时,场景报错
②each occurrence:
当脚本中每次出现参数化的变量时,就进行值的重新获取
③once :
脚本只取一次值
2)Random
①each iteration:
每次迭代进行重新取值,从参数化列表中随机获取值
②each occurrence:
每次出现参数化时进行重新取值,随机取值
③once:
只会取一次值
3)Uniqe
①iteration
每次迭代进行重新取值,每次迭代的参数化值是唯一的,且一条数据只能被使用一次。当参数化数据不足时,可以进行设置(中断所有用户运行、重新从第一条开始取值、以最后一条数据进行复制)
②occurrence
每次需要进行参数化取值的时候进行更新,步长值为1,每条数据只能被抽取一次
③once
只取一次
4、检查点设置
1、Virtual User Generator设置
①options-->Thumbnails-->Enable Thumbnails Explorer
②View-->Snapshot(快捷键设置也行)
在Thumbnails Explorer中找到需要设置的页面双击后,到Snapshot界面的page view中选择要检查的数据右键进行检查内容的添加
Select next row选择下一行:
顺序(Sequential):按照参数化的数据顺序,一个一个的来取。
随机(Random):参数化中的数据,每次随机的从中抽取数据。
唯一(Unique):为每个虚拟用户分配一条唯一的数据
Update value on更新时的值:
每次迭代(Each iteration) :每次迭代时取新的值,假如50个用户都取第一条数据,称为一次迭代;完了50个用户都取第二条数据,后面以此类推。
每次出现(Each occurrence):每次参数时取新的值,这里强调前后两次取值不能相同。
只取一次(once) :参数化中的数据,一条数据只能被抽取一次。(如果数据轮次完,脚本还在运行将会报错)
上面两个选项都有三种情况,如果将他们进行组合,将产生九种取值方式。
Select Next Row
选择下一行
Update Value On
更新时的值
Replay Result
结果
顺序(Sequential)
每次迭代(Each iteration)
结果:分别将15条数据写入数据表中
功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取
如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条
顺序(Sequential)
每次出现(Each occurrence)
结果:分别将15条数据写入数据表中
功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取
如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条,与(Each iteration)不同的是(Each occurrence)前后两次取值不能相同,
顺序(Sequential)
只取一次(once)
结果:表中写入15条一模一样的数据。
功能说明:每次迭代都取参数化文件中第一行的数据。
随机(Random)
每次迭代(Each iteration)
结果:表中写入15条数据,但可能有重复数据出现
功能说明:每次从参数化文件中随机选择一行数据进行赋值
随机(Random)
每次出现(Each occurrence)
结果:表中写入15条数据,但可能有重复数据出现
功能说明:每次从参数化文件中随机选择一行数据进行赋值
随机(Random)
只取一次(once)
结果:表中写入15条相同数据
功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。
注:第一次随机取了A,则后面14次都用A
唯一(Unique)
每次迭代(Each iteration)
自动分配块大小
结果:分别将15条数据写入数据表中
功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。
注:如果设置迭代次数为16次。结果:在执行第16次迭代时会抛异常,异常日志可在LoadRunner的回放日志(replayLog)中看到。
唯一(Unique)
每次出现(Each occurrence)
步长为1
结果:分别将15条数据写入数据表中
功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。
注:如果设置迭代次数为16次,而参数化文件中只有15条数据,明显数据不够。此时可以设置“when out of values”属性来判断当数据不够时的处理方式
Abort Vuser:中断虚拟用户
Countinue in a cylic manage:循环取参数化文件中的值,即:当参数化文件中的值取完后又从参数化文件的第一行开始取值。
Countinue with last value:继续用最后一条数据
唯一(Unique)
只取一次(once)
结果:表中写入15条相同的数据
功能说明:每次都取参数文件中的第一条数据进行赋值
注:如果迭代次数为15次,则每一次迭代都取第一条,特别注意的是在并发场景跑的时候要这样设置,因为这样才会出现每个用户用不同的参数,并发是同时用,而迭代是一次一次用
以上就是关于load runner 参数化设置问题全部的内容,包括:load runner 参数化设置问题、loadrunner12 各版本有什么区别、loadrunner中函数lr_paramarr_random()怎么总是随即同一个值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)