本科毕业论文(设计)题目(中文):LoadRunner与性能测试(英文):LoadRunnerandPerformanceTest学院数理信息年级专业03级计算机科学与技术学生姓名Wally(俞戴龙)(现E测中国专家)学号xxxxxxxxx指导教师朱媛媛完成日期2007年4月上海师范大学数理信息学院本科毕业论文目录中文摘要…………………………………………………………………………i英文摘要…………………………………………………………………………ii第1章简介………………………………………………………………………11.1LoadRunner简介…………………………………………………………11.2压力测试简介……………………………………………………………11.3性能测试与LoadRunner之我见…………………………………………1第2章LoadRunner与性能测试实战………………………………………………42.1预测系统与预期场景综述…………………………………………………42.2测试报告综述……………………………………………………………52.3点击率………………………………………………………………………52.4虚拟用户的加载……………………………………………………………62.5服务器响应时间……………………………………………………………72.6吞吐率(每秒处理数据量)………………………………………………82.7监控的Windows系统资源…………………………………………………82.8点击率-虚拟用户数分析…………………………………………………102.9Windows资源-点击率分析………………………………………………102.10Windows资源-点击率深入分析………………………………………11参考文献……………………………………………………………………………13上海师范大学数理信息学院本科毕业论文iLoadRunne与性能测试摘要在国内测试行业属于一个新兴行业,与国外测试行业相比,国内也只是近几年才开始重视软件测试的。之所以被关注,原因也许是多方面的,但我想最根本一点就是中国软件要发展。中国软件这几年发展迅速,很大部分原因是借鉴了国外优秀企业的经验技术,从无到有,学习了国外企业的一整套做事的规范,的确是一种快速成长方法。当然软件测试也应该如此,从不重视到重视,更应该多学习一下如何制定测试流程,缺陷管理以及测试用例设计等优秀理念。LoadRunner是一种预测系统行为和性能的工业级标准性能测试负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。关键字:中国软件,软件测试,性能测试,企业架构上海师范大学数理信息学院本科毕业论文iiLoadRunnerandPerformanceTestABSTRACTSoftwaretestingisnewappearedinChina,comparedwiththeoverseatestprofession,domesticstarttopaymoreattentiontosoftwaretestinginrecentyears.Themostimportantreasonofthis,inmyopinion,isChinesesoftwaremusttobedeveloped.Chinesesoftwarehasdevelopedrapidlytheseyears,wehavelearnedfrommanyexcellentforeigncompanies.It’sreallyanefficientandeffectivewaytogrowupbymeansoflearningfromtheothers.Ofcourse,softwaretestingshoulddoso.Frombeingneglectedtobeingpaidmoreattentions,wereallyshouldlearnalotabouthowtomakethedevelopmentmoreefficientandoutstandingtestcases,etc.LoadRunnerisatoolthatcanhelpcompanydostresstestandcanpredictsystem’sreaction.Bythewayofbuildupthousandsofvirtualuserrunontestedmachine,LoadRunnercanfindtheproblemsbythedetecteddata.ByusingLoadRunner,acompanycanshortenthetimeoftesting,makethesystemmorestrongandensurethetimeforrelease.KEYWORDS:Chinesesoftware,softwaretesting,PerformanceTest,virtualuser.1LoadRunner简介MercuryLoadRunner是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。HP-MercuryInteractive的LoadRunner能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner能支持广范的协议和技术,能提供特殊的解决方案。1.2压力测试简介当一个应用程序在少量用户同时使用的时候,程序可能正常运行,但是当大量用户同时使用的时候,可能就会出现功能失效、性能衰减、甚至系统崩溃。所以我们压力测试做的就是测试在什么样的条件下系统的性能变得不可接受。从广泛意义上讲性能测试包括:压力测试、稳定性测试、负载能力测试和可扩展性测试等。在不同应用系统的性能测试中,需要根据应用系统的特点和测试目的的不同来选择具体的测试方案,本次“淘才宝”核心业务系统的性能测试主要是采用通常的压力测试模式来执行的,即:逐步增加压力,查看应用系统在各种压力状况小的性能表现。在性能测试中,压力测试主要是为了获取系统在较大压力状况下的性能表现而设计并实现的,压力测试主要是获取系统的性能瓶颈和系统的最大吞吐率。1.3性能测试与LoadRunner之我见Loadrunner无疑是一个强大有力的压力测试工具。它的脚本可以录制生成,自动关联;测试场景可以面向指标,多方监控;测试结果图表显示,拆分组合。然而,我们无论在loadrunner前面加多少个“强大”、“智能”的形容词,别忘了其最终修饰的只是一个名词-“工具”。要做一个成功的性能测试,仅读懂和精通了loadrunner的使用手册是不够的,还需要对被测软件系统的方方面面都要有了解,比如软件体系构架,网络拓扑等知识。那么在性能测试中,人的智慧活动体现在哪里呢?1.首先性能测试也是测试的一种,这就意味着做性能测试也要写测试案例。你所作的性能测试能不能足以支持找出性能测试瓶颈,和你在初期设计的测试案例关系甚为重要。对于性能测试来讲,我个人认为,测试人员倒不一定非要有开发经验,但是应该有一个对软件体系结构有全面的了解。为什么呢?大多数情况下,我们在做性能测试时,都不能顺利达到性能指标,可能server响应超时了,也可能是用户死掉了,在日志里抛出了一堆error,这种情形是非常常见,所以在我们在一开始设计性能测试方案时,就应该考虑为寻找性能瓶颈而设计测试案例。这时我们就需要知道在整个软件系统中,有哪些节点,在哪些地方可能存在瓶颈,比如一个B/S系统就有IEclient→物理网络→webserver→appserver→DB这样的一个压力流串(如图1-1)。每个节点的每个模块都有可能成为瓶颈。瓶颈的产生可能由于模块配置引起,也可能由于模块本身引起。这都需要我们设计测试案例来发现的。一般地,我自己常用的、感觉也比较方便的方法是,设计一组性能测试案例来验证一个节点是否存在瓶颈,这组case中尽量保持其他节点不变,来改变这个节点的配置,并监控此节点的各种指标。图1-1压力流串2.使用loadrunner的VU生成脚本。脚本的生成方式就两种,一种是自写或嵌入源代码,一种是录制生成。常常听见有人说,这两种方式中首选录制生成脚本,因为它简单且智能化。但我个人总觉得手写脚本要好一些,因为:(1)可读性好,流程清晰,检查点截取含义明确。业务级的代码读起来总比协议级的代码更易让人理解,也更容易维护,必要时可建立一个脚本库。而录制生成的代码大多没有维护的价值,现炒现卖。(2)手写的程序相比录制的脚本更能真实地模拟应用运行。因为录制的脚本是截获了网络包,生成了协议级的代码,而略掉了client端的处理逻辑。举个例子,用VU录制一个运行script和applet的IE行为,它只会生成http协议的API,在IE中运行的applet和script不会被模拟到,这就不是一个完整的系统。(3)手写程序相比录制脚本更能增加测试人员的技术含量。开发和测试能力双重提高,何乐而不为呢?loadrunner提供了javauser,vbuser,cuser等语言类型的脚本,就是给我们开发脚本用的,而不是录制用的。脚本不管录制也好,还是手写也好,选择的时候应该以脚本模拟程序真实有效为准,结合项目进度,开发难易程度等因素考虑。3.组建并执行性能测试场景。在真实世界中的用户业务规则要转换到可操作的性能指标是需要分析和计算的。当然这通常是市场需求分析人员干的活,但我觉得测试人员应该在做性能测试时,对这些指标进行理解,知道为什么要这样做。有时有的性能指标并不清楚和准确,还需要测试人员来分析。比如一个性能指标:要求软件系统支持每分钟700用户的登陆行为。这对于测试人员来说,其实是一个不确切的性能需求。这指的是瞬时并发用户700,在一分钟的响应时间要求下登陆系统?还是在一分钟内陆续有700个用户登入软件系统即可?这两种场景其实对软件系统的压力是不同的,第一种显然大,第二种要小一些。甚至有的性能需求就是支持50000注册用户,这种需求就更需要分析了,还要引入一些业务发生概率算法模型来做。这已经不是性能测试人员的职责了,但由于目前有不少软件公司流程不规范,或者有流程没执行,这些工作都要测试人员来做了,不过也好,正好是锻炼的机会。4.分析结果数据,找到软件系统性能瓶颈。上面说了,做了那么多,就是为了本步骤-寻找软件系统性能瓶颈。个人认为寻找性能瓶颈是一个非常有挑战性的工作,毛主席曾经说过:一个优秀的指战员就是能够根据已有的客观形势,制定作战计划,然后在作战过程中,发现计划与执行不符的地方,分析,然后调整作战计划,缩小计划和战势的误差。简明一句:就是一个理论和实践结合的过程,一个人的主观思想和客观现实的结合过程。在性能测试中,测试方案就是我们的作战计划,执行性能测试就是我们的作战战场。总之,性能测试是一个不断修