小议LoadRunner参数化数据的构造

合集下载

【IT专家】【Loadrunner】LR参数化:利用mysql数据库里面的数据进行参数化

【IT专家】【Loadrunner】LR参数化:利用mysql数据库里面的数据进行参数化

本文由我司收集整编,推荐下载,如有疑问,请与我司联系【Loadrunner】LR参数化:利用mysql数据库里面的数据进行参数

2017/09/14 200 很多同学都在自学loadrunner去做压力测试,但是如果要利用LR做压力测试,或者是其他工具,其中有一个环节是我们避开不了的,比如说:参数化今天华华就给大家简要的介绍下,如果你要做的参数化的数据来自mysql数据库,这篇文章就会给你带来帮助哟!
 必要条件1:安装好LR—这显然是废话~如果大家不知道如何安装或者是安装有问题,欢迎围观我们柠檬班的LR的免费视频!2:录制好一个脚本3:确定好你要参数化的变量4:安装好mysql-connector-odbc-3.51.30-winx64插件:没有该插件的同学,请百度。

 具体操作步骤如下: 1:在你录制好的脚本中,选择你要参数化的变量,右键点击,选择replace with parameters,并且设置好变量名是啥?比如本文中的我设置phone为变量名。

 2:在弹出的界面里设置变量名是phone之后,点击选择datawizard,进入下一个设置界面:
 3:继续下一步操作:
 4:继续下一步:
 5:继续下一步:
 6:继续下一步:
 7:选择刚刚我们安装的插件mysql数据源:。

Loadrunder之脚本篇——参数化方法

Loadrunder之脚本篇——参数化方法

Loadrunder之脚本篇——参数化⽅法导语 参数化旨在模拟多数据来进⾏测试,所以再选择参数化你明确你参数化的内容!⽅法⼀1、确定需要参数化的内容2、选中需要参数化的内容3、右键选中的内容->Replace with a Parameter->填写参数名,类型->保存4、Vuser->Parameter List中设置参数值和参数更新⽅式5、通过回放后的⽇志验证参数取值举例:编写⼀简单脚本,如下Action(){lr_eval_string(“text”);return 0;}右键选中text,然后单击⿏标右键,弹出菜单中选择“Replace with a Parameter”,将选中部分替换成参数结果如图说明:1.ParamName:参数名;2.{}:指定参数的边界,可在Tools>General Options>Parameterization中设置,如下图3.参数值被保存在菜单Vuser->Parameter List中,按Ctrl+L组合键或者单击⼯具栏上的Parameter List按钮单击Add Row可以添加⾏记录(可取的参数值)查看参数取值结果第⼀步:打开Run-Time Settins中的Log选项,选中Enable logging并且使⽤Always send messages,在Log的等级中设置使⽤Extended log 并且选中Parameter substitution,保存,如图,第⼆步:运⾏脚本,查看Output Window窗⼝中的Replay log窗⼝中出现的每次参数取值结果⽅法⼆1、View->Parameter List(Ctrl+L)中添加参数并设置值2、代码中选中要参数化的内容3、右键选中的内容->Use Existing Parameter将选中内容替换为Parameter List中所添加参数的参数举例:第⼀步:在Parameter List窗⼝中,单击左下⾓的New按钮新建参数第⼆步:设置好参数的值后,选中要参数化的内容,在右键菜单中选择Use Existing Parameter中的ParamName参数进⾏参数化,或者点击Select from parameter list,打开Parameter list,从中⾯板左侧窗格选择需要的参数。

loadrunner 参数化 路径

loadrunner 参数化 路径

loadrunner 参数化路径LoadRunner 参数化是一种常用的性能测试技术,可以有效地模拟真实世界的负载情况,实现测试数据的灵活性和可重复性。

在LoadRunner中,参数化路径是指在测试过程中将路径作为参数进行动态调整,以模拟不同用户访问不同路径的情况。

为了更好地理解LoadRunner参数化路径的使用,我们首先需要了解LoadRunner的基本原理。

LoadRunner是一款用于模拟和分析应用程序性能的测试工具,通过模拟用户的行为和生成负载来评估系统的性能。

在性能测试中,经常需要模拟大量用户同时访问不同路径的情况,以验证系统的承载能力和响应时间。

在LoadRunner中,参数化路径可以通过多种方式实现,常用的有使用数据文件、使用函数和使用正则表达式等。

下面将分别介绍这几种参数化路径的方法。

使用数据文件进行参数化路径是最常见的方法之一。

通过将路径保存在一个数据文件中,LoadRunner可以在每次执行测试时,自动从数据文件中读取不同的路径,并进行相应的访问。

这种方法适用于需要模拟大量用户访问不同路径的情况,可以有效地减少测试脚本的维护工作。

使用函数进行参数化路径是另一种常见的方法。

LoadRunner提供了一系列内置函数,可以在测试脚本中使用这些函数生成不同的路径。

例如,可以使用lr_paramarr_random函数从一个路径数组中随机选择一个路径进行访问,或者使用lr_paramarr_idx函数按照一定的顺序选择路径进行访问。

这种方法适用于需要按照一定的规则生成路径的情况,可以灵活地控制路径的生成方式。

使用正则表达式进行参数化路径是一种更为灵活的方法。

LoadRunner提供了lr_eval_string函数,可以在测试脚本中使用正则表达式从一个字符串中提取出符合某种规则的路径。

例如,可以使用正则表达式从一个HTML页面中提取出所有的链接,并将这些链接作为路径进行访问。

这种方法适用于需要从复杂的页面中提取路径的情况,可以实现更加精细的参数化路径。

Loadrunner疑惑点,参数化,关联如何定位等

Loadrunner疑惑点,参数化,关联如何定位等

Loadrunner疑惑点,参数化,关联如何定位等⼀、脚本的录制⽅⾯1.LR中脚本浏览可以使⽤两种模式:Tree图形化模式和Script脚本模式2.LR中还提供了Tasks的标签,这⾥提供了VUG建议的脚本录制开发过程,通过⼀个任务流的⽅式知道你。

3.录制选项,对于web使⽤的录制⽅式,HTML提供了两个⼤类的录制⽅式:HTML-BASED SCRIPT 和URL-BASED SCRIPT。

第⼀种:Html-based script 这种⽅式录制出来的脚本是基于html基础的,其下有两种不同类型的脚本:1. A script describing user actions基于解释⽤户⾏为的脚本,录制的脚本中包含web_link,web_submit_form函数,主要是描述⽤户做了什么操作。

(1)思考:若⼀个页⾯中有多个同名的链接,怎么办?答:ORD这个关键字可以帮助你。

=2就是点击的第⼆个。

(2)使⽤html-base Script下的A script describing user actions的好处是脚本简洁,基于⽤户操作模拟,浅显易懂,且⾃⾝包含对象检查过程,⽆需校验。

缺点是基于⽤户⾏为的模拟,在参数化和链接多个同名时难以应⽤。

(3)A script containing explicit URLs only 基于url请求的脚本录制类型。

Web_ulr()、web_submit_data()第⼆种:url-based script 这种是基于URL请求的脚本录制⽅式,会录制所有的http请求。

(1)思考:什么时候我们该⽤html-based script还是选择url-based script呢?答:⼀般来说如果我们的标准是使⽤IE访问的B/S架构,我们应该使⽤html-based下的a script containing explicit urls only这种⽅式来录制脚本,这种脚本基于url请求完成,不会带有任何前后依赖的内容。

LoadRunner性能参数设置

LoadRunner性能参数设置

加大tomcat连接数:在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100enableLookups:是否反查域名,取值为:true或false。

为了提高处理能力,应设置为falseconnectionTimeout:网络连接超时,单位:毫秒。

设置为0表示永不超时,这样设置有隐患的。

通常可设置为30000毫秒。

其中和最大连接数相关的参数为maxProcessors和acceptCount。

如果要加大并发连接数,应同时加大这两个参数。

web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

weblogic 整合参数(二)2、连接池实现下面给出连接池类和连接池管理类的主要属性及所要实现的基本接口:public class DBConnectionPool implements TimerListener{private int checkedOut;//已被分配出去的连接数private ArrayList freeConnections = new ArrayList();//容器,空闲池,根据//创建时间顺序存放已创建但尚未分配出去的连接private int minConn;//连接池里连接的最小数量private int maxConn;//连接池里允许存在的最大连接数private String name;//为这个连接池取个名字,方便管理private String password;//连接数据库时需要的密码private String url;//所要创建连接的数据库的地址private String user;//连接数据库时需要的用户名public Timer timer;//定时器public DBConnectionPool(String name, String URL, String user, Stringpassword, int maxConn)//公开的构造函数public synchronized void freeConnection(Connection con) //使用完毕之后,//把连接返还给空闲池public synchronized Connection getConnection(long timeout)//得到一个连接,//timeout是等待时间public synchronized void release()//断开所有连接,释放占用的系统资源private Connection newConnection()//新建一个数据库连接public synchronized void TimerEvent() //定时器事件处理函数}public class DBConnectionManager {static private DBConnectionManager instance;//连接池管理类的唯一实例static private int clients;//客户数量private ArrayList drivers = new ArrayList();//容器,存放数据库驱动程序private HashMap pools = new HashMap ();//以name/value的形式存取连接池//对象的名字及连接池对象static synchronized public DBConnectionManager getInstance()//如果唯一的//实例instance已经创建,直接返回这个实例;否则,调用私有构造函数,创//建连接池管理类的唯一实例private DBConnectionManager()//私有构造函数,在其中调用初始化函数init()public void freeConnection(String name, Connection con)// 释放一个连接,//name是一个连接池对象的名字public Connection getConnection(String name)//从名字为name的连接池对象//中得到一个连接public Connection getConnection(String name, long time)//从名字为name//的连接池对象中取得一个连接,time是等待时间public synchronized void release()//释放所有资源private void createPools(Properties props)//根据属性文件提供的信息,创建//一个或多个连接池private void init()//初始化连接池管理类的唯一实例,由私有构造函数调用private void loadDrivers(Properties props)//装载数据库驱动程序}3、连接池使用上面所实现的连接池在程序开发时如何应用到系统中呢?下面以Servlet为例说明连接池的使用。

LoadRunner教程场景参数设计

LoadRunner教程场景参数设计

由于场景中脚本繁多,同时设置60个脚本的“运行时设置”会提示个数限制信息,这时可以考虑通过场景的参数文件配置来批量解决这些事情,主要是提高工作效率。

选中自己保存的controller场景,鼠标右键点击编辑,就会打开场景的数据信息,就叫它参数文件吧。

Loadrunner11 以前的版本,参数后面要加上引号"",比如UseThreads="1"、Options="NOTHINK"1、各脚本运行时设置参数:在对应的脚本下面均有一个Config参数UseThreads=1 #使用线程运行并发用户UseThreads=0 #使用进程运行并发用户一般为1,使用线程跑并发ContinueOnError=1 #选中表示在出现error时,继续运行场景ContinueOnError=0 #不选中表示在出现error时,继续运行场景一般为1AutomaticTransactions=1 #该参数为1,表示选中Define each action as a transactionAutomaticTransactions=0 #该参数为0,表示不选中Define each action as a transaction一般为0AutomaticTransactionsPerFunc=1 #该参数为1,表示选中Define each step as a transactionAutomaticTransactionsPerFunc=0 #该参数为0,表示选中Define each step as a transaction一般为0[ThinkTime]Options=NOTHINK #忽略思考时间Options=RECORDED #使用录制到的思考时间一般为NOTHINK,忽略掉思考时间[LOG]LogOptions=LogDisabled #关闭日志,一般在运行场景中关闭日志,为场景速度助力LogOptions=LogBrief #打开标准日志LogOptions=LogExtended #打开扩展日志[扩展日志]在打开扩展日志时,下面log选项才有效MsgClassParameters=0 #在日志中不显示参数化或者关联数据MsgClassParameters=1 #在日志中显示参数化或者关联数据MsgClassData=0 #在日志中不返回服务器返回数据MsgClassData=1 #在日志中返回服务器返回数据MsgClassFull=0 #不选择高级跟踪,即Advanced traceMsgClassFull=1 #高级跟踪,即Advanced trace2、[ConfigUsp]中可以批量设置pacing时间RunLogicPaceConstTime="0.210" #设置pacing时间,默认是60.000,注意小数点后保留3位小数3、批量选中所有脚本Enabled=1 #选中脚本Enabled=0 #不选中脚本,即该脚本不参与本场景测试压测4、批量修改脚本所在PathPath。

9.loadrunner性能测试之参数化

9.loadrunner性能测试之参数化⼀、参数化概念1 A.位置:要参数化的值右键替换为参数2 或者快捷键栏的P图标(Ctrl+L)3 参数化后右键可以还原被参数化的值4 B.概念:对脚本中某些常量,使⽤参数来代替,减少脚本数量,更接近真实业务场景⼆、参数化之File参数化策略1 A.取值顺序2 Sequential顺序-----------------(A1)3 Random随机---------------------(A2)4 Unique唯⼀,需考虑值⽤光时策略-(A3)5 B.何时更新6 Each iteration每次迭代---------(B1)7 Each occurrence每次出现--------(B2)8 Once只取⼀次-------------------(B3)9 C.取值超出后(选择Unique后)10 Abort Vuser放弃11 Continue in a cyclic manner继续循环取12 Continue with last value⽤最后的值继续13 D.参数化策略组合情况14 -- A1B1:顺序取值,迭代才更新值,与迭代有关,不迭代该始终⽤顺去取到的值在该脚本⼀直使⽤15 A1B2:顺序取值,脚本每次出现参数,就会顺序得到新值,与迭代⽆关16 A1B3:顺序取第⼀个值后不再发⽣变化,只取⼀次,迭代也不再更新17 -- A2B1:随机取值,迭代才更新值,与迭代有关,不迭代该始终⽤顺去取到的值在该脚本⼀直使⽤18 A2B2:随机取值,脚本每次出现参数,就会随机得到新值,与迭代⽆关(登录,购买)19 A2B3:随机取第⼀个值后不再发⽣变化,只取⼀次,迭代也不再更新20 -- A3B1:顺序取值,迭代才更新值,可⾃动或⼿动分配块⼤⼩,值取尽后要看C中值超出策略21 A3B2:顺序取值,脚本每次出现参数,且⼿动设置每个vuser分配的块⼤⼩,同样考虑值超出策略(注册)22 A3B3:顺序取第⼀个值后不再发⽣变化三、参数化之数据库连接安装MySQL ODBC驱动,选择File⽅式的参数化,并且如下图进⾏配置,配置完成数据会⾃动添加到File中四、其他参数化⽅式4.1、Date/time(⽇期/时间)4.2、Group Name(组名)参数类型使⽤Vuser组名替换参数,要执⾏Vuser组的名称,否则组名始终是⽆4.3、Iteration Number(迭代编号)使⽤当前的迭代编号替换参数,格式可⾃⼰设置4.4、Load Generator Name(负载发⽣器名)使⽤Vuser脚本名替换参数4.5、Random Number(随机数)随机⽣成的整数替换参数,可通过设置最⼩值和最⼤值4.6、Unique Number(唯⼀数)启动:指的是开始的数量每个Vuser块⼤⼩:开始是1000然后每个⽤户最多+100⽤户1取值1000-1099,⽤户2取值1100-1199以此类推4.7、Vuser ID(⽤户ID)使⽤虚拟⽤户ID来替换参数值。

实训 LoadRunner测试脚本的参数化

实训LoadRunner测试脚本的参数化1.1实训目标能够使用参数化数据解决系统压力问题能够使用数据池中数据对参数变量实施参数化能够使用数据库中数据对参数变量实施参数化具备使用不同数据对系统施加预期压力的能力1.2问题引出:观察以下示例代码web_url("MercuryWebTours","URL=http://localhost/MercuryWebTours/","Resource=0","RecContentType=text/html","Referer=","Snapshot=t2.inf","Mode=HTML",LAST);lr_think_time(5);web_submit_form("login.pl","Snapshot=t3.inf",ITEMDATA,"Name=username", "Value=jojo", ENDITEM,"Name=password", "Value=bean", ENDITEM,"Name=login.x", "Value=53", ENDITEM,"Name=login.y", "Value=18", ENDITEM,LAST);代码分析:在这段代码中,用灰色背景黑色字体标识的是用户输入的用户名和口令,如果直接使用这段脚本对应用进行测试,则所有VU都会使用同一个用户名和口令登录系统。

如果要模拟更加真实的应用场景(例如,不同权限的用户执行同一个操作),就有必要将用户名和口令用变量代替,为变量的取值准备一个“数据池”并设定变量的取值规则,这样每个VU在执行的时候就能根据要求取不同的值。

loadrunner 参数化加条件逻辑

LoadRunner是一款用于性能测试的工具,它可以模拟多种应用程序的行为,以便找出系统在压力下的性能瓶颈。

参数化和条件逻辑是LoadRunner中非常重要的一部分,它们可以帮助用户更好地模拟真实的用户行为,使测试结果更加准确和可靠。

在使用LoadRunner进行性能测试时,需要模拟大量的用户行为,以此来测试系统的性能。

而真实的用户行为是多种多样的,有时候一些参数的值会随着用户的行为而发生变化。

这时候,就需要使用参数化来实现这种动态的数值变化。

参数化是指在脚本中使用参数来替代固定的数值或字符串。

LoadRunner提供了多种参数化的方式,包括数据文件参数化、日期/时间参数化、随机数参数化等。

通过参数化,可以使虚拟用户的行为更接近于真实用户,从而更好地模拟系统的真实负载。

另外,条件逻辑也是LoadRunner中的重要功能之一。

在实际的用户行为中,往往需要根据不同的情况来执行不同的操作,这就需要用到条件逻辑。

LoadRunner提供了一些内置的函数和操作符来实现条件逻辑,比如if条件语句、switch语句等。

通过条件逻辑,可以模拟用户在不同情况下的不同行为,从而更加准确地测试系统的性能。

接下来,我们将分别介绍LoadRunner中参数化和条件逻辑的使用方法,以及一些注意事项和最佳实践。

一、参数化的使用方法1. 数据文件参数化在LoadRunner中,可以使用数据文件来对请求中的参数进行参数化。

数据文件可以是文本文件、Excel文件等。

在脚本中,可以使用lr_paramarr_load函数来加载数据文件,并使用lr_paramarr_idx函数来获取文件中的数据。

这样就可以实现对请求参数的动态变化。

2. 日期/时间参数化有些场景下,需要对日期和时间进行参数化,比如模拟用户在不同时间段对系统的访问。

LoadRunner提供了一些内置的日期/时间函数,比如lr_save_datetime、lr_save_string等。

Loadrunner系统知识(非常好)

LoadRunner内部结构1,被测系统是由驱动进程mdrv.exe(多线程驱动的进程)和r3vuser.exe 来产生压力的,其中r3vuser.exe仿真应用程序的客户端,如IE浏览器。

它执行了三个主要的操作:Kli> cpp (C 语言pre-processor)1)cci (C语言编译器),建立ci文件,然后使用被测系统的协议相关的驱动来执行。

通过在Windows批处理脚本中启动Mdrv.exe来默默地启动运行。

Mdrv能自动停止加载Vuser,因为他们与Vuser和Windows负载生成器上的CPU使用监视器之间互相通信。

在Windows机器上,对于每一个基于Java的Vuser都有一个独立的JVM。

2,虚拟用户通过在负载生成器客户端机器上使用agent(3900 magentproc.exe)作为服务或者进程来按照组(在指定的负载生成器上运行相同脚本的虚拟用户的集合)启动虚拟用户。

3,每一个拥有代理的机器维护一个在.qtp文件中的执行日志。

4,当日志被启用后,代理同样会在结果文件中为每一个虚拟用户(由虚拟用户组分开)建立一系列日志文件。

5,在执行过程中,这些文件可以通过在Controller机器上的view > Show Output窗口中显示。

6,在预先设置延时上,Controller上运行的Scheduler指导代理(通过Windows 54345端口,或者Unix上的动态端口)去初始化场景会话.Controller(wlrun.exe)在请求中发送一份场景的拷贝.7,代理是由每一个负载生成器上的Remote Agent Dispatcher进程(以前叫Remote Command Launcher(RCL))启动的.8,每一个根据场景(.lrs)定义文件中设置的代理来决定哪一个虚拟用户组和脚本需要在主机上运行.## 这就是说Controller可以从DOS的批处理文件(.batch)中启动. REM Start Controller:SET M_ROOT=C:\Program Files\Mercury Interactive\LoadRunner\bincd %M_ROOT%wlrun.exe -TestPath D:\Dev\Dev1.lrs -port 8080 -Run -DontClose●包含的-Run 参数与手动的点”开始场景”自动运行是一样的. 这不是一个很好的方法,因为你可能需要决定从以前的运行中收集文件或者想改变输出文件夹.●这是假设系统环境变量PATH已经被更新了,包括LoadRunner的安装.9, Controller通过使用Windows 操作系统文件夹里的参数值来启动.因为LoadRunner被设计成在一个机器上一次只能运行一个Controller实例,所以需要使用Windows文件夹.## 为了在几个应用之间快速的切换, 在Controller工作之后保存LoadRunner的ini文件, 然后使用记事本来制作一个批处理文件. 在执行wlrun之前拷贝应用程序的指定版本的ini文件. 下面是一个应用程序文件拷贝的例子:copy %WinDir%/wlrun7-XXX.ini %WinDir%/wlrun7.inicopy %WinDir%/wlrun7-XXX.dft %WinDir%/wlrun7.dft需要修改一些默认值:●在wlrun7.ini文件的output区域,MaxNumberOfOutputMessages=from 10000 to 100000, 这就限制了存储在数据库中的输出信息的数目.●MaxOutputUIRowsToShow限制了在Controller的输出窗口中显示的信息/错误行总数.●在LoadRunner程序文件的dat\protocols 文件夹下的QTWeb.lrp文件的[Vugen]部分, 添加一个MaxThreadPerProcess=5来限制由每个负载生成器mdrv.exe进程管理的线程数.●存储在wlrun5.ini 和wlrun7.dft文件中的DefaultScenarioDir,DefaultscrīptDir, DefaultResultDir,[Recent File List]几个数据的值会在每次Controller改变的时候更新。

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

小议LR参数化
1. 什么是参数化
参数化的目的是向服务器批量提交符合业务逻辑的数据。这些数据可能是另一个业务已经生
成的,需要查询数据库的某些表得出。也可能是首次新增的数据,只要符合业务逻辑、不违
反数据库表约束条件即可。

用于参数化的数据来源 获取方式 备注
首次新增到数据库的数据 使用数据生成工具制造
这些数据必须符合业务逻辑,
不违反数据库表的约束条件

已由其他业务模块生成的数据 从数据库表查询这些数据 向该模块编码人员学习业务,明确新增一条记录时会写到数据库的哪几张表里, 查询
这些数据时,条件应该怎么
写。

假设当前要测一个“并发用户注册”的模块,这些注册信息是数据库没有的,理论上是用户
自己填写的。而通过向开发人员学习,知道这些注册信息会最终写入到数据库的某一张表里。
如下图,PID是个人编号,NAME,AGE,JOB 都是在页面填写的基本信息。则录制脚本
回放后,应该通过查询数据库的表,看看记录数是否增加了且增加的数据可以用于其他业务
来验证脚本是否录制成功。

单纯地看LR回放是否不报错是不行的,因为有时候,即使回放没有报错,数据库却没有新
记录生成,一般是由脚本没有做好关联或参数化引起。
2. 参数化的数据怎么造?
如果数据是需要查询出来的,没什么好说的,跟开发人员学习,写出一大堆sql语句,查就
是了,顺便写好数据回滚的语句,在重复测试某个业务的时候就派上了用场。并不是某张表
的每个字段都需要放到参数化文件里,注意脚本里提交什么,就放什么。

如果是造数据,一般都是先分析需要把哪几个字段提交给数据库,然后用Excel (少量数据)
或者DATAFACTORY(大量数据)把这些字段的值造出来。如下图,Excel的 “自动填充
选项”可以很方便的生成这种数据

几个小技巧:
 在controller里同时运行几个动作相同、设置不同(如think time、模拟网速、集结点)
的脚本时,可以在参数化的时候,给某个字段加上“组标识”(如上图中G1、G3,这
些组的设置不同)这样做完测试后,再查询“数据库表记录”可以看看这几个脚本生成
数据的情况。 使用这种带有标识的数据的另一个好处是:系统可能存在某个业务会因
为一条数据的关联数据量不同而处理时间不同(例如,某业务要求给若干单位下的所有
人发津贴,单位的员工数不同,发津贴用的时间不同。如果在单位编号上做了标识,则
可以看出5并发给一大批员工数为1000的单位发津贴和5并发给一大批员工数为10
的单位发津贴用的时间差多少)
并发数 每笔业务处理的记录数 平均一笔业务的耗时

5并发
每个单位下都是1000人 7秒
每个单位下都是10人 2秒
 为了保证参数化的数据不出错,分隔符尽量使用逗号,不要使用空格或制表符。
(如下图)

因为,从PLSQL、Excel拷贝出来的数据(本身就有制表符号),倘若某一条记录有空格,
它在TXT中又是空白的,肉眼很难看出来。 大批量的数据替换可以使用Ultra Edit非常棒
的文本处理工具。
还有一点需要注意的就是,如果每条参数化的数据只能在未来的其他业务里用一遍,则参数
化脚本里应该参照下图(红色部分)设置

这个Allocate values for each Vuser 的意思也曾让我费解。不知道我以下的解释对不对:
在这个空格里填写的数 N , 乘以将来controller里给这个脚本分配的Vuser数 X
应该等于(也可以小于,但绝不能大于)你参数化的数据量M。
换句话说, 一共造了 M 条数据, 若打算 用 X个Vuser把这M条数据压到数据库里,
则这个空格就应该填 N, N = X / M 。
为什么要用这个功能呢? 我估计是用于业务吞吐量测试, 将M笔业务(某个数量级)平
均分配给X个用户,然后看这些业务都被处理完毕需要多少时间。 因为有些Vuser会先处
理完分配给他们的业务,则按照上图的设置,他们会做退出动作。 这种测试造出的数据是
事先规划好的 ,顺便可以去查一下, 这个数据量的数据占用了多少硬盘空间。再除以测试
占用的时间,可以得到一个I/O指标。(也许这很不科学,请大家多批评指点)

相关文档
最新文档