LoadRunner使用说明Word下载.docx
- 文档编号:16211423
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:17
- 大小:262.57KB
LoadRunner使用说明Word下载.docx
《LoadRunner使用说明Word下载.docx》由会员分享,可在线阅读,更多相关《LoadRunner使用说明Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
和NetworkInstallation类似,不同的只是这种类型将把自己的计算机配置成Workstation来运行LoadRunner。
如果选择了第二项,我们还需要进行2.3的安装来配置Workstation.测试部门应该选择第三种安装方法。
如果只是自己学习研究,选择第一种安装方法。
3)在安装方式界面中,需要选择一种安装方式。
建议选择“自定义安装”,这样所有的组件都会一次安装。
下面对各个安装方式进行介绍:
●TypicalInstallation:
安装比较通用的组件,包括Controller、Vuser、在线帮助和脚本例程。
该选项适合于控制Vusers的机器。
●LoadGenerator只安装运行Vusers产生负载的组件。
该选项适合于只产生负载,而不控制Vusers的机器。
●MIListener安装MIListener组件,用来透过防火墙来运行Vusers并且监视性能。
●CustomInstallation自定义安装,我们将使用该选项,安装全部的组件。
4)在“LicenseInformation”中输入LicenseKey后,按“Next”继续。
5)选择安装路径。
提醒:
安装LoadRunner的各级目录不要包含中文字符。
6)按“Next”后进入拷贝文件的界面。
7)拷贝文件完成后,进入“UserLoginSettings”界面。
8)Allowvirtualuserstorunonthismachinewithoutuserlogin需要在下面输入域、用户名和密码,这样运行LoadGenerator的机器会自动登陆到网络,ManuallogintotheLoadGeneratormachine运行Vusers时,自动登陆到网络,无需登陆用户名和密码,这样Vusers就会不用任何干预自动的启动运行。
推荐选择该项。
9)重新启动后安装完成。
10)LoadRunner安装在网络驱动器上后,其他的计算机可以访问网络驱动器,安装Workstation,这样大家就可以通过网络使用LoadRunner的共享版本。
3LoadRunner的测试流程介绍
LoadRunner包含很多组件,其中最常用的有VisualUserGenerator(以下简称VuGen)、Controller,Analysis。
使用LoadRunner进行测试的过程可以用下图表示:
下面我们就按照上图的步骤来说明使用LoadRunner的测试过程。
3.1制定性能测试计划
制定性能测试计划一般情况下需要三个步骤,可以用下图表示:
下面简单的对这三个过程进行介绍。
3.1.1分析应用程序(AnalyzetheApplication)
制定负载测试计划的第一步是分析应用程序。
你应该对系统的软硬件以及配置情况非常的熟悉,这样才能保证你使用LoadRunner创建的测试环境真实的反映实际运行的环境。
11)确定系统的组成
12)描述系统配置
画出系统组成图后,试着回答以下问题,对组成图进行完善。
●预计有多少用户会连到系统
●客户机的配置情况(硬件、内存、操作系统、软件工具等)
●服务器使用什么类型的数据库以及服务器的配置情况
●客户机和服务器之间如何通讯
●还有什么组件会影响ResponseTime指标(比如Modem等)
●通讯装置(网卡、路由器等)的吞吐量是多少?
每个通讯装置能够处理多少并发用户
13)分析最普遍的使用方法
●了解该系统最常用的功能,确定那些功能需要优先测试;
●什么角色使用该系统以及每个角色会有多少人、每个角色的地理分布情况,从而预测负载的最高峰出现的情况。
3.1.2确定测试目标(DefiningTestingObjectives)
针对性能评测、负载测试、强度测试分别进行性能测试设计。
14)性能评测:
列出性能需求,验证是否满足性能需求;
15)负载测试:
●数据量的负载:
针对不同数据量执行功能操作,确定各个测试项的不同数据量大小,最大数据量负载应超过预期的最大数据负载量。
●用户量的负载:
设计不同并发用户量执行功能操作,确定各种不同负载下的并发用户数及用户分布,最大数据量负载应超过预期的最大数据负载量。
16)强度测试:
●极限测试:
测试超过预期的最大工作量,系统运行是否正常。
确定极限用户并发量峰值、数据量峰值。
●系统资源不足情况下,测试系统是否正常运行。
确定系统与哪些系统资源有关。
3.1.3计划怎样执行LoadRunner
17)确定要使用LoadRunner录制哪些测试脚本;
18)确定事务与集合点;
19)确定对测试脚本进行哪些参数化工作;
20)确定使用LoadRunner度量哪些性能参数等;
3.2开发测试脚本
开发测试脚本需要几个步骤,可以用下图来表示:
3.2.1录制用户脚本
启动VisualUserGenerator后,通过菜单新建一个用户脚本,此时根据我们测试的系统的架构来选择系统的通讯协议。
我们以C/S结构,后台数据库管理工具为MSSQLSERVER为例进行介绍。
有三种方式选择协议:
21)单协议方式——只选择一种协议
22)多协议方式——可以选择多种协议
23)选择最近协议——可从常用协议中进行选择
我们需要选择MSSQLSERVER协议,确定后系统弹出StartRecording对话框:
Applicationtype:
选择应用类型Win32Applications
Programtorecord:
程序可执行文件的位置
Programarguments:
程序可执行文件运行时所需要的参数
Workingdirectory:
程序可执行文件运行时的工作目录,例如这里填写系统相关Dll所在路径。
RecordintoAction:
选择要录制在哪段脚本中。
分为三种:
Vuser_init、Vuser_Action、Vuser_end。
(在MSSQLSERVER协议下是这种情况,其它协议下可能不同)
Vuser_init与Vuser_Action区别,在脚本重复运行时Vuser_init与Vuser_end中的脚本只运行一次,而Vuser_Action中的脚本可根据设置的运行重复次数可运行多次。
另外不能在Vuser_init与Vuser_end中添加集合点。
所以可以把不需要重复运行的脚本或者不关心性能的脚本添加到Vuser_init中,如登录操作,而把关心性能的脚本添加到Vuser_Action中。
Options:
点Options按钮,进入脚本录制的设置界面。
为了提高录制效率,我们需要在Options中进行设置,选择Script页,去掉“Generaterecordedeventslog”;
选择Database页,进入Advanced,Tracefiledetaillevel选择errortrace,ASCIIfiledetaillevel选择Off;
选中RecordStriptUsingOldRecordingEngine选项。
各种设置的具体含义请查看帮助,不一一讲述。
3.2.2完善用户脚本
当录制完一个基本的用户脚本后,在正式使用前还需要完善测试脚本,增强脚本的灵活性。
一般情况下,我们通过以下方法来完善测试脚本。
3.2.2.1插入事务
事务(Transaction):
为了衡量服务器的性能,我们需要定义事务。
比如:
我们在脚本中有一个数据查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。
这个事务的运行时间在结果中会有反映。
插入事务操作可以在录制过程中进行,也可以在录制结束后进行。
LoadRunner运行在脚本中插入不限数量的事务。
具体的操作方法如下:
在需要定义事务的操作前面,通过菜单或者工具栏的StartTransaction功能插入事务的“开始点”。
在弹出对话框中输入事务的名字。
事务的名称最好要有意义,能够清楚的说明该事务完成的动作。
插入事务的开始点后,在操作结束后,需要使用EndTransation功能插入事务的“结束点”。
开始事务与结束事务的名称必须相同,这样LoadRunner才能识别出一个事务的何时开始何时结束。
3.2.2.2插入集合点
插入集合点是为了衡量在加重负载的情况下服务器的性能情况。
集合点可以使虚拟用户运行到某个点后等待其它用户,当所有用户都到达这个集合点时,所有用户同时继续运行。
例如在测试计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner就会检查同时有多少用户运行到集合点,如果不到1000人,LoadRunner就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000人时,LoadRunner命令1000人同时去提交数据,从而达到测试计划中的需求。
注意:
集合点经常和事务结合起来使用。
集合点只能插入到Action部分,vuser_init和vuser_end中不能插入集合点。
在需要插入集合点的前面,通过菜单或者工具栏操作Rendezvous功能,在对话框输入该集合点的名称。
集合点的名称最好要有意义,能够清楚的说明该集合点完成的动作。
3.2.2.3插入注释
在录制过程中或者修改脚本时可插入注释。
最好在录制过程中插入注释,这样可使脚本更清晰。
3.2.2.4参数化
如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。
这些操作都被记录到了脚本中。
当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。
为了更加真实的模拟实际环境,需要各种各样的输入。
参数化输入是一种不错的方法。
用参数表示用户的脚本有两个优点:
●可以使脚本的长度变短。
●可以使用不同的数值来测试你的脚本。
例如,要搜索不同名称的图书,仅仅需要写一个图书名称,然后对这个名称做参数化。
在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
参数化包含以下两项任务:
●在脚本中用参数取代常量值。
●设置参数的属性以及数据源。
选中需要参数化的数值,点击鼠标右键,在右键菜单中选择“Replacewithaparameter”功能,录入参数名称与参数类型。
有以下几种类型的参数:
●DateTime:
在需要输入日期/时间的地方,可以用DateTime类型来替代。
其属性设置可以选择一种格式。
也可以定制格式。
●GroupName:
暂时不知道何处能用到,但设置比较简单。
在实际运行中,LoadRunner使用该虚拟用户所在的VuserGroup来代替。
但是在VuGen中运行时,GroupName将会是None。
●LoadGeneratorName:
在实际运行中,LoadRunner使用该虚拟用户所在LoadGenerator的机器名来代替。
●IterationNumber:
在实际运行中,LoadRunner使用该测试脚本当前循环的次数来代替。
●RandomNumber:
随机数。
在属性设置中可以设置产生随机数的范围。
●UniqueNumber:
唯一的数。
在属性设置中可以设置第一个数以及递增的数的大小。
●VuserID:
在实际运行中,LoadRunner使用该虚拟用户的ID来代替,该ID是由Controller来控制的。
但是在VuGen中运行时,VuserID将会是–1。
●UserDefinedFunction:
从用户开发的dll文件提取数据。
●File:
需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据,此类型比较常用。
点“Properties…”按钮,进行属性设置窗口。
根据不同的参数类型属性设置内容也不相同。
File类型的属性设置比较复杂,在这里重点介绍。
进入File类型的属性窗口:
DataVizard:
可以使用DataVizard向导来创建数据文件,通过这个向导可以取得数据库中的数据作为参数的数据文件。
Edit:
也可以自己制作数据文件,按’Edit’按钮编辑数据文件。
AddColumn:
向数据文件中添加列;
SelectColumn:
取数据文件中的哪一列数据;
Columndelimiter:
列之间的分隔符;
FirstDataline:
从哪一行开始取数;
UpdateValueon:
设置取值的方式,设置何种情况下用相同的取值,它有以下几个选项:
●EachOccurrence:
在运行时,每遇到一次该参数,便会取一个新的值
●Eachiteration:
运行时,在每一次循环中都取相同的值
●Once:
在整个运行过程中,都取相同的值。
Selectnextrow:
设置取下一条数值的方式,它有以下几个选项:
●Sequential:
按照顺序一行行的读取。
每一个虚拟用户都会按照相同的顺序读取。
●Random:
随机的读取一个值
●Unique:
每个虚拟用户都取不同的值。
●SameLineAs某个参数(比如Name):
和前面定义的参数Name取同行的记录。
通常用在有关联性的数据上面。
UpdateValueon与Selectnextrow设置的正确与否直接关系到脚本的运行是否能够成功,所以这个设置比较重要。
如果我们要模拟多用户执行插入操作,那么UpdateValueon选择Eachiteration,Selectnextrow选择Unique,这样能保证每个虚拟用户在每一次循环运行中都能取到不同的值,不会向数据库中插入重复的记录。
WhenoutofValues:
当设置Selectnextrow为Unique时,此选项有效。
定义当没有唯一值时的处理方式,它有以下几个选项:
●AbortVuser:
当没有可取的值时,忽略虚拟用户运行。
●Continunewithacyclicmanner:
当没有可取的值时,以循环的方式运行
●Continunewithlastvalue:
当没有可取的值时,取最后一个值运行。
3.2.2.5插入函数
VuGen中可以使用C语言中比较标准的函数和数据类型,语法和C语言相同。
下面简单介绍一下比较常用的函数和数据类型。
24)控制脚本流程
if{}else{}
for{}
while{}
……………
总之C语言的控制流程的语句这里都可以直接使用。
25)字符串函数
由于在VuGen脚本中使用最多的还是字符串,所以字符串函数在脚本中使用非常频繁。
具体的语法请参考帮助说明。
strcmp比较两个字符串
strcat连接两个字符串
strcpy拷贝字符串
在VuGen中,以char*声明的字符串是只读的,如果试图给char*类型的字符串赋值的话,编译会通过,但在运行时会产生“AccessViolation”的错误。
解决这类问题,就是把字符串声明为字符数组,比如char[100]。
26)输出函数
输出函数在调试脚本时非常有用。
lr_output_message输出一条消息
27)LoadRunner提供的标准函数
lr_eval_string:
该函数功能是得到参数(参数化输入中)当前的值
lr_output_message("
temp=%s"
lr_eval_string("
{WCSParam2}"
));
lr_save_string该函数功能是把一个字符串保存到参数中
lr_save_string("
439"
"
WCSParam3"
);
3.2.2.6RunTimeSetting
当完善了测试脚本后,需要对VuGen的Run-TimeSetting进行配置。
在VuGen中进行的Run-TimeSetting设置只适用于在VuGen中运行脚本,在Controller中运行脚本时,需要在Controller中重新进行Run-TimeSetting设置。
这里仅仅对两个经常需要改动的选项进行说明:
选择“Pacing”页,Numberofiteration,设置脚本重复运行的次数。
选择“ThinkTime”页,设置是否运行thinktime,在脚本录制过程中会记录思考时间,运行脚本时,可以忽略脚本时间,提高脚本运行的效率。
如果你定义的某个事务中包含了thinktime而最后又运行了这个思考时间,那么在记录事务的响应时间时,应考虑是否需要减去思考时间。
3.2.2.7在VuGen中运行脚本
经过以上的各个步骤后,脚本就可以运行了。
执行“运行”命令后,VuGen先编译脚本,检查是否有语法等错误。
如果有错误,VuGen将会提示错误。
双击错误提示,VuGen能够定位到出现错误的那一行。
为了验证脚本的正确性,我们还可以调试脚本,比如在脚本中加断点等,操作和在VC中完全一样。
如果编译通过,就会开始运行。
然后会出现运行结果,运行结果中会显示运行的状态,如果运行有错误,将在结果中显示错误的详细信息。
3.3创建运行场景
运行场景描述在测试活动中发生的各种事件。
一个运行场景包括运行虚拟用户活动的LoadGenerator机器列表、测试脚本的列表、虚拟用户和虚拟用户组。
创建运行场景使用Controller。
在开始菜单中,启动Controller程序,出现“NewScenario”窗口。
如果没有出现,可以在菜单或者工具栏中点击“New”。
也可以在VuGen中选择“CreatecontrollerScenario”创建场景。
场景创建的类型有两种,一种是手工创建场景,一种是目标定位创建场景。
3.3.1手工创建场景
3.3.1.1ManualScenario:
该项要完全手动的设置场景。
28)在“Design”中选择要执行的测试脚本;
29)设置每个脚本运行的虚拟用户数;
30)设置每个脚本运行的LoadGenarator,即产生负载的计算机。
LoadGenerator在“Generators”中维护,这些产生负载的计算机也需要安装LoadRunner,并且Generator启动。
31)设置每个脚本的“Run-TimeSetting”,这个功能与VuGen中“Run-TimeSetting”的功能相同。
32)设置“EditSchedule”
下面重点讲解“EditSchedule”:
可以自定义Schedule,并保存,系统默认提供三种Schedule,也可以对这三种Schedule进行修改。
定义Schedule,SchedulebyScenario对整个场景进行设置,SchedulebyGroup对每个用户组单独进行设置。
●SchedulebyScenario
RampUp:
加载用户时的设置,设置用户可以设置是否同时加载所有用户,或者设置每间隔多长时间加载多少一定量的用户;
Duration:
在运行当中的设置,Rununtilcompletion表示所有用户运行完后脚本就停止;
Runfor表示用户加载完后继续运行的时间;
RunIndifinitely表示一直运行不停止;
(注意:
Duration的优先级高于Run-timesetting中的Iteration,例如某个脚本设置了Iteration为2次,但Runfor设置了5分钟,那么这个脚本则一直循环运行5分钟,循环次数可能超过2次)
RampDown:
用户停止时的设置,当Duration中Runfor被选中时,RampDown内容才可设置。
可以设置同时停止所有用户运行,或者设置每个多长时间停止多少一定数量的用户;
●SchedulebyGroup
StartTime:
可以设置每个用户组在场景一开始就运行;
场景运行一段时间后运行;
在其它某个用户组运行完成后再运行;
RampUp;
Duration;
RampDown,这几项含义与SchedulebyScenario中该项的含义基本相同。
InitializeallVusersbeginRun:
当所有用户都处于准备状态时,才开始运行。
ScenarioStartTime:
设置场景运行的时间。
WithoutDelay表示StartScenario后立即运行场景;
Withadelayof…表示StartScenario后延迟设定的一段时间再开始;
还可以设置到某个设定的系统时间时再开始(例如有时需要在夜间运行脚本,可以设置此项)。
33)集合点
如果在脚本中设置了集合点,还需要在Controller中设置集合点策略。
在Scenario->
Rendenzvous菜单中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LoadRunner 使用说明