LoadRunner使用手册
测试中心刘艳会
1 LoadRunner概要介绍
LoadRunner® 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive 的 LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。
LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。
1.1 轻松创建虚拟用户
使用LoadRunner 的Virtual User Generator,您能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定,然后将其转化为测试脚本。利用虚拟用户,您可以在Windows ,UNIX 或Linux 机器上同时产生成千上万个用户访问。所以LoadRunner能极大的减少负载测试所需的硬件和人力资源。另外,LoadRunner 的TurboLoad 专利技术能提供很高的适应性。TurboLoad 使您可以产生每天几十万名在线用户和数以百万计的点击数的负载。
用Virtual User Generator 建立测试脚本后,您可以对其进行参数化操作,这一操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。
LoadRunner 通过它的Data Wizard 来自动实现其测试数据的参数化。Data Wizard 直接
连于数据库服务器,从中您可以获取所需的数据(如定单号和用户名并直接将其输入到测试脚本。这样避免了人工处理数据的需要,Data Wizard 为您节省了大量的时间。
为了进一步确定您的Virtual user 能够模拟真实用户,您可利用LoadRunner 控制某些行为特性。例如,只需要点击一下鼠标,您就能轻易控制交易的数量,交易频率,用户的思考时间和连接速度等。
1.2 创建真实的负载
Virtual users 建立起后,您需要设定您的负载方案,业务流程组合和虚拟用户数量。用LoadRunner 的Controller,您能很快组织起多用户的测试方案。Controller 的Rendezvous 功能提供一个互动的环境,在其中您既能建立起持续且循环的负载,又能管理和驱动负载测试方案。而且,您可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载。这样,您就能将测试过程自动化。同样您还可以用Controller 来限定您的负载方案,在这个方案中所有的用户同时执行一个动作---如登陆到一个库存应用程序----来模拟峰值负载的情况。另外,您还能监测系统架构中各个组件的性能---- 包括服务器,数据库,网络设备等----来帮助客户决定系统的配置。
LoadRunner 通过它的AutoLoad 技术,为您提供更多的测试灵活性。使用AutoLoad ,您可以根据目前的用户人数事先设定测试目标,优化测试流程。例如,您的目标可以是确定您的应用系统承受的每秒点击数或每秒的交易量。
1.3 实时监测器
LoadRunner 内含集成的实时监测器,在负载测试过程的任何时候,您都可以观察到应用系统的运行性能。这些性能监测器为您实时显示交易性能数据(如响应时间和其它系统组件包括application server, web server,网路设备和数据库等的实时性能。这样,您就可以在测试过程中从客户和服务器的双方面评估这些系统组件的运行性能,从而更快地发现问题。
再者,利用LoadRunner 的ContentCheck TM ,您可以判断负载下的应用程序功能正常与否。ContentCheck 在Virtual users 运行时,检测应用程序的网络数据包内容,从中确定是否有错误内容传送出去。它的实时浏览器帮助您从终端用户角度观察程序性能状况。
1.4 分析结果以精确定位问题所在
一旦测试完毕后,LoadRunner 收集汇总所有的测试数据,并为您提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用LoadRunner 的Web 交易细节监测器,您可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。例如,这个交易细节分析机制能够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造成应用系统运行速度减慢。另外,Web 交易细节监测器分解用于客户端、网络和服务器上端到端的反
应时间,便于确认问题,定位查找真正出错的组件。例如,您可以将网络延时进行分解,以判断DNS 解析时间,连接服务器或SSL 认证所花费的时间。通过使用LoadRunner 的分析工具,您能很快地查找到出错的位置和原因并作出相应的调整。
1.5 重复测试保证系统发布的高性能
负载测试是一个重复过程。每次处理完一个出错情况,您都需要对您的应用程序在相同的方案下,再进行一次负载测试。以此检验您所做的修正是否改善了运行性能。
1.6 其他特性
利用LoadRunner, 您可以很方便地了解系统的性能。它的Controller 允许您重复执行与出错修改前相同的测试方案。它的基于HTML 的报告为您提供一个比较性能结果所需的基准,以此衡量在一段时间内,有多大程度的改进并确保应用成功。由于这些报告是基于HTML 的文本,您可以将其公布于您公司的内部网上,便于随时查阅。
所有Mercury Interactive 的产品和服务都是集成设计的, 能完全相容地一起运作。由于它们具有相同的核心技术,来自于LoadRunner和ActiveTest TM 的测试脚本,在Mercury Interactive 的负载测试服务项目中,可以被重复用于性能监测。借助Mercury Interactive的监测功能--Topaz TM 和ActiveWatch TM ,测试脚本可重复使用从而平衡投资收益。更重要的是,您能为测试的前期布署和生产系统的监测提供一个完整的应用性能管理解决方案。
l Enterprise Java Beans的测试
LoadRunner 完全支持EJB 的负载测试。这些基于Java 的组件运行在应用服务器上,提供广泛的应用服务。通过测试这些组件,您可以在应用程序开发的早期就确认并解决可能产生的问题。
l支持无线应用协议
随着无线设备数量和种类的增多,您的测试计划需要同时满足传统的基于浏览器的用户和无线互联网设备,如手机和PDA。LoadRunner 支持 2 项最广泛使用的协议:WAP和I-mode。此外,通过负载测试系统整体架构,LoadRunner 能让您只需要通过记录一次脚本,
就可完全检测上述这些无线互联网系统。
l支持Media Stream应用
LoadRunner 还能支持Media Stream应用。为了保证终端用户得到良好的操作体验和高质量Media Stream,您需要检测您的Media Stream应用程序。使用LoadRunner ,您可以记录和重放任何流行的多媒体数据流格式来诊断系统的性能问题,查找原由,分析数据的质量。
l完整的企业应用环境的支持
LoadRunner 支持广泛的协议,可以测试各种IT 基础架构。
2 安装LoadRunner
LoadRunner分为Windows版本和Unix版本。如果我们的所有测试环境基于Windows 平台,那么我们只要安装Windows版本即可。
本章讲解的安装过程就是LoadRunner7.51的Windows版本的安装。
2.1 系统要求
目前部门的测试机和工作机器足可以满足LoadRunner7.51的最低要求。不过要比较好的运行LoadRunner,内存最好在128M以上,安装LoadRunner的磁盘空间至少剩余
500M。操作系统最好为Windows 2000。
2.2 安装过程
LoadRunner的安装过程比较简单,这里我仅作简单的说明。
要开始安装LoadRunner,以Administrator的身份登陆Windows2000后,运行LoadRunner 安装目录中win32下Setup.exe即可进入安装程序。
1.在“Registration Information”界面中,输入序列号(不用改动,就是n个8
2.在安装类型界面中,选择一种安装类型
下面简单的对这三种安装类型进行介绍
l Standalone Installation 将要安装LoadRunner在一台计算机上
l Network Installation 把LoadRunner安装在一个网络驱动器上,这样任何能连接到这个网络驱动器的计算机都可以使用LoadRunner的部分或者全部组件。
l Network Installation and shortcuts 和Network Installation类似,不同的只是这种类型将把自己的计算机配置成Workstation来运行LoadRunner。如果选择了第二项,我们还需要进行2.3的安装来配置Workstation.
考虑到我们部门现在的状况,我认为应该选择第三种安装方法。如果只是自己学习研
究,选择第一种安装方法。
3.在安装方式界面中,需要选择一种安装方式。建议选择“自定义安装”,这样所有的组
件都会一次安装。
下面简单的对各个安装方式进行介绍
l Typical Installation 安装比较通用的组件,包括Controller、Vuser、在线帮助和脚本例程。该选项适合于控制Vusers的机器。
l Load Generator 只安装运行Vusers产生负载的组件。该选项适合于只产生负载,而不控制Vusers的机器。
l MI Listener 安装MI Listener组件,用来透过防火墙来运行Vusers并且监视性能。
l Custom Installation 自定义安装,我们将使用该选项,安装全部的组件。
4.在“License Information”中输入License Key后,Next,继续
5.安装路径选择界面既然是网络安装,当然要安装到一个网络驱动器上。提醒:最好把
网络驱动器映射成本机的一个盘符(比如H:盘,安装LoadRunner的各级目录不要包含中文字符。
6.Next后进入拷贝文件的界面
7.拷贝文件完成后,进入“User Login Settings”界面。
l Allow virtual users to run on this machine without user login 需要在下面输入域、用
户名和密码,这样运行Load Generator的机器会自动登陆到网络, l Manual log in to the Load Generator machine 运行Vusers时,自动登陆到网络,无需登陆用户名和密码,这样Vusers就会不用任何干预自动的启动运行。推荐
选择该项。
这里选择第一项和第二项都可以。
8.重新启动,输入映射网络驱动器的密码后,安装完成
2.3 WorkStation 安装
LoadRunner安装在网络驱动器上后,其他的计算机可以访问网络驱动器,安装Workstation,这样大家就可以通过网络使用LoadRunner的共享版本。
安装过程的主要步骤如下:
1.把网络驱动器映射到本机的一个盘符。
2.打开网络驱动器,运行其中的Setup目录下的Setup.exe
3.剩下的步骤可以参考2.2中的步骤了。
3 使用LoadRunner对Web应用进行负载/压力测试
LoadRunner包含很多组件,其中最常用的有 Visual User Generator(以下简称VuGen、Controller,Analysis。
使用LoadRunner进行测试的过程可以用下图表示
摘自LoadRunner在线帮助
下面我们就按照上图的步骤来简单说明使用LoadRunner的测试过程。
3.1 制定负载测试计划
在任何类型的测试中,测试计划都是必要的步骤。测试计划是进行成功的负载测试的关键。任何类型的测试的第一步都是制定比较详细的测试计划。一个比较好的测试计划能够保证LoadRunner能够完成负载测试的目标。
关于比较详细的信息请参考第4章。
3.2 开发测试脚本
LoadRunner使用虚拟用户的活动来模拟真实用户来操作Web应用程序,而虚拟用户的活动就包含在测试脚本中,所以说测试脚本对于测试来说是非常重要的。
开发测试脚本要使用VuGen组件。测试脚本要完成的内容有:
u每一个虚拟用户的活动
u定义结合点
u定义事务
关于比较详细的信息请参考第5章。
3.3 创建运行场景
运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。
我们使用Controller来创建运行场景。关于比较详细的信息请参考第6章。
3.4 运行测试
一切配置妥当,开始运行测试。无需多讲!
3.5 监视场景
在运行过程中,可以监视各个服务器的运行情况(DataBase Server、Web Server等。监视场景通过添加性能计数器来实现。
关于比较详细的信息请参考第7章。
3.6 分析测试结果
所有前面的准备都是为了这一步。我们需要分析大量的图表,生成各种不同的报告,最后会得出结论。
关于比较详细的信息请参考第8章。
4 制定负载测试计划
制定负载测试计划一般情况下需要三个步骤,可以用下图表示
摘自LoadRunner在线帮助
下面简单的对这三个过程进行介绍。
4.1 分析应用程序(Analyze the Application
制定负载测试计划的第一步是分析应用程序。你应该对系统的软硬件以及配置情况非常的熟悉,这样才能保证你使用LoadRunner创建的测试环境真实的反映实际运行的环境。
l确定系统的组成
画出系统的组成图。组成图要包括系统中所有的组件,以及相互之间是如何通讯的。
下面是一个系统组成图的例子,可以参考。
l描述系统配置
画出系统组成图后,试着回答以下问题,对组成图进行完善。
ü预计有多少用户会连到系统
ü客户机的配置情况(硬件、内存、操作系统、软件工具等
ü服务器使用什么类型的数据库以及服务器的配置情况
ü客户机和服务器之间如何通讯
ü还有什么组件会影响Response Time指标(比如Modem等
ü通讯装置(网卡、路由器等的吞吐量是多少?每个通讯装置能够处理多少并发用户
l分析最普遍的使用方法
了解该系统最常用的功能,确定那些功能需要优先测试、什么角色使用该系统以及每个角色会有多少人、每个角色的地理分布情况等,从而预测负载的最高峰出现的情况。
4.2 确定测试目标(Defining Testing Objectives
这里借用一段文字来说明如何确定测试目标。
摘自LoadRunner在线帮助
在这里还要确定何时开始负载测试,在不同的阶段进行什么内容的负载测试。可以用下表来说明。
4.3 计划怎样执行LoadRunner
确定要使用LoadRunner度量那些性能参数,根据测量结果计算那些参数,从而可以确定Vusers(虚拟用户的活动,最终可以确定那些是系统的瓶颈等。
在这里还要选择测试环境,测试机器的配置情况等等。
5 开发测试脚本
开发测试脚本需要几个步骤,可以用下图来表示
创建用户脚本需要用到VuGen。提示:运行VuGen最好在1024*768的分辨率下,否则有些工具栏会看不到。
5.1 录制基本的用户脚本
启动Visual User Generator后,通过菜单
新建一个用户脚本,选择系统通讯的协议。
这里我们需要测试的是Web应用,所以我们需要选择Web(HTTP/HTML协议,确定后,进入主窗体。
通过菜单
来启动录制脚本的命令。
u在URL中添入要测试的Web站点地址,这里我们以著名的Duwamish应用为例子来进行录制。
u选择要把录制的脚本放到哪一个部分,默认情况下是“Action1”。
这里简单说明一下:VuGen中的脚本分为三部分:vuser_init、vuser_end和Action。其中vuser_init和vuser_end都只能存在一个,不能再分割,而Action还可以分成无数多个部分(通过点击New按钮,新建ActionXXX。
在录制需要登陆的系统时,我们把登陆部分放到vuser_init中,把登陆后的操作部分放到Action中,把注销关闭登陆部分放到vuser_end中。(如果需要在登陆操作设集合点,那么登陆操作也要放到Action中,因为vuser_init中不能添加集合点在其他情况下,我们只要把操作部分放到Action中即可。
注意:在重复执行测试脚本时,vuser_init和vuser_end中的内容只会执行一次,重复执行的只是Action中的部分。
u“Record the application startup”默认情况下是选中的,说明应用程序一旦启动,
VuGen就会开始录制脚本;如果没有选中,应用程序启动后,VuGen出现以下对
话框,并且暂时不会开始录制脚本,用户操作应用程序到需要录制的地方,按下
“Record”按钮,VuGen才开始录制。
u点“Options”按钮,进入录制的设置窗体,这里一般情况下不需要改动。
ØRecording标签页:默认情况下选择“HTML-based Script”,说明脚本中采用HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解,推荐
这种方式录制(微软在ACT中附带的Duwamish7例子采用的就是这种方式。
“URL-based Script”说明脚本中的表示采用基于URL的方式,WAS和ACT
中的录制方式就是这种,这种方式看上去比较乱。
选择哪种方式录制,有以下参考原则:
1基于浏览器的应用程序推荐使用HTML-based Script
2不是基于浏览器的应用程序推荐使用URL-based Script。
3如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-based 方式录制4基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-based方式录制
ØAdvanced标签页:取默认情况即可。下面的图简单的说明了各项的含义。
ØCorrelation标签页:这里的内容比较重要,需要定制,主要是为了在录制过程中设置自动关联。这里资料比较少,现在还没有进行深入的研究。
由于内容比较多,就不再一一介绍各项的含义了。
根据自己的需求,选择适当的设置,然后点“OK”后,VuGen开始录制脚本。
在录制过程中,不要使用浏览器的“后退”功能,LoadRunner支持不太好!
录制过程中,在屏幕上会有一个工具条出现。
下面我们简单介绍一下各个按钮的功能。
录制的过程和WinRunner有些类似,不再多介绍。
录制完成后,按下“结束录制”按钮,VuGen自动生成用户脚本,退出录制过程。脚本参考下页的图。
5.2 完善测试脚本
当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的灵活性。一般情况下,我们通过以下方法来完善测试脚本。
5.2.1 插入事务
事务(Transaction:为了衡量服务器的性能,我们需要定义事务。比如:我们在脚本中有一个数据查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。
插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner运行在脚本中插入不限数量的事务。
具体的操作方法如下:在需要定义事务的操作前面,通过菜单或者工具栏插入。
出现以下对话框:
输入该事务的名称。注意:事务的名称最好要有意义,能够清楚的说明该事务完成的动作。
插入事务的开始点后,下面需要在需要定义事务的操作后面插入事务的“结束点”。同样可以通过菜单或者工具栏插入。
出现以下对话框:
默认情况下,事务的名称列出最近的一个事务名称。一般情况下,事务名称不用修改。
事务的状态默认情况下是LR_AUTO。一般情况下,我们也不需要修改,除非在手工编写代码时,有可能需要手动设置事务的状态。
脚本中事务的代码如下:
5.2.2 插入集合点
插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner就会检查同时
有多少用户运行到集合点,如果不到1000人,LoadRunner就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000人时,LoadRunner命令1000人同时去提交数据,从而达到测试计划中的需求。
注意:集合点经常和事务结合起来使用。集合点只能插入到Action部分,vuser_init 和vuser_end中不能插入集合点。
具体的操作方法如下:在需要插入集合点的前面,通过菜单或者工具栏操作
出现对话框
输入该集合点的名称。注意:集合点的名称最好要有意义,能够清楚的说明该集合点完
成的动作。
脚本中集合点的代码如下:
5.2.3 插入注释
注释的作用就不多说了,不过插入注释最好是在录制过程中。
具体的操作方法如下:在需要插入注释的前面,通过菜单或者工具栏操作
出现对话框
脚本中注释的代码如下:
5.2.4 参数化输入
如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。参数化输入是一种不错的方法。
用参数表示用户的脚本有两个优点:
①可以使脚本的长度变短。
②可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你
仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
参数化包含以下两项任务:
①在脚本中用参数取代常量值。
②设置参数的属性以及数据源。
参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。
另外,不是所有的函数都可以参数化的。
参数化输入的讲解,我们采用一个例子的方式来进行。
假如有以上的一个提交数据的窗体,我们想参数化高亮显示的部分(31。操作方法很简单,我们只要选中“31”,然后点鼠标右键
选择“Replace with a parameter.”,出现以下窗口:
下面我们重点介绍一下参数的类型。
n DateTime:很简单,在需要输入日期/时间的地方,可以用DateTime类型来替代。
其属性设置也很简单,选择一种格式即可。当然也可以定制格式。
n Group Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunner 使用该虚拟用户所在的Vuser Group来代替。但是在VuGen中运行时,Group Name
将会是None
n Load Generator Name:在实际运行中,LoadRunner使用该虚拟用户所在Load Generator的机器名来代替。
n Iteration Number:在实际运行中,LoadRunner使用该测试脚本当前循环的次数来代替。
n Random Number:随机数。很简单。在属性设置中可以设置产生随机数的范围
n Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小。
注意:使用该参数类型必须注意可以接受的最大数。例如:某个文本框能接受的最大数为99。当使用该参数类型时,设置第一个数为1,递增的数为1,但100个虚拟用户同时运行时,第100个虚拟用户输入的将是100,这样脚本运行将会出错。
注意:这里说的递增意思是各个用户取第一个值的递增数,每个用户相邻的两次循环之
间的差值为1。举例说明:假如起始数为1,递增为5,那么第一个用户第一次循环取值1,第二次循环取值2;第二个用户第一次循环取值为6,第二次为7;
依次类推。
n Vuser ID:设置比较简单。在实际运行中,LoadRunner使用该虚拟用户的ID来代替,该ID是由Controller来控制的。但是在VuGen中运行时,Vuser ID将会是–1。n File:需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据(下面我们将会介绍
n User Defined Function:从用户开发的dll文件提取数据。就目前我认为,这种方式没有必要。VuGen支持C语言的语法,在VuGen中重新编写类似的函数应该不难。
(一家之言,仅供参考
上面的例子中,我们取随机数即可。
点“Properties…..”按钮,进行属性设置窗口
添入随机数的取值范围为(1-50,选择一种数据格式。在Update Value on 中有以下几个选项:
n Each Occurrence:在运行时,每遇到一次该参数,便会取一个新的值
n Each iteration:运行时,在每一次循环中都取相同的值
n Once:运行时,在每次循环中,该参数只取一次值
这里我们用的是随机数,选择Each Occurrence非常合适。
下面我们再举一个file的例子。我们要用数据库中的用户名来参数化登陆用户名。
选择要参数化的数据,右键,选择“Replace with a parameter.”,出现以下窗口:
点“Properties…..”,按钮,出现以下窗口
注意:参数的文件名不要使用con.dat、pm.dat或者lpt*.dat等系统装置名下面我们将会连接数据库,从数据表中选择用户名。点“Data Wizard”按钮
使用第2项,下一步
添入连接字符串和SQL语句后,点Finish按钮,出现查询结果。
提醒:在参数数据显示区,最多只能看到100行,如果数据超过100行,只能点“Edit”按钮,进入记事本看。
“Select next row ”有以下几种选择:
n Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取
n Random:在每次循环里随机的读取一个,但是在循环中一直保持不变
n Unique:唯一的数。注意:使用该类型必须注意数据表有足够多的数。比如Controller中设定20个虚拟用户进行5次循环,那么编号为1的虚拟用户取前5
个数,编号为2的虚拟用户取6-10的数,依次类推,这样数据表中至少要有100
个数据,否则Controller运行过程中会返回一个错误。
n Same Line As 某个参数(比如Name:和前面定义的参数Name取同行的记录。
通常用在有关联性的数据上面。
我们这里取值Sequential即可。
Advance row each iteration选中即可,表示每一次循环都往前走一行。
手工输入数据比较简单,这里就不再单独介绍了。
5.2.5 插入函数
VuGen中可以使用C语言中比较标准的函数和数据类型,语法和C语言相同。下面简单介绍一下比较常用的函数和数据类型。
1.控制脚本流程
if { } else { }
for{ }
while{ }
……………
总之C语言的控制流程的语句这里都可以直接使用
2.字符串函数
由于在VuGen脚本中使用最多的还是字符串,所以字符串函数在脚本中使用非常
频繁。具体的语法请参考帮助说明。
strcmp 比较两个字符串
strcat 连接两个字符串
strcpy 拷贝字符串
……………..
注意:在VuGen中,以char*声明的字符串是只读的,如果试图给char*类型的字
符串赋值的话,编译会通过,但在运行时会产生“Access Violation”的错误。解决
这类问题,就是把字符串声明为字符数组,比如char[100]。
3.输出函数
输出函数在调试脚本时非常有用。
lr_output_message 输出一条消息
………………..
4.LoadRunner提供的标准函数
lr_eval_string 该函数功能是得到参数(参数化输入中当前的值
exg: lr_output_message(\"temp = %s\
lr_save_string 该函数功能是把一个字符串保存到参数中
exg: lr_save_string(\"439\
5.2.6 插入Text/Imag检查点
在进行压力测试时,为了检查Web服务器返回的网页是否正确,VuGen允许我们插入Text/Imag检查点,这些检查点验证网页上是否存在指定的Text或者Imag,还可以测试在
比较大的压力测试环境中,被测的网站功能是否保持正确。检查点的含义和WinRunner中的检查点功能基本上一致,这里就不再作过多的说明。
VuGen在测试Web时,有两种视图方式:TreeView/Script View。前面我们见到的一直都是Script View。在插入Text/Imag检查点时,我觉得用TreeView视图会比较方便。
在这种视图之间切换,可以通过菜单或者工具栏的方式
现在我们就切换到TreeView视图
插入检查点的步骤比较简单。添加Text/Imag检查点,可以在录制过程中,也可以在录制完
成后进行。推荐最好能在录制过程中添加Text/Imag检查点。
先在树形菜单中选择需要插入检查点的一项,然后点鼠标右键,选择将检查点插到该操作执行前还是该操作执行后。如果在该操作执行前,则选择“Insert Before”,否则选择“Insert After”。
然后弹出对话框,如下,选择“Text Check”(这里以Text检查点为例说明
OK后,出现Text Check Properties对话框
注意:这里要搜索的字符串可以使用正则表达式。然后切换到“General”标签页
确定后,即可完成添加Text检查点的任务。
添加Imag检查点的操作步骤和Text检查点差不多,这里仅仅对Imag Check Properties窗口进行说明。其他的和Text检查点类似,不再详细说明。
当然VuGen还允许插入其他类型的检查点函数,比如web_reg_find、Web_global_verification 等。而且这里也可以对搜索Text/Imag值的参数化,这里就不再一一说明。
注:如果Web窗体中包含有JavaScript脚本,那么在TreeView视图中显示可能会有问题。解决这个问题,可以设置一下。
进入设置窗口
5.3 Run-Time Setting
当完善了测试脚本后,需要对VuGen的Run-Time Setting进行配置。
下面对经常需要设置的几个标签页进行说明。
首先打开Run-Time Setting 窗口,可以通过菜单或者工具栏进行。
操作后出现Run-Time Setting窗口,打开“General”标签页
切换到“NetWork”标签页
注意:带宽越大,给Web服务器造成的压力就越大。
切换到“Preferences”标签页,这里仅仅对两个经常需要改动的选项进行说明。
切换到“ContentCheck”标签。这里的设置是为了让VuGen检测何种页面为错误页面。如果被测的Web应用没有使用自定义的错误页面,那么这里不用作更改;如果被测的Web应用使用了自定义的错误页面,那么这里需要定义,以便让VuGen在运行过程中检测,服务器返回的页面是否包含预定义的字符串,进而判断该页面是否为错误页面。如果是,VuGen 就停止运行,指示运行失败。
切换到“Think Time”标签
其它的标签设置采用默认值即可,这里不再详细的介绍。
5.4 单机运行测试脚本
经过以上的各个步骤后,脚本就可以运行了。运行脚本可以通过菜单或者工具栏来操作。
执行“运行”命令后,VuGen先编译脚本,检查是否有语法等错误。如果有错误,VuGen 将会提示错误。双击错误提示,VuGen能够定位到出现错误的那一行。为了验证脚本的正确性,我们还可以调试脚本,比如在脚本中加断点等,操作和在VC中完全一样,相信大家谁都不会感到陌生。
如果编译通过,就会开始运行。然后会出现运行结果。
结果和WinRunner中格式一样,这里不再多说明。
5.5 VuGen其他有用的功能5.5.1 压缩脚本文件
5.5.2 tools菜单
6 创建运行场景
运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。
创建运行场景使用Controller。
在开始菜单中,启动Controller程序,出现“New Scenario”窗口。如果没有出现,可以在菜单或者工具栏中点击“New”。
在新建场景的窗口,选择一种场景类型。下面对三种类型进行简单的说明。
l 1 Manual Scenario:该项要完全手动的设置场景。更加详细的信息,请参考6.1。
l 1.1 Manual Scenario with Percentage Mode:该项只有在“Manual Scenario”选中的情况下才能选择。选择该项后,在场景中我们需要定义要使用的虚拟用户的总数,
Load Generator machine机器集,然后我们为每一个脚本分配要运行的虚拟用户的
百分比。更加详细的信息,请参考第6.2章。
l 2 Goal—Oriented Scenario:在测试计划中,一般都包括性能测试要达到的目标。
选择该项后,LoadRunner基于这个目标,自动为你创建一个场景。在场景中,我
们只要定义好我们的目标即可。更加详细的信息,请参考第6.3章。
6.1 选择场景类型为Manual Scenario
6.1.1 选择Vuser Groups
在上图中,把脚本添加到场景操作很简单。
如果在已经打开的场景中,添加脚本
6.1.2 添加Load Generator Machines
点右边的“Generators”按钮,出现Load Generators窗口
添加LoadGenerator后,执行“Connect”操作,使Status为Ready,表示该机器联接正常,如果为Failed,表示该机器不能联接,请检查原因。
可以把这个列表保存下来,执行菜单命令即可。
6.1.3 添加虚拟用户
首先设置虚拟用户总数。
点右边的“VUsers”按钮即可设置,该虚拟用户将在那个Load Generators上运行。
6.1.4 设置Schedule
这里的设置是非常重要的,也是三种场景类型最重要的区别之处。点
按钮,即可进入Schedule设置窗口。
点按钮,进入Scenario Start Time窗口
如果在脚本中设置了集合点,还需要在Controller中设置集合点策略。
在菜单中调出设置集合点策略的窗口.
点按钮,进入策略设置窗口
6.1.6 设置结果文件保存路径
通过菜单操作
调出结果文件的保存路径
该路径最好在每次场景运行前重新设置一下。
6.1.7 Run-Time Setting
请参考5.3
6.2选择场景类型为Manual Scenario with Percentage Mode
该场景类型和“Manual Scenario”类型非常类似,下面简单的对他们不一样的地方进行设置。
6.3选择场景类型为Goal—Oriented Scenario
同样,只对不同的地方进行设置讲解。
点按钮,编辑该场景的目标。
注:以上的说明是以选择的目标为Virtual Users时为基础的。选择不同的目标,内容会稍微有一点不同。
下面重点说一下目标的种类。每次场景运行只能设置一个目标。
6.3.1 Virtual Users Goal
如果需要测试多少人可以同时运行Web应用,那么推荐定义Virtual Users Goal。运行定义该目标类型的场景和运行Manual类型的场景类似。
具体的定义方法很简单,不再详细的说明。
6.3.2 Hits per Second
如果想测试Web Server的真正实力,推荐定义目标类型为:Hits per Second、Pages per Minute或者Transactions per Second,这些类型都需要指定一个虚拟用户的最小值和最大值的范围。
Controller试图使用最少的虚拟用户来达到定义的目标。如果使用最少的用户,不能达到目标,Controller增加用户数,直到定义的最大值。如果使用了最多的虚拟用户数,定义的目标还没有实现,那么需要增加最大用户数,重新执行场景。
6.3.3 Transactions per Second
6.3.4 Transactions Response Time
如果想知道在多少用户并发访问网站时,事务的响应时间达到性能指标说明书中规定响应时间的最大值,那么推荐使用Transactions Response Time类型。指定需要测试的事务的名称,虚拟用户数量的最小值和最大值,还有预先定义好的事务的响应时间。
在场景运行中,如果使用了最多的虚拟用户,还不能达到定义的最大响应时间,说明Web Server还有能力接纳定义的虚拟用户的最多数量;如果在使用了部分虚拟用户,就达到了定义的最大的响应时间,或者LoadRunner提示如果使用最多数量的虚拟用户时将要超过最大响应时间,那么需要重新设计或者修补应用程序,同时可能需要升级Web Server的软硬件。
6.3.5 Pages per Minute
6.3.6 理解各种类型
如果你定义的类型是Pages per Minute、Hits/Transactions per
Second,Controller首先用最小用户数除以定义的目标,得到一个值,然后确定每个用户应该达到的hits/transactions 或者pages per minute,然后controller开始按照以下的策略加载用户:
l如果选择的是自动的加载虚拟用户,LoadRunner会首先加载50个用户。如果定义的最大用户数小于50,LoadRunner就会一次加载所有的虚拟用户。
l如果选择的是在场景运行一段时间后达到目标,LoadRunner就会尝试在定义的这段时间内达到目标,根据时间和计算出的每个用户的hits、transactions或者pages,
LoadRunner确定第一批加载多少用户。
l如果选择的是按照一定的阶段达到目标(也就是先在x长时间内达到y pages/hits,然后再达到下一个目标,LoadRunner计算每个用户应该达到的数字后,再确定第一批加载多少用户。
每加载一批用户后,LoadRunner会判断是否达到这批用户的目标。如果这批用户的目标没有达到,LoadRunner重新计算每一个用户应该达到的目标数字后,重新调整下一批加载用户的数量。默认情况下,LoadRunner每两分钟加载一批用户。
如果Controller加载了最多数量的用户还没有达到预定的目标,LoadRunner会重新计算每个用户的目标,然后同时运行最大数量的用户,尝试达到预定的目标。
如果出现以下情况,Pages per Minute、Hits/Transactions per Second类型的场景会置于“Failed”状态:
l Controller使用了指定的最大数量的用户,并且两次都没有达到目标
l所有的用户运行都失败
l没有足够的Load Generators机器(现有的机器已经超载运行的情况下
l Controller增加了几批用户后,pages per minute或者hits/transactions per second没有增加
l Controlller加载第一批用户后,定义的目标没有被捕捉到
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务