LoadRunner11实例性能测试.docx
《LoadRunner11实例性能测试.docx》由会员分享,可在线阅读,更多相关《LoadRunner11实例性能测试.docx(14页珍藏版)》请在冰点文库上搜索。
LoadRunner11实例性能测试
LoadRunner11实例性能测试
1.LoadRunner11基础
1.1术语
➤场景:
场景是一种文件,用于根据性能要求定义在每一个测试会话运行期间发生的事件。
➤Vuser:
在场景中,LoadRunner用虚拟用户或Vuser代替实际用户。
Vuser模拟实际用户的操作来使用应用程序。
一个场景可以包含几十、几百甚至几千个Vuser。
➤Vuser脚本:
Vuser脚本用于描述Vuser在场景中执行的操作。
➤事务:
要度量服务器的性能,需要定义事务。
事务表示要度量的最终用户业务流程。
1.2组件与测试流程
LoadRunner包含下列组件:
➤虚拟用户生成器:
用于捕获最终用户业务流程和创建自动性能测试脚本(也称为虚拟用户脚本)。
➤Controller:
用于组织、驱动、管理和监控负载测试。
➤负载生成器:
用于通过运行虚拟用户生成负载。
➤Analysis:
有助于查看、分析和比较性能结果。
➤Launcher:
为访问所有LoadRunner组件的统一界面。
负载测试通常由五个阶段组成:
计划、脚本创建、场景定义、场景执行和结果分析。
➤计划负载测试:
定义性能测试要求,例如并发用户的数量、典型业务流程和所需响应时间。
➤创建Vuser脚本:
将最终用户活动捕获到自动脚本中。
➤定义场景:
使用LoadRunnerController设置负载测试环境。
➤运行场景:
通过LoadRunnerController驱动、管理和监控负载测试。
➤分析结果:
使用LoadRunnerAnalysis创建图和报告并评估性能。
2.生成脚本
2.1应用程序要求
应用程序MercuryLoadRunner8.1自带的基于Web的旅行代理系统MercuryTours。
用户可以连接到Web服务器、搜索航班、预订航班并查看航班路线。
1.确保示例Web服务器正在运行。
安装和重新启动LoadRunner后,Web服务器将自动启动。
如果该服务器没有运行,请依次选择“开始”>“程序”>“MercuryLoadRunner”>“示例”>“Web”>启动Web服务器”。
2.打开MercuryTours应用程序。
选择“开始”>“程序”>“MercuryLoadRunner”>“示例”>“Web”>“MercuryWebTours应用程序”。
将打开浏览器,其中显示MercuryTours的起始页。
3.登录到MercuryTours。
成员名:
jojo,密码:
bean
假设您是负责验证应用程序是否满足业务需求的性能工程师。
项目经理向您提出了一些条件:
1MercuryTours必须在不超过90秒的响应时间内,处理10起并发航班预订业务。
2MercuryTours必须在不超过120秒的响应时间内,处理10起并发的旅行代理要求的航线检查业务。
3MercuryTours必须在不超过10秒的响应时间内,处理10起代理要求的登录和注销系统任务。
、
本教程将完成建立负载测试的整个流程,以验证应用程序是否满足每项业务要求,从而决定是否可以发行该应用程序。
计划了负载测试之后,下面开始创建脚本。
2.1录制脚本
1.启动LoadRunner,打开VuGen在Launcher窗口中,单击“LoadTesting”选项卡,单击“Create/EditScripts”。
将打开VuGen的开始页。
2.单击“NewVuserScript”,在弹出的脚本类型选项卡中,选择“web(http/html)”,确定后跳转到IntroductiontoScriptCreation向导窗口(如下图)。
3.点击左边Recording选项下的RecordAppliction,在跳转出的界面中选择按钮,弹出开始录制窗口,在“URL”地址框中,键入http:
//localhost:
1080/MercuryWebTours/。
在“RecordintoAction”框中,选择“Action”。
单击“OK”。
自动打开浏览器和浮动工具栏:
其中,点击红色按钮开始录制。
4.登陆网站,输入用户名jojo,密码bean。
登陆后点击左边的Fights,打开FindFlight页面,将ArrivalCity改为LosAngeles,左下的SeatingPreference选择Aisle(过道),点击Continue,接下来的页面继续Continue,在接下来的PaymentDentails页面,输入CreditCard:
12345678,ExpDate:
11/27,单击Continue继续,显示预定完成页面。
图2.1
4.单击左边的“Itinerary”查看路线。
5.点击“Siginoff”退出系统。
点击悬浮条上的停止按钮。
以上即完成了一次登录、预定航班、检查路线、注销的事物流程。
选择菜单栏View中的TreeView和ScriptView都可以查看录制好的脚本。
2.2运行脚本
录制好脚本之后,在运行之前先对运行做一些设置。
选择侧边栏中第二个选项Replay中的VerifyReplay,打开运行脚本向导页面。
可以在Openruntime-settings中设置运行时的一些行为。
运行时设置可以模拟各种用户活动和行为。
它们包括(列举部分):
➤RunLogic:
用户重复一组操作的次数,这里改为2。
➤Pacing:
重复操作前等待的时间
➤Log:
希望在测试期间收集的信息级别
➤ThinkTime:
用户在各步骤之间停下来进行思考的时间,通过设置随即思考时间可以模拟不同熟练操作程度的用户。
这里按照上图设置。
➤SpeedSimulation:
使用不同网络连接(例如,调制解调器、DSL和电缆)的用户
➤BrowserEmulation:
模拟用不同浏览器查看其应用程序性能的用户。
配置好之后,可以点击StartReplay开始回放。
回放后生成回放日志,可以点击上面菜单View中的OutPutWindow查看。
2.3脚本优化
2.3.1关联
创建脚本后,可以通过VuGen运行该脚本来对其进行验证。
有时候,尽管操作的录制已成功,但相同操作的播放却会失败。
因为许多应用程序使用动态值,每次使用该应用程序时这些值都会更改。
例如,某些服务器为每个新会话分配唯一的会话ID。
尝试回放录制的会话时,应用程序将创建与已录制的会话ID不同的新会话ID。
LoadRunner通过关联解决此问题。
关联将把会更改的值(在本例中为会话ID)保存为参数。
运行仿真时,Vuser并不是使用录制的值,而是使用服务器为其分配的新会话ID。
要演示常见的播放失败,需要修改MercuryTours应用程序中的设置。
此设置将通知MercuryToursWeb服务器不允许重复会话ID。
1打开“MercuryTours”。
选择“开始”>“程序”>“MercuryLoadRunner”>“示例”>“Web”>“MercuryWebTours应用程序”。
将打开浏览器,其中显示MercuryTours的起始页。
2更改服务器选项。
在MercuryWebTours起始页上单击“administration”链接。
选择第3个复选框,其标题为:
SetLOGINform'sactiontagtoanerrorpage(将LOGIN表单的操作标记设置为错误页)。
滚动到该页的底部并单击“Updata”。
滚动到该页的底部并单击“ReturntotheMercuryToursHomepage”链接。
此设置将通知服务器不允许重复会话ID。
3关闭浏览器。
此时,运行刚刚录制的脚本,会出现错误(如下图),点击Showandresolvedynamicservervalues,会打开一个新的页面,下面会显示可以关联的选项,选中后右键选择“correlation”,就完成了关联,关联成功会有一个绿色的勾。
2.3.2参数化
在模拟中,跟踪一位预订航班并选择Aisle座位的用户。
但是,在实际生活中,不同的用户会有不同的喜好。
因此,要改进测试,需要检查当用户选择不同座位首选项(过道、窗口或无)时,预订是否可以正常工作。
要达到此目的,需要参数化脚本。
用参数代替录制值Aisle。
参数值放在一个参数文件中,运行脚本时,Vuser将从参数文件中取值(aisle、window或none),从而模拟真实的旅行代理环境。
1.找到要更改数据的部分。
选择“View”>“treeview”进入树视图在测试树中,双击
,将打开如下对话框。
右列中的ABC图标表示参数为常量。
2.创建参数。
单击第七行Aisle旁边的ABC图标。
将打开“选择或创建参数”对话框。
其中“Parameter”填为seat,确定。
VuGen将使用参数图标替换ABC图标。
3.为参数制定一些示例值。
单击{seat}旁边的参数图标。
从弹出菜单中选择“参数属性”。
将打开“参数属性”对话框。
添加两个Row:
Window和None注意,值不区分大小写,确定。
这样就完成了参数化。
运行用户脚本,会发现迭代器第一次选择了Aisle,第二次选择了window。
3.运行负载测试
3.1生成负载
1.添加负载生成器。
打开Controller运行视图。
选择位于屏幕底部的“Design”选项卡(如上图),将虚拟用户的数量改为8(可以自定义)。
2.单击“Generator”按钮,将打开“负载生成器”对话框,显示localhost负载生成器计算机的详细信息(如下图)。
此处使用本地计算机作为负载生成器(默认情况下包含在场景中)。
localhost负载生成器的状态为关闭。
这表示Controller未连接到负载生成器,可以点击connect变为准备状态,完成后点击Close。
2.点击design面板上的
,打开如下窗口:
其中可以设置同时加载负载还是每隔一段时间加载一定负载,按如下图设定好(每隔30秒加载两个虚拟用户)。
3.2运行负载测试
1.打开Controller运行视图。
选择位于屏幕底部的“Run”选项卡。
2.启动场景。
单击
按钮开始运行测试。
如果第一次运行,Controller将启动场景。
结果文件自动保存到负载生成器的临时目录中。
如果是重复此测试,将提示覆盖现有结果文件。
3.3运行视图概述
打开LoadRunner,点击RunLoadTests,打开Controller,窗口中的“运行”选项卡是用来管理和监控测试的控制中心。
“运行”视图包含五个主要部分:
(下图显示一个汉化的界面,没有汉化的界面分布和功能是一样的)。
➤场景组:
位于左上窗格中,使您可以查看场景组中的Vuser的状态。
使用该窗格右侧的按钮可以启动、停止和重置场景,查看单个Vuser的状态,并且可以手动添加更多的Vuser,从而增加场景运行期间应用程序上的负载。
➤场景状态:
位于右上窗格中,使您可以查看负载测试的概要,其中包括正在运行的Vuser数以及每个Vuser操作的状态。
➤可用图树:
位于中部左侧窗格中,使您可以查看LoadRunner图列表。
要打开图,请在该树中选择一个图,然后将其拖动到图查看区域中。
➤图查看区域:
位于中部右侧窗格中,使您可以自定义显示以查看一至八个图(“视图”>“查看图”)。
➤图例:
位于底部窗格中,使您可以查看选定图中的数据。
4.分析结果
4.1Analysis窗口概述
打开“MercuryLoadRunnerLauncher”窗口,选择Analyzeloadtest。
,打开一个Analysis会话文件,就出现了Analysis窗口。
Analysis窗口包括下列三个主要部分:
➤图树:
在左窗格中,Analysis将显示可以打开查看的图。
您可以在此处显示打开Analysis时未显示的新图,或删除不再想查看的图。
➤图查看区域:
在右窗格中显示图。
默认情况下,当打开一个会话时,Analysis概要报告将显示在此区域。
➤图例:
下部,使您可以查看选定图中的数据。
4.2分析窗口数据
因为由于每个人的电脑配置不同,场景也不一样,生成的Analysis会话文件也不一样,所以下面说的各项作为参考。
实际运行的数据可能不一样,但是每项的含义一致。
4.2.1查看事务平均响应时间
上图的事务概要中,我们来关注一下check_itinerary事务,90%的响应时间是65.744秒。
该数值是事务平均响应时间(32.826)的两倍,说明对于发生的大多数此种事务都需要较高的响应时间。
还能看到该事务失败了28次。
点击该事务的名称,打开平均响应时间图表如下:
注意,check_itinerary事务的平均响应时间显著波动,在场景运行了2:
56(分钟:
秒)时达到峰值75.067秒。
在性能稳定的服务器上,事务的平均响应时间会比较平稳。
注意,在图的底部,登录、注销、book_flight和search_flight事务的平均响应时间都比较平稳。
4.2.2研究Vuser的行为
1.在图树中单击
将在图查看区域中打开正在运行的Vuser图(如下图)。
可以看到在场景运行的开始,正在运行的Vuser处于逐渐加压状态。
接着,70个Vuser同时运行了3分钟,之后开始逐渐减压。
2.筛选该图,观察所有Vuser同时运行的时间片。
右键单击该图并选择“SetFilter/GroudBy”,弹出筛选窗口。
点击“ScenarioElapsedTime”这一项的“Value”中的向下箭头,选择时间范围为从1:
30(分钟:
秒)至3:
45(分钟:
秒)。
现在,正在运行的Vuser图仅显示场景运行中1:
30(分钟:
秒)和3:
45(分钟:
秒)之间运行的Vuser。
所有其他的Vuser已全被筛选出去。
3.关联两个图,把两个图放在一起,以查看一个图的数据对另一个图的数据所产生的影响。
这称为将两个图关联。
将正在运行的Vuser图和平均事务响应时间图相关联以比较其数据,以查看大量的Vuser对事务的平均响应时间产生的影响。
右键单击正在运行的Vuser图并选择“MergeGraphs”,弹出窗口(如下图),设置好之后确定。
现在,正在运行的Vuser图和平均事务响应时间图在图查看区域中表示为一个图,即“RunningVusers-AverageTransactionResponseTime”(如下图)。
4.分析关联后的图。
在该图中可以看到随着Vuser数量的增加,check_itinerary事务的平均响应时间也在逐渐增加。
换句话说,随着负载的增加平均响应时间也在逐渐地增加。
运行64个Vuser时,平均响应时间会突然急速增加,可以说服务器崩溃了。
同时运行的Vuser超过64个时,响应时间会明显开始变长。
5.一些体会
初步接触LoadRunner,并且对它自带的服务器和软件系统进行了测试。
走了一遍测试的流程,但是其中很多问题还不深入,比如在虚拟脚本的编写、运行测试过程中观察数据的选取,比较监测的结果这些问题上,没有什么项目经验,认识只停留在表面。
作为一个负载测试工具,LoadRunner使用不难,难的是在实践过程中的经验总结。
比如哪些行为定义成一个事务来监测;虚拟用户多少个,怎么加载才能测出系统的瓶颈,怎么分析生成的负载测试数据等。
所以在后续的工作中,要测试不同类型的系统,模拟不同类型的虚拟用户,定义不同的场景,总结经验才能提高。
附:
51testing论坛上建议的性能测试学习线路图
纵向划分3颗子树:
vugen,controller,monitor。
优先学习vugen脚本开发以及调试。
横向划分为2层:
基础知识以及高级应用。
2009/11/23-2009/11/30
by赵亮李杰