LoadRunner入门教程.docx
《LoadRunner入门教程.docx》由会员分享,可在线阅读,更多相关《LoadRunner入门教程.docx(21页珍藏版)》请在冰点文库上搜索。
LoadRunner入门教程
LoadRunner安装
1.解压LoadRunner安装包
2.运行setup.exe文件
3.在弹出的窗口中点击LoadRunner完整安装程序
4.按照提示进行安装,需要注意的是安装路径不要有中文字符。
LoadRunner破解
1.解压HP.LoadRunner破解文件和说明压缩包
2.将解压后文件夹中的lm70.dll和mlr5lprg.dll两个文件复制到loadrunner安装路径的bin目录下并进行覆盖
3.执行lr_Del_license(regedit).exe删除LoadRunner注册码
4.打开LoadRunner界面
5.点击configuration》》loadrunnerlicense
6.此时在弹出的窗口下方点击NewLicense按钮
7.在弹出的输入框中输入注册码:
AEACFSJI-YJKJKJJKEJIJD-BCLBR,点击OK按钮
8.此时窗口中会显示添加的注册码信息,关闭窗口后就可以正常使用LoadRunner了
LoadRunner简介
LoadRunner由四大组件组成:
VuGen、控制器、负载发生器和分析器。
1.VuGen发生器:
捕捉用户的业务流,并最终将其录制成一个脚本:
(1)选择相应的一种协议;
(2)在客户端模拟用户使用过程中的业务流程,并录制成一个脚本;
(3)编辑脚本和设置Run-TimeSettings项;
(4)编译脚本生成一个没有错误的可运行的脚本。
2.控制器(Controller):
(5)设计场景,包括手动场景设计和目标场景设计两种方式;
(6)场景监控,可以实时监控脚本的运行的情况。
可以通过添加计数器来监控Windows资源、应用服务器和数据库使用情况。
(7)场景设计的目的是设计出一个最接近用户实际使用的场景,场景设计越接近用户使用的实际情况,测试出来的数据就越接近真实值。
3.负载发生器(LoadGenerators):
模拟用户对服务器提交请求。
(8)通常,在性能测试过程中会将控制器和负载发生器分开;当使用多台负载发生器时,一定要保证负载均衡(指在进行性能测试的过程中,保证每台负载发生器均匀地对服务器进行施压)。
4.分析器(Analysis):
主要用于对测试结果进行分析。
LoadRunner脚本录制
脚本录制
录制脚本共分为五步:
新建脚本>选择网络协议>设置录制模式>脚本录制>脚本调试。
新建脚本
Loadrunner选择协议分为单协议和多协议两种模式,如何选择由被测系统所用脚本决定,下面以主流的http单协议为例简单介绍下操作步骤(LoadRunner中自带一个B/S系统,在Samples>web目录中点击StartWebService即可启动该系统):
在LoadRunner主界面点击Create/EditScripts即可打开HPVirtualUserGenerator组件;
在新打开的窗口中点击File>New按钮;
选择协议
在完成上一步后会弹出选择协议的窗口,选择NewSingleProtocolScript(单协议)PopularProtocals中的Web(HTTP/Html)协议,然后点击Create按钮即完成协议选择;
设置录制模式
在完成协议选择后会弹出录制设置窗口,在URLAddress中输入被测系统地址,然后点击Options按钮选择录制模式,
在弹出的窗口中选择Recording,可以选择HTML和URL两种模式;
下面介绍下两种模式的区别:
(1)HTML:
HTML-mode录制是缺省也是推荐的录制模式。
它录制当前网页中的HTML动作。
在录制会话过程中不会录制所有的资源。
在回放时,HTML-mode脚本积极地解析返回的信息来获得要下载的资源。
HTML-based方式对每个页面录制形成一条语句,对LoadRunner来说,在该模式下,访问一个页面,首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),然后建立几个连接分别获取相应的元素。
HTML-mode是上下文敏感方式,因为它只能在先前请求的结果的上下文之内执行。
由于许多的HTTP请求数据都是从内存中取出来的,所以语句必须在正确的前个请求之后执行。
HTML-mode录制的优点是:
a. 资源从内存中取出且在回放时下载。
因此,脚本比其他的录制方式更小且更容易阅读。
b. 由于只有较少的硬编码脚本,因此只有较少的动态数值需要关联
c. 可以插入图片检查之类的语句以检查结果是否正确。
d. 因为HTML模式回放时需要积极地解析返回的信息,因此它可能会比其他录制模式更加占用资源。
然而,HTML模式record/replay有相当大的改善,使得差异最小化且微不足道。
(2)URL
URL-mode选项指导VuGen录制来自server的所有的请求和资源。
它自动录制每一个HTTP资源为URL的步骤。
这种录制模式甚至抓取非HTML应用程序,例如applets和非浏览器的应用程序。
URL-based方式将每条客户端发出的请求录制成一条语句,对LoadRunner来说,在该模式下,一条语句只建立一个到服务器的连接,LoadRunner提供了web_concurrent_start和web_concurrent_end函数模拟HTML-based的工作方式。
如何决定选择何种录制方式:
1、基于浏览器的应用程序推荐使用HTML-BasedScript。
2、不是基于浏览器的应用程序推荐使用URL-BasedScript。
3、如果基于浏览器的应用程序中包含了JavaScript,applet等并且该脚本向服务器产生了请求,也要使用URL-BasedScript方式录制。
4、基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-BasedScript方式录制。
5、录制过程中不要使用浏览器的“后退”功能,LoadRunner对其支持不太好。
录制脚本
在选择好录制模式后,在RecordintoAction里选择脚本放置模块,LoadRunner脚本分为三个模块:
init、action、end,将主要测试业务放置在action中,init和end分别只在脚本开始和结束时运行一次,action可多次循环;
选择好后点击ok按钮开始录制脚本,需要注意的是LoadRunner11仅支持到IE9;
在录制过程中可以切换脚本模块,
操作完成后点击结束按钮,LoadRunner会自动生成脚本;
窗口中的工具条的按钮从左到右分别为开始录制、回放、停止、暂停、检查语法、新增Action、插入事务的开始、插入事务的结束、添加集合点、添加注释、运行时设置、添加检查点。
脚本调试
在脚本界面中点击红框的按钮检查脚本语法是否正确,若不报错即可点击回放按钮回放脚本查看服务器返回时候符合预期。
在回放脚本时,有一个runtimeSetting(运行时设置),由于在Controller中同样可以设置所以放到后面介绍。
参数化
Lr中可以对参数进行动态赋值,以保证脚本运行正确。
在脚本中,可以选择想要参数化的数据右键ReplacewithParameter将其替换为参数。
参数被保存在ParameterList中,单击可以打开参数列表窗口。
1.参数类型
Parametertype表示参数类型,可从下拉列表中选择需要的类型
2.参数取值
改变参数取值的方式在Selectnextrow和Updatevalueon这两个选项。
Selectnextrow用于设置取值顺序,包含四个选项:
Sequential顺序取值、Random随机取值、Unique唯一取值、Samelineas取某个参数的同行。
Updatevalueon用于设置何时改变参数取值,包含三个选项:
Eachiteration:
每次迭代更新、Eachoccurrence:
每次取值更新、Once:
只更新一次。
在不同的场景中需要设置不同的取值方式,下面的表格中简单总结一下取值的对应关系:
Updatevalueon
Selectnextrow
Sequential
Random
Unique
Eachiteration
每个用户数据相同
每个用户独立随机
根据自动或者手动分配blocksize的方式获得每个用户的数据块
Eachoccurrence
每个用户数据相同
每个用户独立随机
根据手动设置分配每个用户的数据块
Once
每个用户数据相同
每个用户独立随机
每个用户使用参数列表中的一个值
当设置的参数值不够用时,可以通过Whenoutofvalues来设置如何取值:
AbortVuser:
退出该虚拟用户。
Continueinacyclicmanner:
循环使用参数值。
Continuewithlastvalue:
重复使用最后一个参数值。
运行场景
LoadRunner中,Vugen仅作用为脚本录制和编辑,实际的测试工作是在Controller中完成的。
在Controller可以设置不同的场景来应对不同的测试需求,越贴近真实用户行为的场景越能反应系统的实际处理能力,而运行场景实际上由Controller和LoadGenerators共同完成。
Controller
新建场景
创建场景有两种方式:
1.通过VuGen直接转换当前脚本进入场景。
点击Tools>CreateControllerScenario,就可以将当前脚本转化为场景;
2.在LoadRunner主界面中选择RunLoadTests即可打开Controller,在弹出的窗口中从左侧的AvailableScripts选择测试脚本添加到右侧ScriptsinScenario中,点击OK按钮即可创建一个场景。
场景类型
场景分为目标场景和手工场景,两种场景用于不同目的的的测试。
1.目标场景(GoalScenario)
目标场景就是设置一个运行目标,通过Controller的AutoLoad功能进行自动化负载,如果测试的结果达到目标则说明系统性能符合测试目标,否则就提示无法达到目标,在目标场景中一般只关心测试结果是否满足性能需求,常用于验收测试。
选择目标场景需要在新建场景时选择Goal-OrientedScenario。
2.手工场景(Manualscenario)
手工场景是通过人工设置虚拟用户的变化,通过设计用户的添加、运行和减少的过程来模拟真实用户的请求,通过掌握场景运行过程中被测系统的资源使用情况来定位性能瓶颈并了解系统处理能力,一般在负载测试和压力测试中应用。
场景设置
目标场景
在目标场景中最重要的就是目标类型,目标场景提供了五种目标,每种目标都有独立的设置。
1.VirtualUsers
该参数表示虚拟用户数,这里只需要填写希望系统能够达到的用户数目即可。
2.HitsperSecond
该参数表示每秒点击数,是指在一秒钟能做到的点击请求数目,即客户端产生的每秒请求数(正常情况下每秒点击数等同于服务器请求响应数)。
除了要设置点击的指标,还需要设置在线用户的上下限,场景运行时会自动调整用户数来测试在一定的用户范围内系统是否都能达到定义的目标。
3.TransactionsperSecond(TPS)
该参数表示每秒事务数,一个事务代表完成一个操作,每秒事务数反映了系统的处理能力。
当脚本中含有事务函数时才可以使用,这里需要制定事务名称、TPS指标以及需要完成该指标的用户数。
4.TransactionsResponseTime
该参数表示事务的响应时间,反映了系统的处理速度以及做一个操作所需要花费的时间。
当脚本中含有事务函数时,可以设定事务响应时间的指标。
5.PagesperMinute
该参数表示每分钟页面的刷新次数,反映的系统在每分钟下能提供的Page(页面)处理能力。
页面的生成能力反映了一个系统的整体处理能力,一个页面包含了多少个点击请求。
当设置完成性能的目标后,需要设置场景运行模式,设置分为两部分:
1.ScenarioSettings(场景设置)
RunTime是指当目标达到后,需要继续运行多长时间来测试系统的稳定性。
当目标无法达成时,有两个选择:
Stopscenarioandsaveresults:
停止运行场景。
Continuescenariowithoutreaching:
继续运行场景。
2.LoadBehavior(负载生成)
LoadBehavior提供目标场景负载生成方式RampUp的设置,可以使用自动管理,也可以手工设置一个需要达到目标的时间。
设置完成后,就可以启动目标场景,Controller会自动调整用户个数形成负载。
手工场景(ManualScenario)
手工场景是由测试人员自己设置虚拟用户的变化,通过设计用户的添加和减少过程来模拟真实用户请求,完成负载生成,通过长我在负载的增加过程中系统各个组件的变化情况来定位性能瓶颈并了解系统处理能力,一般在负载测试和压力测试中应用。
手工场景的核心就是设置用户负载方式,通过ScenarioSchedule的Scheduleby和RunMode选项可以兑虚拟用户的负载方式进行设置。
手工场景在Scheduleby中分为Scenario和Group两种模式。
1.Scenario模式
Scenario模式下所有脚本都使用相同的场景模型来运行,只需要分配每个脚本使用的用户个数即可。
Scenario模式下的RunMode有两大类:
Real-worldschedule和Basicschedule。
1.1Real-worldschedule(真实场景模式)
在Real-worldschedule中可以通过AddAction来添加多个用户变化过程。
用户初始化方式有三种,一般使用默认选项,在每个虚拟用户开始运行前进行初始化。
StartVusers可以设置产生负载的用户数,一般使用每隔一段时间增加一定的用户负载方式,也可以设置为立即一次性加载用户。
Duration可以设置持续时间,一定时间的负载可以测试系统在该负载下的稳定性,也可以选择只执行一次脚本。
StopVusers设置释放虚拟用户策略,可以设置用户直接停止,也可以通过设置负载逐渐下降分析系统回收资源的能力。
上图中的配置为:
在每个虚拟用户开始运行前进行初始化;每15秒增加两个用户,共增加10个用户;在增加到10个用户后持续运行5分钟;运行完成后每30秒减少5个用户直到全部结束。
1.2Basicschedule(基础模式)
这种模式只能设置一次负载的上升持续和下降,在基础模式中,Duration持续时间会多出Runindefinitely选项,即脚本会永不停止的运行下去。
1.3多脚本运行
在Scenario模式下经常需要模拟多个脚本共同运行的情况,从而测试系统在多种业务下的处理能力。
手工场景中,用户脚本被称为Group,因为每个用户组都代表一种脚本操作,通过组名来区别脚本之间的关系。
修改各个Group的用户数可以通过在StartVusers中修改开始的用户总数,然后在Scenario菜单中选择ConvertScenariotothePercentageMode将场景用户模式改为百分比模式,或者在新建脚本时之间勾选百分比模式,然后修改各个脚本所占总用户数百分比。
2.Group模式
在Group模式中,除了可以独立设置脚本开始原则,还可以通过StartGroup策略为脚本之间设置前后运行关系。
负载生成器管理
LoadGenerators是运行脚本的负载引擎,在默认情况下使用本地的负载生成器来运行脚本,但是模拟用户行为也需要消耗一定的系统资源,所以在一台电脑上无法模拟大量的虚拟用户,这时可以通过调用多个LoadGenerators来完成大规模的性能负载。
打开Scenario菜单下的LoadGenerators打开管理界面,点击Add即可添加负载引擎,注意添加的IP对应的机器需提前安装并启动LoadGenerator服务。
添加引擎后,单机connect按钮连接,如果出现Ready说明连接成功。
运行设置
在场景运行前需要对脚本的运行策略进行设置,确保整个场景中所有用户的运行方式正确。
1.ThinkTime
在VuGen中ThinkTime默认为忽略,但是场景中会按照脚本录制的lr_think_time函数进行运行。
ThinkTime可以模拟真实用的操作等待。
ThinkTime的大小可以影响对服务器的压力,需要选取一个合适的值。
2.负载生成方式
负载生成分为进程和线程两种方式:
进程:
模拟负载的资源开销大,每个虚拟用户使用一个单独的进程完成负载,每个用户相对独立,不会互相影响。
线程:
多个用户共用一个线程,资源消耗小,但线程模式会存在不稳定的情况,导致用户脚本执行错误。
3.系统日志
VuGen中系统日志默认为Alwayssendmessages,场景中则默认为Sendmessagesonlywhenanerroroccurs,只在出现错误时记录日志,可以减少负载是记录日志的资源开销。
4.带宽模拟
带宽会直接影响事务的响应时间,这里可以为用户设置合理的带宽来模拟真实情况。
5.集合点策略
如果脚本中含有集合点,需要根据需求对集合点的策略进行设置,多脚本运行时只要设置同名的集合点即可。
系统监控
在场景运行前需要对系统进行监控,记录负载机和测试机的资源使用情况。
单机controller底部的Run标签可以切换到场景运行页面。
页面中主要包含了ScenarioGroups、ScenarioStatus、AvailableGraphs三个模块。
1.ScenarioGroups(场景用户状态)
在ScenarioGroups中列出了所有运行脚本的虚拟用户状态。
2.ScenarioStatus(场景运行状态)
ScenarioStatus列出了当前场景的状态,通过它可以了解当前负载的用户数、消耗时间、每秒点击量、事务通过/失败的个数以及系统错误的个数。
当场景运行出错时,点击Errors后的数字就可以查看错误日志。
3.AvailableGraphs(场景监控图表)
在AvailableGraphs左侧列表中,可以选择需要监控的项目,包括运行用户数、响应时间、每秒事务数、被测系统服务器资源等。
场景运行
当完成场景的设计及监控工作后,开始运行场景。
在场景运行时要保证被测环境的独立性,避免其它操作影响测试结果。
在Controller的Run页面中点击按钮即可开始运行场景。
数据收集分析
新建Analysis分析
导入场景数据生成Analysis有三种方式:
l当场景运行结束直接在Results菜单下的AnalyzeResults命令进入Analysis。
l在Analysis中打开新建菜单,找到运行场景时的结果目录。
l在场景结果目录中打开MercuryLoadRunnerResult文件。
SummaryReport
在Analysis生成结果后,首页SummaryReport,提供了整个场景数据的简单报告。
1.AnalysisSummary
Period:
场景的起止时间。
ScenarioName:
场景名称。
ResultsinSession:
场景运行的结果目录。
Duration:
场景运行的时间。
2.StatisticsSummary
MaximumRunningVusers:
场景最大用户数。
TotalThroughput(bytes):
总带宽流量。
AverageThroughput(bytes/second):
平均每秒带宽流量。
TotalHits:
总点击数。
AverageHitsperSecond:
平均每秒点击量。
单击ViewHTTPResponsesSummary可以跳转到报告的最下端查看HTTP请求的统计。
3.TransactionSummary
TotalPassed:
事务通过数,同Pass。
TotalFailed:
事务失败数,同Fail。
TotalStopped:
事务停止数,同Stop。
AverageResponseTime:
点击可以打开事务平均响应时间图表。
TransactionName:
事务名。
Minimum:
最小响应时间。
Average:
平均响应时间。
Maximum:
最大响应时间。
Std.Deviation:
响应时间方差。
90Percent:
90%的事务响应时间,这个值的意思是有90%的事务响应比它小。
4.HTTPResponsesSummary
HTTPResponses:
http请求状态。
Total:
http请求返回次数。
Persecond:
每秒请求数。
Graphs
在场景运行时可以看到一些图,这些图在Analysis中可以打开,Analysis会默认打开几张图。
这是系统最基本的几个图,反映了在不同时间段相关计数器的变化情况。
在Graphs上右键菜单中选择AddNewGraphs命令可以添加图表。
Vusers(虚拟用户状态)
Vusers用户状态提供了产生负载的虚拟用户运行状态的相关信息,可以帮助了解负载生成过程。
1.RunningVusers
反映系统形成负载的过程,随着时间的推移,虚拟用户是如何变化的。
2.Rendezvous
当场景中设置了集合点后可以打开此图,反映各个时间点上并发用户的数目。
Errors(错误统计)
当场景运行中出现错误时,错误时间和类型可以通过此图呈现。
ErrorsperSecond
通过每秒错误数可以了解在每个时间点上错误的数目,该数据越小越好,通过这个图可以定位系统何时开始不稳定,配合系统日志可以定位产生错误的原因
Transactions(事务)
这里给出了所有和事务相关的数据统计,方便了解被测系统业务处理的响应时间和吞吐量。
1.AverageTransactionResponseTime
反应随着时间的变化事务响应时间的变化情况,时间越小说明处理速度越快。
还需要注意响应时间增加的趋势,斜率越小越稳定越好。
2.TransactionsperSecond
Tps反应了系统在同一时间内能处理业务的最大能力,数据越高说明系统处理能力越强。
3.TransactionSummary
此图给出事务的Pass和Fail数,了解负载的事务完成情况。
通过事务数越多系统的处理能力越强。
4.TransactionPerformanceSummary
给出事务的平均时间、最大时间、最小时间的柱状图,方便分析事务响应时间的情况。
柱状图落差越小说明系统越稳定。
5.TransactionResponseTimeUnderLoad
给出在负载用户增长过程中响应时间的变化情况。
6.