-1-性能测试管理与应用公司avnc&is作者李志日期2009-11-25-2-目录性能测试管理与应用...........................................................1第一部分性能测试管理....................................................3理论基础.............................................................3第二部分性能测试技术应用................................................8性能测试工具介绍.....................................................8LoadRunner应用......................................................9小结....................................................................13-3-第一部分性能测试管理理论基础软件测试范围广泛,主要分为功能性和非功能能性两大类。在非功能测试中性能测试是重要的组成部分。系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性可靠性等等性能测试用来保证产品发布后系统的性能满足用户需求。性能测试在软件质量保证中起重要作用。性能测试分类:我们经常做的性能测试1负载测试:已经有预期的性能指标,响应时间不超过10秒,cpu利用率低于65%等,测试终止为达到预期性能指标。目的是找到系统在给定条件下的的处理极限。2压力测试:压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。通常我们通过增加并发数量和事务的数据量来增加对系统的压力,检验此时的应用表现,报错,响应时间等等。3疲劳强度测试(稳定性测试):通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析事务执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。疲劳强度测试案例制定的原则是保证系统长期不间断运行的业务量,并且应该尽量去满足该条件。4大数据量测试:独立的数据量测试针对某些系统存储、传输、统计、查询等业务进行大数据量测试。综合数据量测试和压力性能测试、疲劳性能测试相结合的综合测试方案。5负载压力测试:包含负载测试和压力测试以及稳定性(疲劳强度)测试。当然除了上述的分类外还有例如安全,兼容等测试,可靠性测试等分类,这会根据不同项目的需求或满足客户的要求来具体执行。主要性能指标1TransactionsperSecond(TPS)每秒钟系统处理的事务数量,是衡量系统处理能力的重要指标之一。2AverageTransactionResponseTime事务平均响应时间,在网站类的性能测试中它是最重要的指标之一。3AverageTransactionResponseTime(Distribution)-4-4TransactionResponseTime(Percentile)“事务响应时间(百分比)”是根据测试结果进行分析而得到的综合分析图,也就是工具通过一些统计分析方法间接得到的图表。通过它可以分析在给定事务响应时间范围内能执行的事务百分比。5Throughput(吞吐率)“吞吐率”显示的是场景运行过程中服务器的每秒的吞吐量。其度量单位是字节,表示虚拟用在任何给定的每一秒从服务器获得的数据量。6CPUutilizationcpu占用率合理使用的范围在60%至70%。7Diskrate磁盘交换率如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。8pagingrateNumberofpagesreadtophysicalmemoryorwrittentopagefile(s),persecond计数持续高于几百很可能会有内存方面的问题产生,可能是运行使用内存映射文件的程序所致。9PageFaults/sec每秒钟出错页面的平均数量。由于每个错误操作中只有一个页面出错,计算单位为每秒出错页面数量,因此这也等于页面错误操作的数量。这个计数器包括硬错误(那些需要磁盘访问的)和软错误(在物理内存的其他地方找到的错误页)。许多处理器可-5-以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。当进程请求一块内存但系统无法分配时发生页面错误,该值过高(与未加压时比较)可能有两方面的原因:原因(1)应用程序已经占用了过多内存,这可以通过增加内存量来解决。原因(2)应用程序的内存请求过于频繁(如:频繁地创建和销毁对象)。此时要考虑更改设计。10NetworkInterface:BytesTotal/sec:为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。性能测试过程模型这里给大家介绍的是PTGM(PerformanceTestGeneralModel)性能测试过程通用模型。测试策略性能测试策略的意义和用途。在进行完性能测试的各项调研之后,性能测试人员已经对性能测试工作需求有了框架上的了解。此时,制订性能测试策略的意义凸显出来,它应该是整个性能测试项目的战略级规划。即,本次性能测试项目的工作目标是什么?一般包括两种目标:(a)按时完成性能测试工作最典型的例子,一定要在月底之前完成上线模拟的性能测试工作(b)按质完成性能测试工作最典型的例子,一定要保证系统上线后的性能质量工作目标是性能测试策略中的重中之重。性能测试过程通用模型(PTGM)5测试执行和管理1测试策略与测试前期准备工作2测试工具引入3测试计划4测试设计与开发6测试分析-6-*****************************************************工作目标决定了性能测试工作的不同实施思路。(a)如果是按时完成,就要力保时间,可以在资源不足、时间不足等资源有限的情况下,只要确保一个最低质量保障标准即可。(b)如果是按质完成,就要力保测试的覆盖度,要想尽办法测试最多的方面。测试前期准备工作1系统基础功能验证:包含测试环境的搭建,模拟器编写,必须保证性能测试之前进行一次系统的功能覆盖测试。2组建测试团队:目标是建立一个可以进行性能测试的团队,确定人员需要的技能,尽早从组织中或是通过招聘挑选合适的人员组成性能测试组。性能测试团队角色的技能和职责描述角色职责技能测试经理和用户等项目干系人交互,确保外部测试环境,制定测试计划和进度,发现和处理测试中的风险。计划执行和监控能力,风险意识和能力,外交能力和灵活变通的能力测试设计定义性能规划,识别用户的性能需求,建立性能场景业务把握能力,性能需求分析和识别能力测试开发实现已设计的性能场景,脚本开发调试,确定测试时需要监控的性能指标,性能计数器脚本编码和调试能力,理解性能指标和性能计数器测试执行部署测试环境,执行脚本和场景,记录测试结果搭建测试环境的能力,测试工具使用能力,性能指标的获取和记录能力。测试分析根据测试结果进行分析,根据性能规划分析系统性能瓶颈,给出优化建议。掌握性能测试工具的使用方法,掌握应用系统性能领域相关知识,熟悉常用的性能分析方法,有一定的编码经验支持角色(系统,网络,数据库)包含系统工程师,网络工程师,DBA分别具有系统,网络,数据库的专项技能。测试工具引入1工具选择性能测试一定会使用自动化测试手段,使用自动化测试工具,首先要圈定几种可用的工具,进行评估,参照下面的需求进行。被测系统环境测试工具功能需求建议操作系统顺利运行应用服务器可以监控数据库可以监控应用协议是否支持应用协议-7-网络环境支持防火墙和负载均衡测试管理支持可以进行结果的管理与分析2工具应用技能培训为项目组相关参与者进行测试工具的应用技能培训,重点是“测试开发”,“测试执行”,“测试分析”角色。测试计划1性能测试领域分析应用领域性能测试目标测试目标能力验证验证系统在给定环境中的性能能力重点关注关键业务的响应时间和吞吐量规划能力验证系统性能的扩展能力业务性能瓶颈性能调优提高系统的性能表现关注响应时间和吞吐量发现缺陷发现系统中的缺陷完善系统测试2用户活动剖析与业务建模通过用户活动来找到用户最关心的业务以及该业务的发生时间和发生率。业务建模是对业务系统的行为及实现方式和方法的建模,一般采用流程图的方式描绘出各进程之间的交互关系和数据流向。对复杂的业务系统来说,业务建模可以将业务系统清晰的呈现出来,为性能测试提供最直观的指导。3定义里程碑在工期较长,场景较多的测试项目中要进行里程碑定义,便于提交阶段性成果物。4制定测试时间计划给出性能测试的各个活动的起止时间,为性能测试的执行给出时间上的估算,定制测试进度表来跟踪测试进度。测试设计与开发1测试环境设计根据性能测试计划中的应用领域设计测试环境,包含系统的软/硬件环境,数据环境设计,环境的维护方法。例1:我们设想一下,系统运行在一个已经有50000条数据的数据库和一个几乎为空的数据库环境下,执行增,删,改的响应时间是不同的。例2:随着我们系统被广泛的应用,硬件差异(cpu,内存,网络)也会产生不同的性能表现,确定硬件瓶颈也是我们测试范围之内的事情。2测试场景设计方法一:常用的场景设计方法事务并发---设施检索操作系统每天使用高峰期为5000个用户、2个小时执行时间内(假设每个事务时间间隔为5分钟)每秒钟需要实行多少个设施检索事务?120min/5min=24iterationsforeachuser5000usersX24iterations=120,000transactions120,000TR/120min=1,000TR/min怎样设计你的事务并发目标?假设在这个业务中8—10点是它的业务高峰期,那么系统需求是:每个用户要执行24次,-8-每分钟需要运行1000个事务,每秒钟运行16.7个事务,一共需要完成120000个事务。这时候一个性能指标16.7已经摆在面前,即设施检索类的TPS应该在17以上。以此类推你会得到所有应用中不同事务(算路,天气预报等)的TPS指标。到系统达到真实环境所需要的处理能力的时候我们就会轻松的得到所有用户的使用不同服务的比例和每一个用户的真实体验即响应时间。方法二:日志统计直接通过日志统计分析出真实环境中系统实际被使用的情况,得到各个应用的TPS。3测试用例设计在确定测试场景后,在各种服务中的用例是千变万化的,你不可能真实的将每一个用例都设计出来,这时需要你找出代表用例,如:用户在交叉路口查询时最常用的查询方式是输入两条街道,得到交叉路口。4脚本和辅助工具开发按照用例的描述方式我们可以通过测试工具来录制和编写脚本,参数化是脚本中最常用的处理,这样你的模拟才更具有真实意义。测试执行与管理1建立测试环境比较复杂的系统建议与系统组人员或实施维护人员共同建立,以免影响进度。2脚本和场景验证执行所有脚本,按照测试设计建立不同的场景3执行测试和记录结果不同的测试工具都提供测试结果保存的功能,所以部分测试结果我们可以直接另存即可,还有些资源占用数据可以通过工具或脚本的方式来获取。测试执行比较耗费时间,为了测试结果误差较小,我们一般每个场景都会执行三遍以上,在测试中还要实时监控系统资源,用例执行结果等信息。测试结果分析1数据搜集虽然只是数据搜集,但是如果前期你在数据保存时没有规划好各类结果的名称你的麻烦就大了,可能会浪费一天甚至更长的时间。2得出测试结果通过数据统计得到各个场景的处理能力,响应时间,资源占用等最终结果。同时要得出基本结论,用图标说话会让客户理解的更透彻,不论测试结果是否满意他都会认为你很专业。当然如果测试结果惨不忍睹,你还是及时向测试经理汇报,组织