实验三性能测试与LoadRunner.docx
《实验三性能测试与LoadRunner.docx》由会员分享,可在线阅读,更多相关《实验三性能测试与LoadRunner.docx(40页珍藏版)》请在冰豆网上搜索。
实验三性能测试与LoadRunner
实验三:
性能测试与LoadRunner(4学时)
一、实验目的
1、了解LoadRunner负载测试工具的安装过程,进行安装实验。
2、了解LoadRunner负载测试工具的用途和简单的操作。
3、掌握LoadRunner负载测试工具测试过程。
4、能够使用LoadRunner负载测试工具进行简单的测试工作。
二、实验环境
操作系统:
windows2000XP+SP2
应用系统:
LoadRunner9.5+负载测试工具
三、实验过程:
LoadRunner是HP公司开发一款成熟的性能测试工具,LoadRunner作为性能测试的实现者,涉及性能测试流程、性能测试技术和软件体系架构等众多方面的知识点。
性能测试的基准大体有以下几方面:
—响应时间
从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。
合
理的响应时间取决于实际的用户需求。
—并发用户数
一般是指同一时间段内访问系统的用户数量。
—吞吐量
指单位时间内系统处理的客户请求数量。
—性能计数器
描述服务器或操作系统性能的一些数据指标,比如Windows系统资源管理器。
-------------------------------------------------------------------------------
本次实验课是针对LoadRunner(以下简称LR)的使用,我们将采用LR自带的HPWEBTours
应用程序来进行熟悉。
1.启动示例程序
在开始程序中启动LoadRunneràsamplesàWebà启动Web服务器,如下图
启动后在屏幕右下角会出现如下标识:
2.启动WebTours示例程序:
在浏览器中点击下图中的Signupnow,进行注册多个账户,过程比较简单这里不再介绍.
注册完成后,可以订一张机票,熟悉一下这个应用程序的相关操作,为下一步录制脚本做准
备。
3.传统手工性能测试中会有一个组织者演示要测试的整个过程给参予者,然后组织者会要
求这些参予者在自己的机器上共同执行刚刚的过程,然后收集相关的数据再进行分析,性能
是否达到了相关的标准.
自动化测试过程中:
整个过程--------------------VirtualUserGenerator录制脚本
组织者----------------------Controller
参予者自己的机器------------------Loadgenerator场景
分析--------------------------------------Analysis
下面我们一步步来进行
首先启动VirtualUserGenerator,如下图
启动后出现如下界面,在其中新建一个场景:
在弹出的对话框中选定
点击
在弹出的对话框中输入以下参数后点击OK:
出现如下提示框后,开始录制脚本,此时会弹出IE,然后自动进入到WEBTOURS网站,用
刚刚注册的信息进行登录,登录成功后,再定一张票,定票后,输入信用卡信息,然后退出
登录,完成后,点击停止录制,此过程较为简单,这里不做说明
录制完成后,在下图中点停止,脚本录制完成:
稍待一会生成脚本,如下图所示:
点击播放按钮,回放一下看有没有问题
回放有两种方式,一种是普通
脚本回放,回放时运行到哪一行了,会有箭头指示,另外一种就是回放可以查看回放过程中
的页面,方式如下:
选择
在弹出的对话中选择如下:
再次回放就可以看到效果.
加入事务:
事务就是将整个录制过程分为几部分,比如这个例子中可以分登录,定票两个过
程,在测试时就可以查看这两个过程分别的运行效率,从而确定,在整个定票过程中哪一个
环节影响了性能。
打开代码,在登录代码前我们插入一个事务的开始:
并取名”login_学号”
在登录成功后处我们插入事务”login”的结束
然后在订票开始前插入一个事务:
结束处插入一个事务
事务配置结束,我们再设定一个集合点,方便在最后分析时查看登录的并发数能达到的数量,
如下图:
脚本录制和脚本强化到此完成,请点击保存这个脚本,方便继续下一步工作,实测测试活动
中,也可以留给回顾测试使用。
4.启动Controller,我们来配置场景,说白了就是配置虚拟用户和虚拟用户所使用的机器
启动如下图:
启动后将刚刚录制好的脚本加入进来,如下图所示,点击OK:
在下图中我们可以看到默认会有10虚拟用户,在本地localhost运行,你可以通过
按钮
打开的对话框中加入更多的用户,但请注意,一台普通的PC机并不能承担太多的虚拟用户,
所以我们还要加入更多的“本机”,即装有LR客户端的机器帮助我们产生更多的用户。
装有客户端的机器,右下角会有这样的图标:
如果你没有发现,请在客户端的开始菜单
中找到LoadRunner-àLoadRunnerAgentProcess,来进行启动
在上图中点击
,弹出如下对话框,输入组名和要生成的虚拟用户数,以及“本机”的IP
地址,点击OK:
为了证明本机可用,需要进行验证,如下图:
点击后,就可以使用
来验证,如下图:
接下来我们可以对测试的策略进行设置,比如开始用户数,每分钟增加的用户数等等,不
要怕出错大量尝试的去设置,在右侧会出现设置的运行时序图:
设置完成后切换到RUN试图:
点击
开始运行.观察运行中的数据图表,并在运行过程中可以在左侧树
形菜单中切换想要查看的视图:
测试停止后,我们对测试查看报告并进行分析,如下图操作:
生成分析报告的过程:
报告生成:
参照如下说明进行分析,了解系统瓶颈在什么地方,需要改进,实验完成。
LoadRunner分析结果图功能说明
Transactions(用户事务分析)
用户事务分析是站在用户角度进行的基础性能分析。
1、TransationSunmmary(事务综述)
对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功
与失败情况,可以直接判断出系统是否运行正常。
2、AverageTransacitonResponseTime(事务平均响应时间)
“事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平
均时间,通过它可以分析测试场景运行期间应用系统的性能走向。
例:
随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统
随着投产时间的变化,整体性能将会有下降的趋势。
3、TransactionsperSecond(每秒通过事务数/TPS)
“每秒通过事务数/TPS”显示在场景运行的每一秒钟,每个事务通过、失败以及
停止的数量,使考查系统性能的一个重要参数。
通过它可以确定系统在任何给定
时刻的时间事务负载。
分析TPS主要是看曲线的性能走向。
将它与平均事务响应时间进行对比,可以分析事务数目对执行时间的影响。
例:
当压力加大时,点击率/TPS曲线如果变化缓慢或者有平坦的趋势,很有可
能是服务器开始出现瓶颈。
4、TotalTransactionsperSecond(每秒通过事务总数)
“每秒通过事务总数”显示在场景运行时,在每一秒内通过的事务总数、失败的
事务总署以及停止的事务总数。
5、TransactionPerformanceSunmmary(事务性能摘要)
“事务性能摘要”显示方案中所有事务的最小、最大和平均执行时间,可以直接
判断响应时间是否符合用户的要求。
重点关注事务的平均和最大执行时间,如果其范围不在用户可以接受的时间范围
内,需要进行原因分析。
6、TransactionResponseTimeUnderLoad(事务响应时间与负载)
“事务响应时间与负载”是“正在运行的虚拟用户”图和“平均响应事务时间”
图的组合,通过它可以看出在任一时间点事务响应时间与用户数目的关系,从而
掌握系统在用户并发方面的性能数据,为扩展用户系统提供参考。
此图可以查看
虚拟用户负载对执行时间的总体影响,对分析具有渐变负载的测试场景比较有用。
7、TransactionResponseTime(Percentile)(事务响应时间(百分比))
“事务响应时间(百分比)”是根据测试结果进行分析而得到的综合分析图,也就
是工具通过一些统计分析方法间接得到的图表。
通过它可以分析在给定事务响应
时间范围内能执行的事务百分比。
8、TransactionResponseTime(Distribution)(事务响应时间(分布))
“事务响应时间(分布)”显示在场景运行过程中,事务执行所用时间的分布,通
过它可以了解测试过程中不同响应时间的事务数量。
如果系统预先定义了相关事
务可以接受的最小和最大事务响应时间,则可以使用此图确定服务器性能是否在
可以接受的范围内。
WebResources(Web资源分析)
Web资源分析是从服务器入手对Web服务器的性能分析。
1、HitsperSecond(每秒点击次数)
“每秒点击次数”,即使运行场景过程中虚拟用户每秒向Web服务器提交的HTT
P请求数。
通过它可以评估虚拟用户产生的负载量,如将其和“平均事务响应时间”图比较,
可以查看点击次数对事务性能产生的影响。
通过对查看“每秒点击次数”,可以
判断系统是否稳定。
系统点击率下降通常表明服务器的响应速度在变慢,需进一
步分析,发现系统瓶颈所在。
2、Throughput(吞吐率)
“吞吐率”显示的是场景运行过程中服务器的每秒的吞吐量。
其度量单位是字节,
表示虚拟用在任何给定的每一秒从服务器获得的数据量。
可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量
方面的处理能力以及是否存在瓶颈。
“吞吐率”图和“点击率”图的区别:
“吞吐率”图,是每秒服务器处理的HTTP申请数。
“点击率”图,是客户端每秒从服务器获得的总数据量。
3、HTTPStatusCodeSummary(HTTP状态代码概要)
“HTTP状态代码概要”显示场景或会话步骤过程中从Web服务器返回的HTTP状
态代码数,该图按照代码分组。
HTTP状态代码表示HTTP请求的状态。
4、HTTPResponsesperSecond(每秒HTTP响应数)
“每秒HTTP响应数”是显示运行场景过程中每秒从Web服务器返回的不同HTTP
状态代码的数量,还能返回其它各类状态码的信息,通过分析状态码,可以判断
服务器在压力下的运行情况,也可以通过对图中显示的结果进行分组,进而定位
生成错误的代码脚本。
5、PagesDownloaderperSecond(每秒下载页面数)
“每秒下载页面数”显示场景或会话步骤运行的每一秒内从服务器下载的网页数。
使用此图可依据下载的页数来计算Vuser生成的负载量。
和吞吐量图一样,每秒下载页面数图标是Vuser在给定的任一秒内从服务器接收
到的数据量。
但是吞吐量考虑的各个资源极其大小(例,每个GIF文件的大小、
每个网页的大小)。
而每秒下载页面数只考虑页面数。
注:
要查看每秒下载页数图,必须在R-T-S那里设置“每秒页面数(仅HTML模式)”。
6、RetriesperSecond(每秒重试次数)
“每秒重试次数”显示场景或会话步骤运行的每一秒内服务器尝试的连接次数。
在下列情况将重试服务器连接:
A、初始连接XX
B、要求代理服务器身份验证
C、服务器关闭了初始连接
D、初始连接无法连接到服务器
E、服务器最初无法解析负载生成器的IP地址
7、RetriesSummary(重试次数概要)
“重试次数概要”显示场景或会话步骤运行过程中服务器尝试的连接次数,它按
照重试原因分组。
将此图与每秒重试次数图一起使用可以确定场景或会话步骤运
行过程中服务器在哪个时间点进行了重试。
8、Connections(连接数)
“连接数”显示场景或会话步骤运行过程中每个时间点打开的TCP/IP连接数。
借助此图,可以知道何时需要添加其他连接。
例:
当连接数到达稳定状态而事务响应时间迅速增大时,添加连接可以使性能得
到极大提高(事务响应时间将降低)。
9、ConnectionsPerSecond(每秒连接数)
“每秒连接数”显示方案在运行过程中每秒建立的TCP/IP连接数。
理想情况下,很多HTTP请求都应该使用同一连接,而不是每个请求都新打开一
个连接。
通过每秒连接数图可以看出服务器的处理情况,就表明服务器的性能在
逐渐下降。
10、SSLsPerSecond(每秒SSL连接数)
“每秒SSL连接数”显示场景或会话步骤运行的每一秒内打开的新的以及重新使
用的SSL连接数。
当对安全服务器打开TCP/IP连接后,浏览器将打开SSL连接。
WebPageBreakdown(网页元素细分)
“网页元素细分”主要用来评估页面内容是否影响事务的响应时间,通过它可以
深入地分析网站上那些下载很慢的图形或中断的连接等有问题的
元素。
1、WebPageBreakdown(页面分解总图)
“页面分解”显示某一具体事务在测试过程的响应情况,进而分析相关的事务运
行是否正常。
“页面分解”图可以按下面四种方式进行进一步细分:
1)、DownloadTimeBreaddown(下载时间细分)
“下载时间细分”图显示网页中不同元素的下载时间,同时还可按照下载过程把
时间进行分解,用不同的颜色来显示DNS解析时间、建立连接时间、第一次缓冲
时间等各自所占比例。
2)、ComponentBreakdown(OverTime)(组件细分(随时间变化))
“组件细分”图显示选定网页的页面组件随时间变化的细分图。
通过该图可以很
容易的看出哪些元素在测试过程中下载时间不稳定。
该图特别适用于需要在客户
端下载控件较多的页面,通过分析控件的响应时间,很容易就能发现那些控件不
稳定或者比较耗时。
3)、DownloadTimeBreakdown(OverTime)(下载时间细分(随时间变化))
“下载时间细分(随时间变化)”图显示选定网页的页面元素下载时间细分(随
时间变化)情况,它非常清晰地显示了页面各个元素在压力测试过程中的下载情
况。
“下载时间细分”图显示的是整个测试过程页面元素响应的时间统计分析结果,
“下载时间细分(随时间变化)”显示的事场景运行过程中每一秒内页面元素响应
时间的统计结果,两者分别从宏观和微观角度来分析页面元素的下载时间。
4)、TimetoFirstBufferBreakdown(OverTime)(第一次缓冲时间细分(随时
间变化))
“第一次缓冲时间细分(随时间变化)”图显示成功收到从Web服务器返回的第一
次缓冲之前的这段时间,场景或会话步骤运行的每一秒中每个网页组件的服务器
时间和网络时间(以秒为单位)。
可以使用该图确定场景或会话步骤运行期间服
务器或网络出现问题的时间。
FirstBufferTime:
是指客户端与服务器端建立连接后,从服务器发送第一个
数据包开始计时,数据经过网络传送到客户端,到浏览器接收到第一个缓冲所用
的时间。
2、PageComponentBreakdown(页面组件细分)
“页面组件细分”图显示每个网页及其组件的平均下载时间(以秒为单位)。
可
以根据下载组件所用的平均秒数对图列进行排序,通过它有助于隔离有问题的组
件。
3、PageComponentBreakdown(OverTime)(页面组件分解(随时间变化))
“页面组件分解(随时间变化)”图显示在方案运行期间的每一秒内每个网页及其
组件的平均响应时间(以秒为单位)。
4、PageDownloadTimeBreakdown(页面下载时间细分)
“页面下载时间细分”图显示每个页面组件下载时间的细分,可以根据它确定在
网页下载期间事务响应时间缓慢是由网络错误引起还是由服务器错误引起。
“页面下载时间细分”图根据DNS解析时间、连接时间、第一次缓冲时间、SSL
握手时间、接收时间、FTP验证时间、客户端时间和错误时间来对每个组件的下
载过程进行细分。
5、PageDownloadTimeBreakdown(OverTime)(页面下载时间细分(随时
间变化))
“页面下载时间细分(随时间变化)”图显示方案运行期间,每一秒内每个页面组
件下载时间的细分。
使用此图可以确定网络或服务器在方案执行期间哪一时间点
发生了问题。
“页面组件细分(随时间变化)”图和“页面下载时间细分(随时间变化)”图通常
结合起来进行分析:
首先确定有问题的组件,然后分析它们的下载过程,进而定
位原因在哪里。
6、TimetoFirstBufferBreakdown(第一次缓冲时间细分)
“第一次缓冲时间细分”图显示成功收到从Web服务器返回的第一次缓冲之前的
这一段时间内的每个页面组件的相关服务器/网路时间。
如果组件的下载时间很
长,则可以使用此图确定产生的问题与服务器有关还是与网络有关。
网络时间:
定义为第一个HTTP请求那一刻开始,直到确认为止所经过的平均时
间。
服务器时间:
定义为从收到初始HTTP请求确认开始,直到成功收到来自Web服
务器的一次缓冲为止所经过的平均时间。
7、TimetoFirstBufferBreakdown(OverTime)(第一次缓冲时间细分(随
时间变化))“第一次缓冲时间细分(随时间变化)”图显示成功收到从Web服务器返回的第一个缓冲之前的这段间
四、实验要求
1、做好实验预习,掌握,并熟悉本实验中所使用的测试环境及相应的测试软件。
2、写出实验报告,内容是:
①实验目的。
②实验内容实验源代码(或测试脚本)可不写出,但是一定要写出实验中出现的错误,以及解决错误的方法。
③出错信息及处理方法。
④实验结果包括实验处理结果和设计心得。
五、注意事项
1、观察每一个项目的处理结果以及出错信息,并作记录。
2、注意对服务器和测试机系统、数据库的性能、网络性能的监控。
附一:
相关测试数据,每个学生都不同:
登陆名:
你的姓名;
密码:
你的学号;
Vuser个数:
你学号后2位乘以10,然后%100
负载iP:
你本机的IP地址;
添加事务;
添加检查点:
迭代次数为你学号的个位数字;
其他参数,按照默认
附二:
LoadRunner自带Tutortial27页-107页
附三:
实验相关结果截图,你的实验结果应与教师提供不同
实验结果:
脚本:
vuser_init()
{
return0;
}
Action()
{
lr_start_transaction("login");
web_url("webtours",
"URL=http:
//127.0.0.1:
1080/webtours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(7);
lr_rendezvous("tologin");
web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username","Value=你的姓名全拼",ENDITEM,
"Name=password","Value=你的密码,应为你的学号",ENDITEM,
"Name=login.x","Value=41",ENDITEM,
"Name=login.y","Value=15",ENDITEM,
LAST);
lr_end_transaction("login",LR_AUTO);
lr_start_transaction("ticket");
web_image("SearchFlightsButton",
"Alt=SearchFlightsButton",
"Snapshot=t3.inf",
LAST);
lr_think_time(4);
web_url("FormDateUpdate.class",
"URL=http:
//127.0.0.1:
1080/webtours/FormDateUpdate.class",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Mode=HTML",
LAST);
web_url("CalSelect.class",
"URL=http:
//127.0.0.1:
1080/webtours/CalSelect.class",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Mode=HTML",
LAST);
web_url("Calendar.class",
"URL=http:
//127.0.0.1:
1080/webtours/Calendar.class",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Mode=HTML",
LAST);
web_submit_data("reservations.pl",
"Action=http:
//127.0.0.1:
1080/webtours/reservations.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http:
//127.0.0.1:
1080/webtours/reservations.pl?
page=welcome",
"Snapshot=t4.inf",
"Mode=HTML",
ITEMDATA,
"Name=advanceDiscount","Value=0",ENDITEM,
"Name=depart","Value=Denver",ENDITEM,
"Name=departDate","Value=12/09/2010",ENDITEM,
"Name=arrive","Value=Paris",ENDITEM,
"Name=returnDate","Value=12/10/2010",ENDITEM,
"Name=numPassengers","Value=1",ENDITEM,
"Name=seatPref","Value=None",ENDITEM,