软件性能测试及工具的使用Web应用系统性能测试简介引言基于Web服务器的应用系统由于提供浏览器界面而无须安装,大大降低了系统部署和升级成本,得以普遍应用。目前,很多企业的核心业务系统均是Web应用,但当Web应用的数据量和访问用户量日益增加,系统不得不面临性能和可靠性方面的挑战。因此,无论是Web应用系统的开发商或最终用户,都要求在上线前对系统进行性能,室验实TI国中科学评价系统的性能,从而降低系统上线后的性能风险。在很多性能测试项目中,由于不能合理定义系统的性能测试需求,不能建立和真实环境相符的负载模型,不能科学分析性能测试结果,导致性能测试项目持续时间很长或不能真正评价系统性能并提出性能改进措施。性能测试是Web应用系统的一项重要质量保证措施。在现实中,很多Web性能测试项目由于性能测试需求定义不合理或不明确,导致性能测试项目不能达到预期目标或进度超期。本文针对Web应用系统的技术架构和系统使用特点,探讨如何有效实施性能测试过程,并重点介绍如何分析获得合理的性能测试需求,最终对Web应用系统性能进行科学、准确的评估。性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样。性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。一、性能测试术语定义1.1性能测试分类1.1.1负载测试(LoadTesting):通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预定指标或都某种资源已经达到饱和状态。特点:1、负载测试方法的主要目的是找到系统处理能力的极限。2、负载测试方法需要在给定的测试环境下进行,通常也需要考虑被测试系统的业务压力量和典型场景、使得测试结果具有业务上的意义。3、负载测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。总结:负载测试方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃。1.1.2压力测试(StressTesting):压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误特点:1、压力测试方法的主要目的是检查系统处于压力性能下时,应用的表现。2、这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。3、这种性能测试方法一般用于测试系统的稳定性。总结:压力测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。1.1.4容量测试(VolumeTesting):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。1.1.4可靠性测试(reliabilitytesting)在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。特点:1、可靠性测试方法的主要目的是验证是否支持长期稳定的运行。2、可靠性测试方法需要在压力下持续一段时间的运行。(2~3天)3、可靠性测试过程中需要关注系统的运行状况。总结:可靠性测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。1.2性能测试名词1.2.1性能测试:通过模拟大量浏览器客户端同时访问Web服务器,获得系统的性能数据。1.2.2虚拟用户:模拟浏览器向Web服务器发送请求并接收响应的一个进程或线程。1.2.3响应时间:浏览器向Web服务器提交一个请求到收到响应之间的间隔时间。1.2.4思考时间:浏览器在收到响应后到提交下一个请求之间的间隔时间。1.2.5请求成功率:Web服务器正确处理的请求数量和接收到的请求数量比。1.2.6吞吐量:单位时间内Web服务器成功处理的HTTP页面或HTTP请求数量。1.2.7在线用户数:用户通过浏览器访问登录Web应用系统后,并不退出该应用系统。通常一个Web应用服务器的在线用户对应Web应用服务器的一个Session。1.2.8并发用户数:Web服务器在一段时间内为处理浏览器请求而建立的HTTP连接数或生成的处理线程数。当所有在线用户发送HTTP请求的思考时间为零时,Web服务器的并发用户数等于在线用户数。1.2.9名词解释--基于LoadRunner1.2.9.1TransationSunmmary(事务综述)对事务进行综合分析是性能分析的第一步,通过分析测试时间内用户事务的成功与失败情况,可以直接判断出系统是否运行正常。1.2.9.2AverageTransacitonResponseTime(事务平均响应时间)“事务平均响应时间”显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。例:随着测试时间的变化,系统处理事务的速度开始逐渐变慢,这说明应用系统随着投产时间的变化,整体性能将会有下降的趋势。1.2.9.3TransactionsperSecond(每秒通过事务数/TPS)“每秒通过事务数/TPS”显示在场景运行的每一秒钟,每个事务通过、失败以及停止的数量,使考查系统性能的一个重要参数。通过它可以确定系统在任何给定时刻的时间事务负载。分析TPS主要是看曲线的性能走向。将它与平均事务响应时间进行对比,可以分析事务数目对执行时间的影响。例:当压力加大时,点击率/TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈。1.2.9.4TotalTransactionsperSecond(每秒通过事务总数)“每秒通过事务总数”显示在场景运行时,在每一秒内通过的事务总数、失败的事务总署以及停止的事务总数。1.2.9.5TransactionPerformanceSunmmary(事务性能摘要)“事务性能摘要”显示方案中所有事务的最小、最大和平均执行时间,可以直接判断响应时间是否符合用户的要求。重点关注事务的平均和最大执行时间,如果其范围不在用户可以接受的时间范围内,需要进行原因分析。1.2.9.6TransactionResponseTimeUnderLoad(事务响应时间与负载)“事务响应时间与负载”是“正在运行的虚拟用户”图和“平均响应事务时间”图的组合,通过它可以看出在任一时间点事务响应时间与用户数目的关系,从而掌握系统在用户并发方面的性能数据,为扩展用户系统提供参考。此图可以查看虚拟用户负载对执行时间的总体影响,对分析具有渐变负载的测试场景比较有用。1.2.10WebResources(Web资源分析)Web资源分析是从服务器入手对Web服务器的性能分析。1.2.10.1HitsperSecond(每秒点击次数)“每秒点击次数”,即使运行场景过程中虚拟用户每秒向Web服务器提交的HTTP请求数。通过它可以评估虚拟用户产生的负载量,如将其和“平均事务响应时间”图比较,可以查看点击次数对事务性能产生的影响。通过对查看“每秒点击次数”,可以判断系统是否稳定。系统点击率下降通常表明服务器的响应速度在变慢,需进一步分析,发现系统瓶颈所在。1.2.10.2Throughput(吞吐率)“吞吐率”显示的是场景运行过程中服务器的每秒的吞吐量。其度量单位是字节,表示虚拟用在任何给定的每一秒从服务器获得的数据量。可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量方面的处理能力以及是否存在瓶颈。“吞吐率”图和“点击率”图的区别:“吞吐率”图,是每秒服务器处理的HTTP申请数。“点击率”图,是客户端每秒从服务器获得的总数据量。1.2.10.3HTTPStatusCodeSummary(HTTP状态代码概要)“HTTP状态代码概要”显示场景或会话步骤过程中从Web服务器返回的HTTP状态代码数,该图按照代码分组。HTTP状态代码表示HTTP请求的状态。1.2.10.4HTTPResponsesperSecond(每秒HTTP响应数)“每秒HTTP响应数”是显示运行场景过程中每秒从Web服务器返回的不同HTTP状态代码的数量,还能返回其它各类状态码的信息,通过分析状态码,可以判断服务器在压力下的运行情况,也可以通过对图中显示的结果进行分组,进而定位生成错误的代码脚本。1.2.10.5PagesDownloaderperSecond(每秒下载页面数)“每秒下载页面数”显示场景或会话步骤运行的每一秒内从服务器下载的网页数。使用此图可依据下载的页数来计算Vuser生成的负载量。和吞吐量图一样,每秒下载页面数图标是Vuser在给定的任一秒内从服务器接收到的数据量。但是吞吐量考虑的各个资源极其大小(例,每个GIF文件的大小、每个网页的大小)。而每秒下载页面数只考虑页面数。注:要查看每秒下载页数图,必须在R-T-S那里设置“每秒页面数(仅HTML模式)”。1.2.10.6RetriesperSecond(每秒重试次数)“每秒重试次数”显示场景或会话步骤运行的每一秒内服务器尝试的连接次数。在下列情况将重试服务器连接:A、初始连接未经授权B、要求代理服务器身份验证C、服务器关闭了初始连接D、初始连接无法连接到服务器E、服务器最初无法解析负载生成器的IP地址1.2.10.7RetriesSummary(重试次数概要)“重试次数概要”显示场景或会话步骤运行过程中服务器尝试的连接次数,它按照重试原因分组。将此图与每秒重试次数图一起使用可以确定场景或会话步骤运行过程中服务器在哪个时间点进行了重试。1.2.10.8Connections(连接数)“连接数”显示场景或会话步骤运行过程中每个时间点打开的TCP/IP连接数。借助此图,可以知道何时需要添加其他连接。例:当连接数到达稳定状态而事务响应时间迅速增大时,添加连接可以使性能得到极大提高(事务响应时间将降低)。1.2.10.9ConnectionsPerSecond(每秒连接数)“每秒连接数”显示方案在运行过程中每秒建立的TCP/IP连接数。理想情况下,很多HTTP请求都应该使用同一连接,而不是每个请求都新打开一个连接。通过每秒连接数图可以看出服务器的处理情况,就表明服务器的性能在逐渐下降。1.2.10.10SSLsPerSecond(每秒SSL连接数)“每秒SSL连接数”显示场景或会话步骤运行的每一秒内打开的新的以及重新使用的SSL连接数。当对安全服务器打开TCP/IP连接后,浏览器将打开SSL连接。1.3性能测试指标1.3.1通用指标(指Web应用服务器、数据库服务器必需测试项):ProcessorTime:指服务器CPU占用率,一般平均达到70%时,服务就接近饱和;MemoryAvailableMbyte:可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重;PhysicsdiskTime:物理磁盘读写时间情况;1.3.2Web服务器指标:AvgRps:平均每秒钟响应次数=总请求时间/秒数;Avgtimetolastbyteperterstion(mstes):平均每秒业务角本的迭代次数,有人会把这两者混淆;SuccessfulRounds:成功的请求;FailedRounds:失败的请求;SuccessfulHits:成功的点击次数;FailedHits:失败的点击次数;HitsPerSecond:每秒点击次数;SuccessfulHitsPerSecond:每秒成功的点击次数;FailedHitsPerSecond:每秒失败的点击次数;AttemptedConnections:尝试链接数;1.3.3数据库服务器指标:UserConnections:用户连接数,也就是数据库的连接数量;Numberofdeadlocks