LoadRunner监视的性能计数器

今天,我先把我整理的一些计数器及其阈值要求等贴出来,这些计数器是针对我对windows操作系统,C/S结构的sql
      server数据库及WEB平台.net产品测试时的一些计数器;大家可以继续补充,作过unix平台上oracle数据库测试及J2EE架构及WEBLOGIC方面测试的朋友,也希望把自己使用的计数器贴出来,让大家分享。
      好了,先说这些了,希望通过这个专题,最终能让大家对自己的测试结果进行分析。
      Memory:
      内存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从
      RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000
      能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计数器开始:
      Available Mbytes:可用物理内存数. 如果Available Mbytes的值很小(4 MB
      或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。
      page/sec:
      表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec
      的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。
      page read/sec:页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5.
      越低越好。大数值表示磁盘读而不是缓存读。
      由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:
      Physical Disk\\ % Disk Time
      Physical Disk\\ Avg.Disk Queue Length
      例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时
      % Disk Time 和 Avg.Disk Queue
      Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。
      要确定过多的页交换对磁盘活动的影响,请将 Physical Disk\\ Avg.Disk sec/Transfer 和 Memory\\
      Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了
      0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。
      Page
      Faults/sec:每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。
      Cache Bytes:文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0
      运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化
      如果您怀疑有内存泄露,请监视 Memory\\ Available Bytes 和 Memory\\ Committed
      Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\\Private Bytes、Process\\Working
      Set 和Process\\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\\Pool Nonpaged
      Bytes、Memory\\ Pool Nonpaged Allocs 和 Process(process_name)\\ Pool
      Nonpaged Bytes。
      Pages per second :每秒钟检索的页数。该数字应少于每秒一页。
      Process:
      %Processor Time: 被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85%
      Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。
      Work set:
      处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。
      Inetinfo:Private
      Bytes:此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。
      Processor:监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。
      %Processor Time:如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
      %User Time:表示耗费CPU的数据库操作,如排序,执行aggregate
      functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
      %Privileged Time:(CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical
      Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max
      lazy writer IO"等措施都会降低该值。
      此外,跟踪计算机的服务器工作队列当前长度的 Server Work Queues\\ Queue Length
      计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。
      % DPC Time:越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor
      Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。
      Thread
      ContextSwitches/sec: (实例化inetinfo 和dllhost 进程)
      如果你决定要增加线程字节池的大小,你应该监视这三个计数器(包括上面的一个)。增加线程数可能会增加上下文切换次数,这样性能不会上升反而会下降。如果十个实例的上下文切换值非常高,就应该减小线程字节池的大小。
      Physical Disk:
      %Disk Time %:指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只
      %Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000
      的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。
      Avg.Disk Queue Length:指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2
      倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。
      Average Disk Read/Write Queue Length:指读取(写入)请求(列队)的平均数。
      Disk Reads(Writes)/s: 物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。
      Average Disksec/Read: 指以秒计算的在此盘上读取数据的所需平均时间。
      Average Disk sec/Transfer:指以秒计算的在此盘上写入数据的所需平均时间。
      Network Interface:
      Bytes Total/sec :为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较
      SQLServer性能计数器:
      Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。
      Full Scans/sec(全表扫描/秒)
      每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比1或2高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q
      L查询是否可以被优化。
      Page splits/sec(页分割/秒)由于数据更新操作引起的每秒页分割的数量。
      Buffer Manager(缓冲器管理器):监视 Microsoft® SQL Server? 如何使用:
      内存存储数据页、内部数据结构和过程高速缓存;计数器在 SQL Server 从磁盘读取数据库页和将数据库页写入磁盘时监视物理 I/O。 监视 SQL
      Server 所使用的内存和计数器有助于确定: 是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server
      必须从磁盘检索数据。 是否可通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
      SQL Server 需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理 I/O 会耗费大量时间。尽可能减少物理 I/O
      可以提高查询性能。
      .Page Reads/sec:每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O
      的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。
      .Page Writes/sec (.写的页/秒) 每秒执行的物理数据库写的页数。
      .Buffer Cache Hit Ratio. 在“缓冲池”(Buffer Cache/Buffer
      Pool)中没有被读过的页占整个缓冲池中所有页的比率。可在高速缓存中找到而不需要从磁盘中读取的页的百分比。这一比率是高速缓存命中总数除以自 SQL
      Server
      实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存中读数据比从磁盘中读数据的开销要小得多,一般希望这一数值高一些。通常,可以通过增加
      SQL Server 可用的内存数量来提高高速缓存命中率。计数器值依应用程序而定,但比率最好为90%
      或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。
      Lazy Writes/sec(惰性写/秒)惰性写进程每秒写的缓冲区的数量。值最好为0。
      Cache Manager(高速缓存管理器) 对象提供计数器,用于监视 Microsoft® SQL Server?
      如何使用内存存储对象,如存储过程、特殊和准备好的 Transact-SQL 语句以及触发器。
      Cache Hit Ratio(高速缓存命中率,所有Cache”的命中率。在SQL Server中,Cache可以包括Log
      Cache,Buffer Cache以及Procedure Cache,是一个总体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL
      Server高速缓存对于你的系统如何有效,这是一个非常好的计数器。如果这个值很低,持续低于80%,就需要增加更多的内存。
      Latches(闩) 用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。
      Average Latch Wait Ti m e ( m s ) (平均闩等待时间(毫秒)) 一个SQL
      Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。
      Latch Waits/sec (闩等待/秒) 在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。
      Locks(锁) 提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server
      资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X)
      锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks
      对象的多个实例,每个实例代表一个资源类型上的一个锁。
      Number of Deadlocks/sec(死锁的数量/秒) 导致死锁的锁请求的数量
      Average Wait Time(ms) (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间
      Lock Requests/sec(锁请求/秒) 每秒钟某种类型的锁请求的数量。
      Memory manager:用于监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。监视 SQL Server
      实例所使用的内存有助于确定:
      是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。
      是否可以通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
      Lock blocks:服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。
      Total server memory:sql server服务器当前正在使用的动态内存总量.
      监视IIS需要的一些计数器
      Internet Information Services Global:
      File Cache Hits %、File CacheFlushes、File Cache Hits
      File Cache Hits %是全部缓存请求中缓存命中次数所占的比例,反映了IIS
      的文件缓存设置的工作情况。对于一个大部分是静态网页组成的网站,该值应该保持在80%左右。而File Cache
      Hits是文件缓存命中的具体值,File CacheFlushes
      是自服务器启动之后文件缓存刷新次数,如果刷新太慢,会浪费内存;如果刷新太快,缓存中的对象会太频繁的丢弃生成,起不到缓存的作用。通过比较File
      Cache Hits 和File Cache Flushes
      可得出缓存命中率对缓存清空率的比率。通过观察它两个的值,可以得到一个适当的刷新值(参考IIS 的设置ObjectTTL 、MemCacheSize
      、MaxCacheFileSize)
      Web Service:
      Bytes Total/sec:显示Web服务器发送和接受的总字节数。低数值表明该IIS正在以较低的速度进行数据传输。
      Connection Refused:数值越低越好。高数值表明网络适配器或处理器存在瓶颈。
      Not Found Errors:显示由于被请求文件无法找到而无法由服务器满足的请求数(HTTP状态代码404)
 
 

Loadrunner性能测试一个实例

随着测试越来越重要,其中的性能测试也受到越来越多的关注。比较普遍的性能测试工具是Loadrunner7.51,但是很多人对此性能工具不是很熟悉。本人也是总结心得体会,将做过的性能测试实例以饷大家,希望对各位做测试的朋友有所帮助。
      该方案是针对某公司试题库的性能测试。该试题库是用来对公司内部员工培训结果的一个考核。试题库在公司内部web服务器上,假设开设50个账号和密码可供 50个考生同时参加考试。要求,每台机器只能由一个用户使用,每个用户只能使用各自不同的账号登录考试系统,做完题目后,要求提交考试结果,若在制定的时间内不提交,则系统强制提交考试结果。
      但是,一般测试部门不可能有50台机器同时进行测试的。所以,可以借Loadrunner7.51模拟IP地址,修改脚本来协助测试。但是,为了保证测试结果,建议搜罗公司中所有可用的机器进行复测,因为有时候是不可以完全信赖工具的。
      现场测试环境
      硬件:50台PC机,Web服务器
      软件:Loadrunner7.0,Win2000,IE5.0和IE6.0
      人员:质控部2人,执行现场测试
      项目部22人,提供现场环境
      技术部各1人,提供技术支持
      测试要求
      50个用户拥有独立IP地址,不同的用户及密码登录,试题完成后各自同时提交。
      测试内容
      50个用户以不同的用户名和密码登录试题库。试题完成后,提交考试结果。测试考试结果是否能正常提交以及正确评分。
      测试方案
      1、 完全20台实际的PC机进行现场测试。
      (1)
      准备工作,并做计划。第一轮测试执行三遍,设定用户考试内容全部同时提交,第一遍全部使用IE5.0,第二遍10台使用IE5.0,10台使用IE6.0,第三遍全部使用IE6.0
      (2) At 9:00 ,20个用户同时登录系统
      (3) At 9:05 ,20个用户同时全部提交
      (4) 分别记录第一轮测试(三遍)的结果
      (5) 第二轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,全部使用IE5.0
      (6) At 9:15 ,20个用户同时登录系统
      (7) At 9:20 ,15个用户同时提交
      (8) At 9:25 ,剩余5个用户同时提交
      (9) 记录第二轮测试结果
      (10) 第三轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,全部使用IE6.0
      (11) At 9:15 ,20个用户同时登录系统
      (12) At 9:20 ,15个用户同时提交
      (13) At 9:25 ,剩余5个用户同时提交
      (14) 记录第三轮测试结果
      (15) 第四轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,正常提交用户使用IE5.0,延时提交用户使用IE6.0
      (16) At 9:15 ,20个用户同时登录系统
      (17) At 9:20 ,15个用户同时提交
      (18) At 9:25 ,剩余5个用户同时提交
      (19) 记录第四轮测试结果
      (20) 第五轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,正常提交用户使用IE6.0,延时提交用户使用IE5.0
      (21) At 9:15 ,20个用户同时登录系统
      (22) At 9:20 ,15个用户同时提交
      (23) At 9:25 ,剩余5个用户同时提交
      (24) 记录第五轮测试结果
      (25)
      第六轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,正常提交用户其中10个使用IE5.0,5个使用IE6.0,延时提交用户使用IE5.0
      (26) At 9:15 ,20个用户同时登录系统
      (27) At 9:20 ,15个用户同时提交
      (28) At 9:25 ,剩余5个用户同时提交
      (29) 记录第六轮测试结果
      (30) 第七轮测试准备工作,设定10个用户考试内容同时提交,另外10个用户分两次分别延时5分钟、15提交
      (31) At 9:35 ,20个用户同时登录系统
      (32) At 9:40 ,10个用户同时提交
      (33) At 9:45 ,剩余的其中5个用户同时提交
      (34) At 9:55 ,剩余的5个用户同时提交
      (35) 记录第七轮测试结果,参见第二轮测试-第六轮测试过程分别对IE5.0和IE6.0的情况进行测试
      (36) 第八轮测试准备工作,设定其中10个用户不提交,由系统强行提交
      (37) At 10:10 ,20个用户同时登录系统
      (38) At 10:15 ,10个用户同时提交
      (39) 其余用户的内容由系统强行提交
      (40) 记录第八轮测试结果,参见第二轮测试-第六轮测试过程分别对IE5.0和IE6.0的情况进行测试
      (41) 第九轮测试准备工作,设定其中10个用户同时提交,5个用户延时5分钟提交,其余用户由系统强行提交
      (42) At 10:25 ,20个用户同时登录系统
      (43) At 10:30 ,10个用户同时提交
      (44) At 10:35 ,剩余的其中5个用户同时提交
      (45) 剩余5个用户系统强制提交
      (46) 记录第九轮测试结果,参见第二轮测试-第六轮测试过程分别对IE5.0和IE6.0的情况进行测试
      2、 模拟20个用户进行测试。其中,10台是PC机,另外10台机器的IP地址是Loadrunner模拟出来的。
      (1)
      在10台实际的PC机中抽取其中一台虚拟10个IP地址,包括自身的IP地址,该机器上共11个IP地址,这11个IP地址只能全部使用IE5.0或者全部使用IE6.0
      (2) 其余9台实际的PC机分别由9个人操作,另外一台机器由一位质控部人员操作
      (3) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
      (4) 其余过程参见1
      3、 模拟20个用户进行测试。其中,5台是PC机,另外15台机器的IP地址是用Loadrunner模拟出来的。
      (1)
      在5台实际的PC机中抽取其中一台虚拟15个IP地址,包括自身的IP地址,该机器上共16个IP地址,这16个IP地址只能全部使用IE5.0或者全部使用IE6.0
      (2) 其余4台实际的PC机分别由4个人操作,另外一台机器由一位质控部人员操作
      (3) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
      (4) 其余过程参见1
      4、 模拟35个用户进行测试。其中,20台是PC机,另外15台机器的IP地址是用Loadrunner模拟出来的。
      (1) 在20台实际的PC机中抽取其中两台分别虚拟7个、8个IP地址,这17个IP地址只能全部使用IE5.0或者全部使用IE6.0
      (2) 其余18台实际的PC机分别由18个人操作,另外两台机器由两位质控部人员操作
      (3) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
      (4) 其余过程参见1
      5、 模拟50台用户进行测试。其中,20台是PC机,另外30台机器的IP地址是用分别用两台实际的PC机模拟出来的。记录测试结果。
      (1) 在20台实际的PC机中抽取其中两台分别虚拟15个IP地址,这32个IP地址只能全部使用IE5.0或者全部使用IE6.0
      (2) 其余18台实际的PC机分别由18个人操作,另外两台机器由两位质控部人员操作
      (3) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
      (4) 其余过程参见1
      6、 对5中所述情况重复测试两次。
      7、 为了保证结果的正确性,完全50台实际的PC机进行现场测试。过程参见1
      测试过程
      注:该测试过程针对虚拟IP地址情况。
      1、 一台PC机上创建15个虚拟的IP地址。首先,启动IP Wizard,如下:开始程序->Loadrunner->Tools->IP Wizard
      点击“Add”,添加你计划虚拟的IP地址。但是注意不能添加已经被占用的IP地址。
      2、 启动Virtual User
      Generator,并录制脚本,由于50个用户的账号和密码各不相同,所以,要修改脚本,设置参数。我是录制了一个脚本,复制了49份,在每个脚本中手工修改了各自不同的地方。
      3、 启动Loadrunner Controller,先将刚才保存的脚本添加进来。然后点击“Scenario”菜单,激活其中的“Enable IP
      Spoofer”。
      4、 点击屏幕右方的“Generators”,添加已经建立的IP,然后connect建立连接。
      5、对连接起来的不同用户(IP地址)分配不同的脚本,在Controller中的“design”中,点击“Load
      Generators”其中,每个脚本有一个用户执行。
      6、 执行Scenario。
 

Loadrunner中参数的设置

在做负载或者压力测试时,很多人选择使用了Loadrunner测试工具。该工具的基本流程是先将用户的实际操作录制成脚本,然后产生数千个虚拟用户运行脚本(虚拟用户可以分布在局域网中不同的PC机上),最后生成相关的报告以及分析图。但是在录制脚本的过程中会遇到很多实际的问题,比如不同的用户有不同的使用数据,这就牵涉到参数的设置问题。本文就Loadrunner中参数的设置进行说明,希望对大家有所帮助。
          录制程序运行的过程中,VuGen(脚本生成器)
      自动生成了包含录制过程中实际用到的数值的脚本。如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值。这个过程称为参数化脚本。
          
      本文主要包括如下内容:理解参数的局限性、建立参数、定义参数的属性、理解参数的类型、为局部数据类型设置参数的属性、为数据文件设置参数的属性、从已经存在的数据库中引入数据。
      除了GUI,以下的内容适合于各种类型的用户脚本。
      一、关于参数的定义
      在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本。函数中参数的值就是在录制过程中输入的实际值。
      例如,你录制了一个Web应用程序的脚本。脚本生成器生成了一个声明,该声明搜索名称为“UNIX”的图书的数据库。
      当你用多个虚拟用户和迭代回放脚本时,也许你不想重复使用相同的值“UNIX”。那么,你就可以用参数来取代这个常量。
      结果就是你可以用指定的数据源的数值来取代参数值。数据源可以是一个文件,也可以是内部产生的变量。
      用参数表示用户的脚本有两个优点:
      ① 可以使脚本的长度变短。
      ②
      可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
      参数化包含以下两项任务:
      ① 在脚本中用参数取代常量值。
      ② 设置参数的属性以及数据源。
      参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。
      另外,不是所有的函数都可以参数化的。
      二、参数的创建
      可以指定名称和类型来创建参数。不存在对脚本中参数个数的限制。
      在Web程序的用户脚本中,你可以使用如下过程在基于文本的脚本视图中创建参数。或者,也可以在基于图标的树形视图中创建参数。
      要创建一个参数:
      1、 将光标定位在要参数化的字符上,点击右键。打开弹出菜单。
      2、 在弹出菜单中,选择“Replace with a Parameter”。选择或者创建参数的对话框弹出。
      3、 在“Parameter name”中输入参数的名称,或者选择一个在参数列表中已经存在的参数。
      4、 在“Parameter type”下拉列表中选择参数类型。
      5、 点击“OK”,关闭该对话框。脚本生成器便会用参数中的值来取代脚本中被参数化的字符,参数用一对“{}”括住。
      注意:在参数化CORBA或者General-Java 用户脚本的时候,必须参数化整个字符串,而不是其中的部分。
      另外注意:除了Web或者WAP,缺省的参数括号对于任何脚本都是 “{}”。你可以在“General
      Options”对话框中的“Parameterization”标签(Tools>General Options)中定义参数括号种类。
      6、 用同样的参数替换字符的其余情况,选中参数,点击右键,弹出菜单。从弹出的菜单中,选择“Replace More
      Occurrences”。搜索和替换对话框弹出。
      “Find What”中显示了你企图替换的值。“Replace With”中显示了括号中参数的名称。
      选择适当的检验框来匹配整个字符或者大小写。如果要搜索规则的表达式(.,!,?等等),选中“Regular
      Expression”检验框,然后点击“Replace”或者“Replace All”。
      注意:小心使用“Replace All”,尤其替换数字字符串的时候。脚本生成器将会替换字符出现的所有情况。
      7、 如果想用以前定义过的参数来替换常量字符串的话,选中该字符串,点击右键,然后选择“Use Existing Parameter”,子菜单“Use
      Existing Parameters”弹出。
      从子菜单“Use Existing Parameters”选择参数,或者用“Select from Parameter
      List”来打开参数列表对话框。
      注意:如果用以前定义过的参数来替换常量字符串的话,那么,使用“Parameter List”非常方便。同时,还可以查看和修改该参数的属性。
      8、 对于已经用参数替换过的地方,如果想取回原来的值,那么,就在参数上点击右键,然后选择“Restore Original Value”。
      在Web用户脚本的树形视图中创建参数
      在Web用户脚本的树形视图中创建一个参数的步骤
      1、将光标定位在企图参数化的地方,点击右键,从弹出的菜单中选择“Properties”。则相关的属性对话框打开。
      2、点击在要参数化的参量的旁边的“ABC”形状的图标。“Select or Create Parameter”对话框打开。
      3、在“Parameter name”中输入参数的名称,或者从列表中选择一个已经存在的参数。
      4、在“Parameter type”中输入参数的类型。
      5、点击“OK”关闭该对话框。用户脚本生成器会用参数来替换最初的字符串常量,并用一个表格形状的图标替换“ABC”形状的图标。
      6、要恢复参数化以前的值,点击图标,然后从弹出的菜单中选择“Undo Parameter”,则以前的值便会重现。
      三、定义参数的属性
      创建参数完成后,就可以定义其属性了。参数的属性定义就是定义在脚本执行过程中,参数使用的数据源。
      在Web用户脚本中,你既可以在基于文本的脚本视图中定义参数属性,也可以在基于图标的树形视图中定义参数属性。下面的过程将教你如何在基于本文的脚本视图中定义参数属性。
      定义参数属性步骤:
      1、 在参数上点击右键,有菜单弹出。
      2、 在弹出的菜单中,选择“Parameter Properties”。参数属性对话框打开,显示和当前参数类型相关的属性。
      3、 输入参数的属性值。
      4、 点击“Close”关闭参数属性对话框。
      在Web用户脚本的树形视图中定义参数的属性
      1、 将关标定位在参数上,然后点击右键,选择“Properties”。属性对话框打开。
      2、 点击要定义属性的参数旁边的表格形状按钮,点击右键,选择“Parameter
      Properties”。参数属性对话框打开,和参数类型相关的属性显示出来。
      3、 输入参数的属性。
      4、 点击“Close”关闭参数属性对话框。
      使用参数列表
      使用参数列表可以在任意时刻查看所有的参数,创建新的参数、删除参数,或者修改已经存在参数的属性。
      要使用参数列表:
      1、 点击参数列表按钮或者用“Vuser>Parameter List”。参数列表对话框打开。
      2、 要创建新的参数,点击“New”按钮。新的参数则被添加在参数树中,该参数有一个临时的名字,你可以给它重新命名,然后回车。
      注意:不要将一个参数命名为“unique”,因为这个名称是用户脚本生成器本身的。
      设置参数的类型和属性,点击“OK”,关闭参数列表对话框。
      注意:用户脚本生成器创建新的参数,但是不会自动用该参数在脚本中替换任意选中的字符串。
      3、 要删除已有的参数,那么,要先从参数树中选择该参数,点击“Delete”,然后确认你的行为即可。
      4、 要修改已有参数,那么,要先从参数树中选择该参数,然后编辑参数的类型和属性。
      四、理解参数的类型
      在你定义参数属性的时候,要指定参数值的数据源。你可以指定下列数据源类型的任何一种:
      Internal Data 虚拟用户内部产生的数据。
      Data Files 存在于文件中的数据。可能是已存在的文件或者是用脚本生成器新创建的。
      User-Defined Functions 调用外部DLL函数生成的数据
      Internal Data包括以下几种:
      1. Date/Time
      Date/Time用当前的日期/时间替换参数。要指定一个Date/Time格式,你可以从菜单列表中选择格式,或者指定你自己的格式。这个格式应该和你脚本中录制的Date/Time格式保持一致。
      2. Group Name
      Group Name
      用虚拟用户组名称替换参数。在创建scenario的时候,你可以指定虚拟用户组的名称。当从用户脚本生成器运行脚本的时候,虚拟用户组名称总是None。
      3. Load Generator Name
      Load Generator Name用脚本负载生成器的名称替换参数。负载生成器是虚拟用户在运行的计算机。
      4. Iteration Number
      Iteration Number用当前的迭代数目替换参数。
      5. Random Number
      Random Number用一个随机数替换参数。通过指定最大值和最小值来设置随机数的范围。
      6. Unique Number
      Unique Number用一个唯一的数字来替换参数。你可以指定一个起始数字和一个块的大小。
      7. Vuser ID
      Vuser
      ID用分配给虚拟用户的ID替换参数,ID是由Loadrunner的控制器在scenario运行时生成的。如果你从脚本生成器运行脚本的话,虚拟用户的ID总是-1。
      五、数据文件
      数据文件包含着脚本执行过程中虚拟用户访问的数据。局部和全局文件中都可以存储数据。可以指定现有的ASCII文件、用脚本生成器创建一个新的文件或者引入一个数据库。在参数有很多已知值的时候数据文件非常有用。
      数据文件中的数据是以表的形式存储的。一个文件中可以包含很多参数值。每一列包含一个参数的数据。列之间用分隔符隔开,比如说,用逗号。
      对数据文件设置参数属性
      如果使用文件作为参数的数据源,必须指定以下内容:
      1. 文件的名称和位置
      2. 包含数据的列
      3. 文件格式,包括列的分隔符
      4. 更新方法
      如果参数的类型是“File”,打开参数属性(Parameter Properties)对话框,设置文件属性如下:
      1. 在“File
      path”中输入文件的位置,或者点击“Browse”指定一个已有文件的位置。缺省情况下,所有新的数据文件名都是“parameter_name.dat”,注意,已有的数据文件的后缀必须是.dat。
      2.
点击“Edit”。记事本打开,里面第一行是参数的名称,第二行是参数的初始值。使用诸如逗号之类的分隔符将列隔开。对于每一新的表行开始一行新的数据。
      注意:在没有启动记事本的情况下如果想添加列,就在参数属性对话框中点击“Add Col”,那么“Add new
      column”对话框就会弹出。输入新列的名称,点击“OK”。脚本生成器就会添加该列到表中,并显示该列的初始值。
      3. 在“Select
      Column”部分,指明包含当前参数数据的列。你可以指定列名或者列号。列号是包含你所需要数据的列的索引。列名显示在每列的第一行(row 0)。
      4. 在“Column delimiter”中输入列分隔符,你可以指定逗号、空格符等等。
      5. 在“First data line”中,在脚本执行的时候选择第一行数据使用。列标题是第0行。若从列标题后面的第一行开始的话,那就在“First
      data line”中输入1。如果没有列标题,就输入0。
      6. 在“Select next
      row”中输入更新方法,以说明虚拟用户在脚本执行的过程中如何选择表中的数据。方法可以是:连续的、随机的、唯一的、或者与其它参数表的相同行。
      7. 选中“Advance row each iteration”表示虚拟用户在每次迭代都使用新的一行数据而不是所有的迭代都使用相同的数据。
      从文件中更新参数值
      若使用文件中的数值,脚本生成器会要求你指定给参数分配数值给的方法。可用的方法有:
      1. 顺序(Sequential):该方法顺序地给虚拟用户分配参数值。如果正在运行的虚拟用户访问数据表的时候,它会取到下一行中可用的数据。
      2. 随机(Random):该方法在每次迭代的时候会从数据表中取随机数
      3. 使用种子取随机顺序(Use Random Sequence with
      Seed):如果从Loadrunner的控制器来运行scenario,你可以指定一个种子数值用于随机顺序。每一个种子数值在测试执行的时候代表了一个随机数的顺序。无论你何时使用这个种子数值,在scenario中同样的数据顺序就被分配给虚拟用户。如果在测试执行的时候发现了一个问题并且企图使用同样的随机数序列来重复测试,那么,你就可以启动这个功能(可选项)。
      4. 唯一(Unique):Unique方法分配一个唯一的有顺序的值给每个虚拟用户的参数。
      5. 与以前定义的参数取同一行(Same Line As
      ):该方法从和以前定义过的参数中的同样的一行分配数据。你必须指定包含有该数据的列。在下拉列表中会出现定义过的所有参数列表。注意:至少其中的一个参数必须是Sequential、Random或者Unique。
      如果数据表中有三列,三个参数定义在列表中:id1,name1和title1,如下:。
      ID Name Title
      132 Kim Manager
      187 Cassie Engineer
      189 Jane VP
      对于参数id1,你可以指示虚拟用户使用Random方法,而为参数name1和title1就可以指定方法“Same Line as
      id1”。所以,一旦ID“132”被使用,那么,姓名(Name)“Kim”和职位(Title)“Manager”同时被使用。
      六、从已存在的数据库中导入数据
      Loadrunner允许你利用参数化从已经存在的数据库中导入数据。可以使用下列两种方式之一:
      1. 使用Microsoft Query(要求在系统上先安装MS Query)。
      2. 指定数据库连接字符串和SQL语句。
      用户脚本生成器在从数据库中导入数据的过程中提供了一个向导。在向导中,你指明如何导入数据-通过MS
      Query创建查询语句或者直接书写SQL语句。在导入数据以后,以.dat为后缀并作为正规的参数文件保存。
      要开始导入数据库中数据的过程,在参数属性对话框中点击“Data Wizard”,则,数据库查询向导弹出。
      要创建新的查询
      1. 选择“Create new query”。如果需要MS Query的帮助,选择“Show me how to use Microsoft
      Query”,然后点击“Finish”。
      如果你还没有安装Microsoft Query,Loadrunner会提示你这个功能不可用。在进行之前,从Microsoft Office中安装MS
      Query。
      2. 在Microsoft Query中遵循以下步骤,导入期望的表和列。
      3. 在完成数据的导入后,选择“Exit and return to Virtual User
      Generator”,然后点击“Finish”。在参数属性对话框中数据库记录以data文件的形式显示出来。
      要在MS Query中编辑并查看数据,选择“View data or edit in Microsoft
      Query”。若要结束,则选择“File>Exit and return to Virtual User Generator”返回到脚本生成器。
      4. 在“Select Column”部分,指定包含当前参数数据的列可以指定列号或者列名。注意:列标题默认为第0行(row 0)。
      5. 从“Select next
      row”列表中选择一个更新方法来告诉虚拟用户在脚本指定的过程中如何选择表中的数据。可选项是:Sequential、Random、Unique或者Same
      Line As。其中每一项的含义文章前面已经讲述,就不再赘述。
      6. 如果选择“Advance row each iteration”,虚拟用户在每次迭代的时候会使用新的一行的数据而不是重复同样的数据。
      要指定数据库连接或者SQL语句
      1. 选择“Specify SQL Statement”,然后点击“Next”。
      2. 点击“Create”指定一个新的连接字符串。选择数据源的窗口弹出。
      3.
      选择已有的数据源,或者点击“New”创建一个新的数据源。向导将提示你穿过创建ODBC数据源的过程。在完成后,连接字符串就会在连接字符串框中显示出来。
      4. 在SQL框中,输入或者粘贴SQL语句。
      5. 点击“Finish”继续SQL语句并导入数据。数据库记录将以data文件的形式显示在参数属性框中。
      6. 在“Select Column”部分中,指定包含当前参数数据的列。你可以指定列号或者列名。
      7. 从“Select next
      row”列表中选择一个更新方法来告诉虚拟用户在脚本指定的过程中如何选择表中的数据。可选项是:Sequential、Random、Unique或者Same
      Line As。
      8. 如果选择“Advance row each iteration”,虚拟用户在每次迭代的时候会使用新的一行的数据而不是重复同样的数据。
posted @ 2011-02-15 10:29  广陵散仙(www.cnblogs.com/junzhongxu/)  阅读(481)  评论(0编辑  收藏  举报