性能测试进阶指南:Loadrunner实战91_第1章性能测试基础49250.docx
-
资源ID:62777271
资源大小:249.65KB
全文页数:43页
- 资源格式: DOCX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
性能测试进阶指南:Loadrunner实战91_第1章性能测试基础49250.docx
目录第一章 性能测试基础21.1 性能测试工程师的标准及挑战21.1.1 性能测试工程考评指标21.1.2 性能测试工程师的挑战31.2 性能测试基础51.2.1 性能51.2.2 性能指标161.2.3 性能分析及调优171.2.4 单机软件性能与网络架构软件221.2.5 性能测试的流程231.2.6 性能测试的注意要点241.2.7 性能测试招聘要求25小结26第一章 性能测测试基础软件测试逐步成成为软件开发发过程中一个个必不可少的的环节,随着着功能测试的的必要性被认认可,自动化化测试和性能能测试也逐步步崭露头角。我们经常会抱怨怨浏览网页慢慢、下载文件件慢,其实这这都是属于性性能问题。用用户在得益于于功能方面的的质量提升后后,开始对性性能有了新的的认识和要求求,而性能测测试并不像功功能测试那样样可以“低门门槛”进行。性性能测试的本本质是通过编编写一个程序序去测试另外外一个程序,而而正是有了这这个相对的“高高门槛”,性性能测试便成成了一个“高高薪”、“高高技术含量”的的工作,新人人在看到高手手指点江山(性能测试)时,充满了了羡慕的眼神神,摩拳擦掌掌准备进入这这个行业。在开始从事性能能测试工作之之前,我们先先来看看这个个职位的考核核标准和面临临的挑战。1.1 性能能测试工程师师的标准及挑挑战当你掌握了性能能测试的基本本技能,接着着就需要找到到一家合适的的企业,通过过劳动换取经经济上的回报报,那么通常常公司如何去去招聘一个性性能测试工程程师,并如何何进行绩效考考评呢?即性能测试试工程师应该该达到的工作作目标到底是是什么?1.1.1 性能测试工工程考评指标标在介绍性能测试试之前,我们们回想一下功功能测试的考考评和工作内内容。如果你你是一名功能能测试经理,该该如何考评你你的员工呢?当软件测试刚刚刚进入中国时时,我们对测测试的理解是是通过模拟用用户执行,发发现用户可能能遇到的问题题,而缺陷的的数目成了考考评的唯一指指标。例如PM(Prrojectt Managger)规定定,每个测试试人员每天都都要发现100个以上的缺缺陷,否则说说明他在工作作态度和工作作能力上有一一定的缺陷。综上,作为一名名功能测试工工程师,其考考评要求可以以归结为一条条,那就是测测试通过的软软件不会被用用户发现严重重的缺陷。而现在,软件测测试逐渐正名名,我们对测测试的理解从从证明软件没没有错误变为为证明软件具具备一定的质质量,而功能能测试工程师师的考评标准准也随之发生生了变化。功能测试工程师师的考评指标标主要有以下下几点:1 缺陷数目缺陷的数目虽然然不能作为主主要的考评指指标,但是从从某一个角度度也说明了测测试工程师发发现问题的能能力。在成熟熟的软件开发发公司中,我我们能够通过过历史数据生生成的缺陷质质量模型准确确预估缺陷数数目。如果你你发现的缺陷陷数量明显低低于预估,则则说明你的工工作可能存在在一定问题。2缺陷质量有量没有质是不不行的,由于于计件制的压压迫,测试人人员往往为了了达到数目上上的指标而凑凑缺陷,数目目是够了,但但是所提的缺缺陷都是鸡毛毛蒜皮的事情情,缺陷的危危害等级和优优先级都比较较低,那么对对软件质量的的提升效果会会相对较差。在缺陷的质量中中包含两个概概念:·缺陷的严重等等级和优先级级·对缺陷的描述述3工作态度测试工作是一个个很容易“偷偷懒”的工作作,是需要个个人积极主动动、追求完美美的工作,对对于测试工程程师,只有具具备善于交流流、积极主动动、“视公为为私”的态度度才能对被测测对象负责。4工作效率在较短的时间内内是否能够高高质量完成上上级布置任务务的能力。5文档编写过去所谓的软件件测试工程师师只是软件测测试执行工程程师,现在被被称为Tesster。现现在测试工程程师还需要进进行测试计划划、测试方案案及用例等文文档的编写工工作。6团队协作能能力7其他相关技技能性能测试在国内内刚刚开始流流行。一个公公司招聘性能能测试工程师师的主要目的的是通过对产产品进行专业业的性能测试试,获得一份份性能测试评评估报告,从从而向用户证证明本产品能能够满足预期期的性能需求求。随着性能测试职职位的逐渐成成熟,对这个个职位的要求求也越来越严严格,性能测测试的目的不不仅仅是为了了获得当前系系统的性能评评估,而是希希望进一步通通过性能测试试发现系统性性能瓶颈并修修复性能问题题。而性能问问题的修复成成本一般相对对较高,如何何使用最低的的成本换取最最高的性能,从从而在性价比比上找到黄金金分割点,将将是性能调优优的重点。性能测试工程师师的考评指标标会包括以下下内容:1是否能够独独立开发脚本本能否使用一种或或多种性能测测试工具完成成用户行为的的模拟脚本开开发工作。2能否对需求求进行性能分分析并获得性性能需求任何测试都是基基于需求的。作作为一名性能能测试工程师师,需要具备备一定的性能能需求分析能能力,从而根根据用户的需需求进行性能能测试,得到到被测系统与与用户需求之之间的差距,从从而生成性能能报告并提供供性能调优方方案。3能否设计场场景及监控负负载系统完成成对性能测试试的实施和监监控工作对性能测试进行行实施,设计计负载规则并并监控负载下下各个系统的的状态。4能否通过性性能测试发现现比较具体的的性能瓶颈具备一定的性能能结果分析及及瓶颈定位能能力。5文档编写与与环境搭建的的能力独立编写性能测测试文档和搭搭建测试环境境的能力。6团队协作能能力7其他相关技技能1.1.2 性能测试工工程师的挑战战作为工作了几年年的功能测试试工程师来说说,大家觉得得在功能测试试工作中的挑挑战是什么呢呢?1公司不重视视测试2就我一个人人做测试3找不到缺陷陷4开发工程师师不能及时修修改测试中发发现的缺陷5不熟悉业务务6不了解功能能测试的方法法及流程总结来说就是工工作内容略感感重复、缺乏乏技术含量,并并且在有限的时时间和资源下下难以达到理理想化的目标标。在实际工作中,要要确保软件没没有缺陷是比比较困难的,这这是因为:1软件不可能能不存在缺陷陷2测试无法发发现所有缺陷陷3测试在大多多数情况下都都没有足够的的资源和时间间(在成本和质质量上寻求平平衡)所以无法完全保保证整个软件件在交付时不不存在缺陷。虽虽然可以通过过各种方法将将严重级别或或者优先级别别较高的问题题发现并修复复,但由于个个人能力或客客观原因还是是会遗留某些些缺陷。那么作为一个性性能测试工程程师所面临的的挑战又有哪哪些呢?1对性能测试试的理论和技技术不熟悉2公司不重视视性能测试3就我一个人人做性能测试试4测试出来的的结果不知道道怎么分析5不熟悉业务务6定位出的性性能问题无法法修正总结来说,就是是如何在有限限的时间和资源下,保保证提交给用用户的软件系系统可以达到到指定的性能能需求指标。从某种角度来说说,现在性能能测试的功效效被过度放大大了。以功能能测试为例,最最初软件是无无须测试的,因因为软件功能能单一,而软软件质量是依依赖于有经验验的开发人员员自己进行维维护,随着开发规规模的逐渐扩扩大,软件越越来越复杂,随随之质量逐渐渐下降,这时时功能测试的的低成本效果果就出现了。各各大公司开始始大规模地成成立测试部门门,随着功能能测试部门的的规模逐渐扩扩大,其效率率开始不断下下降,依赖于于功能测试提提高质量的性性价比逐渐降降低,而现在在大家都认识识到功能测试试并不是万能能的,其主要要作用是保证证软件达到一一定的质量,通通过自动化可可以降低功能能测试的成本本。性能测试试也处在这样样一个过程中中,由于客户户日趋成熟,逐逐渐意识到性性能是继功能能后另一个重重要的质量指指标,而我们们常常错误地地认为性能测测试就是满足足用户性能需需求的灵丹妙妙药,掌握了了性能测试仿仿佛就走在了了软件测试技技术的最高端端,却忽略了了去思考性能能测试到底能能做些什么。性能问题并不像像功能问题那那么棘手,因因为几乎常见见的性能问题题都可以通过过硬件解决,也也就是花点儿儿钱买个更加加强力的硬件件配置来提高高软件的效率率,其次通过过性能测试后后发现了性能能瓶颈(一般性能瓶瓶颈都是较为为底层的问题题),修复的成成本和风险也也是需要考虑虑的问题。好好比功能测试试在最后的BBETA测试试中发现了一一个异常严重重的功能问题题,而该问题题是由于引擎擎所导致的,改改还是不改呢呢?功能是必须须要进行修改改的,如果不不修改用户无无法正常使用用,但是从性性能角度来说说,系统处理理速度慢一点点往往还是能能够接受的。往往往出现花了了很多钱进行行性能测试,并并且发现了性性能问题,但但是修复该性性能缺陷的成成本或风险太太高,最终不不得不放弃。性能测试无非就就是以相对较较低的成本模模拟一个真实实环境来了解解系统上线后后的性能情况况,至于定位位、分析及调调优,这需要要一个团队的的支持才能完完成,所以软软件的性能问问题不是简简简单单靠最后后进行几次性性能测试就能能定位解决的的。1.2 性能能测试基础1.2.1 性能性能的定义在新华字典中可可以查询到这这样的解释:性能指器物物所具有的性性质与效用。这个定义中包括括了以下两层层含义:1 性质性质是指该器物物具有什么特特性,能够做做什么。2 效用是指该器物能够够干得怎么样样。在我们身边的性性能有哪些呢呢?1 F1赛事从竞技比赛的角角度来说,在在比赛中获胜胜的一方性能能较好,那么么是不是性能能只包括速度度呢?不是F1比赛并不不是直道跑11000米,而而是有很多转转弯,而且赛赛程也较长。车车速并不是获获得冠军的唯唯一指标,而而车胎的类型型、进出站的的次数、驾车车选手的发挥挥等条件组合合在一起才是是一个冠军诞诞生的基础。2 个人电脑个人电脑的性能能指什么呢?用起来比较较快?看起来比较较漂亮?我们通常说说电脑的性能能是指运行常常用软件的反反应迅速,但但是仅仅拥有有一颗高级的的芯,电脑一一定能够性能能出众吗?不一定,这这还取决于存存储器、显卡卡等相关设备备。针对CPU来说说,主频也并并不是说明CCPU性能的的唯一指标,并并不是说CPPU的频率越越高,其计算算速度越快。例例如:现在有有两块CPUU,一块是奔奔腾V3.0c主频3GHzz,另外一块块是酷睿2 T72000主频2GHzz,显然T72200的性能能远远优于奔奔腾V。3 软件单位时间内能处处理的业务、处处理一个运算算所需要花费费的时间、打打开该软件需需要的时间,都都能作为衡量量软件性能的的指标。例如如在相同的电电脑配置下分分别安装Wiindowss XP和Windoows Vistaa操作系统。在在这两个操作作系统中复制制大量文件至至移动硬盘时时,就会发现现在Vistta下进行相相同的操作会会比XP慢很多,这这个时候就会会说在该硬件件配置下Viista的磁磁盘读写性能能相对XP较差。失败案例为什么突然开始始如此重视性性能测试呢?那是因为经经历了太多惨惨痛的经历,让让我们不得不不重视这个以以前被忽视的的问题。接着来回顾一下下发生在20007年的一一件由于性能能测试不足而而导致的惨痛痛案例奥奥运会订票系系统瘫痪。22008年8月,对于全全国人民来说说,没有什么么比奥运会更更大的事情了了。买到一张张称心如意的的门票,也成成了很多人的的一个梦想。网网上购票、先先到先得、人人人参与的策策略,让大家家觉得进入鸟鸟巢观看开幕幕式,见证这这历史性的一一刻成为可能能。然而当大大家在奥运官官方售票网上上抢购门票时时,这个梦想想却被网上购购票系统的瘫瘫痪击成碎片片。我们来思考一个个问题,作为为一个奥运订订票系统应该该会有多少人人去买票呢?看一下当时时的新闻报道道:境内公众启动第第二阶段奥运运会门票预售售。然而,为为了让更多的的公众实现奥奥运梦想的“先先到先得,售售完为止”的的销售政策适适得其反,公公众纷纷抢在在第一时间订订票,致使票票务官网压力力激增,承受受了超过自身身设计容量88倍的流量,导导致系统瘫痪痪。超出8倍系统容容量?那么接着来来看看真正的的系统容量是是多少呢?昨天上午9点,预预售一开始,公公众提交申请请空前踊跃。北北京奥运会官官方票务网站站的浏览量在在第一个小时时内达到8000万次,每每秒钟从网上上提交的门票票申请超过220万张;票票务呼叫中心心热线的呼入入量超过了3380万人次次。由于瞬间间访问数量过过大,技术系系统应对不畅畅,造成很多多申购者无法法及时提交申申请。一个小时访问量量达到8000万次,通过过计算可以得得到平均每分分钟的访问量量约是12万次,而而每秒约是22000次。对对比自身设计计的每小时1100万次,每每秒的访问量量预估为2550次左右,你你是不是发现现系统估计的的访问量少得得可怜?作为一个门门户网站,SSina、Sohu每秒秒的访问量是是多少?需求是不是是出了问题?作为百年一遇的的奥运会盛典典,每个炎黄黄子孙都会希希望亲身在鸟鸟巢感受奥运运开幕式的盛盛况,而一张张奥运会门票票成了炙手可可热的香饽饽饽,由于采取取的是先到先先得的策略,为为了保证自己己能够成为第第一个进入系系统购票的用用户,我们需需要确保自己己以最快的速速度进行订单单的操作(提前准备用用户注册、表表单填写、业业务熟悉、网网络调整、个个人反应速度度调整、期待待好运降临)。当到达北北京时间9点整,马上上单击订票按按钮。有少数数人由于最先先进入系统,所所以他们顺利利地订票成功功,而更多用用户由于网络络的延时或者者某些别的原原因,被堵在在了系统的外外面。在这种种情况下就会会产生大量用用户并发订票票的操作。北京奥运会官方方票务网站的的浏览量在第第一个小时达达到800万次,每每秒钟从网上上提交的订票申请超过过20万张。从这句话可以看看出,浏览量量和门票申请请的数量完全全不是一个数数量级,对应应每秒不过22000多次次的浏览量,系系统却承受了了20万张每秒秒的申请量。这这是因为绝大大多数购票者者都非常有经经验,知道不不能到9点钟再来填填写订票表单单,而是应该该不断地单击击提交按钮将将事先输入的的订票信息提提交给服务器器。接着来分析一下下如果想要订订到奥运会的的门票需要做做哪些工作:1 用户注册当然要先注册订订票网站会员员,并顺便把把银行卡也准准备好,确保保支付顺利。2表单的填写写在订票开始前,先先到奥运会订订票系统上去去,将要购买买的开闭幕式式、足球决赛赛等关键场次次的表单都准准备好。3熟悉业务整整理并熟悉整整个购票的流流程。4网络调整对于整个开幕式式来说,全国国可能有几千千万的用户在在尝试购票,而而开幕式的门门票一共也就就3万多张,对对于如此多的的需求(接近800万的访访问量)只是杯水车车薪,所以如如果想要在这这种供需严重重不平衡的情情况下获得一一张开幕式的的门票,网速速是一个非常常重要的因素素。每秒20万的订订票申请,也也就是平均每每毫秒2000张。如果一一个上海的网网友和一个北北京的网友同同时在9点整购票,那那么上海的兄兄弟就订不到到这张票了,因因为上海电信信到北京网通的的平均延时都都在200mms,按照刚刚才的平均值值来计算,已已经卖掉4万张票了。所所以如果想要要购买到门票票,最好在北北京机房进行行订票,使用用光纤连接,确确保订票信息息到达服务器器的延时在11ms之内,那那么成功的概概率就会大大大提升。5个人反映时时间其实提交订票信信息也是有讲讲究的,不同同的人对于反反映来说都有有快慢之分,一一般人在接受受了信息到反反映为动作可可能需要0406秒的时间,而而通过训练可可以提升到00102秒,算算这这是200毫秒的的差距啊,又又是4万张票没了了,所以练练练手速是很重重要的一点,懂懂一些技术的的朋友可能会会使用按键精精灵、QTPP这类自动化化工具来实现现,将时间更更加精准地进进行控制,甚甚至可以考虑虑做一点抢跑跑的操作。好,现在万事俱俱备,时间一一到9点,如果你你是那个能在在最短时间就将请求发发送到服务器器的人,作为为第一个冲入入系统的用户户,就能顺利利地获得想要要预订的门票票。而如果你你很不幸在99点钟打了一一个喷嚏,再再去提交门票票预订申请,那那么很抱歉,1秒钟过去了,有20万人在你前面了。虽然整个系统在在上线前进行行过性能测试试,但由于错错误的需求导导致当出现远远远超出系统统所能负载的的访问量时,系系统来不及响响应就瘫痪了了。错误的需需求是整个售售票网站瘫痪痪的最大原因因。那么是不不是需求做错错了,系统瘫瘫痪就是理所所当然的呢?我们再来看看看当时的新新闻解释:从昨天上午8点点左右开始,就就有不少网民民登录票务官官网排队等待待申购门票。据据了解,从上上午9点正式式开始售票到到中午12点点的3个小时时内,票务网网站的浏览次次数达到20000万次。这这与此次所提提供的1000万次/小时的流量量相差甚远。不停地刷新网页页,也是造成成网络拥堵的的原因之一。”杨杨力说,不少少网民在无法法正常登录后后便不断刷新新,“这就相相当于一名申申购者变成了了若干名申购购者,无形中中增大网站流流量。从技术术角度上讲,网网站的流量几几乎呈几何倍倍增长,导致致其他申购者者无法登录。”当大量的用户进进行访问时,整整个系统由于于网络瓶颈或或处理瓶颈导导致了拥堵,用用户无法访问问。既然没有有有效的网络络流量处理能能力,如果进进行流量控制制,问题就会会被限制在一一个可控的范范围内。这好好比一个银行行有大量人来来取款,总不不能听之任之之,而应该有有专人进行协协调管理,确确保秩序,并并告知排在后后面的顾客可可以考虑改天天再来。导致奥运会售票票网站瘫痪的的原因是综合合的。如果当当时进行了流流量控制,那那么可以保证证登录到服务务器上的用户户可以比较正正常地访问,而而超出服务器器处理能力的的用户将无法法进入系统,从从而确保系统统不会由于负负载过大而停停止响应。进进一步来说如如果剩下的用用户需要通过过排队的方式式来登录服务务器进行购票票,那么当时时尴尬的情况况就不会出现现。按照系统统默认的处理理能力,相信信在两个小时时内肯定能够够把所有的票票都销售完毕毕。当然,也需要以以平常心来看看待这个事情情,作为任意意一家公司来来说,开发和和维护一个奥奥运会门票系系统都是有一一定困难的,但但是问题的出出现告诉我们们,性能测试试不是简单做做做就可以的的,想要真正正地解决性能能问题需要注注意以下几个个问题:1确定需求整个系统到底有有多少人会访访问?并发量会是是多少?访问集中在在哪些业务上上?根据这些需需求进行性能能测试,即可可保证系统在在指定的指标标下能够正常常工作。如何何获得奥运会会订票的真实实需求呢?其实并不是是很难。首先,在奥运会会第一次抽签签售票的过程程中就能了解解有多少人有有意向购票,由由于中签率非非常低,那么么没有中签的的人一定会参参加在线购票票,所以可以以得到一个比比较不错的订订票访问量预预估。其次,可以参考考一下往届奥奥运会售票的的经验和数据据。最后,可以做一一次模拟售票票的测试,给给予一定的奖奖励号召大家家都来尝试一一下(例如:头2000名注册的的用户可以免免费获赠一张张门票,或者者订票尾号为为多少的用户户获赠门票),确保在正正常上线的情情况下不出问问题。奥运会开幕式前前就在鸟巢进进行了带妆彩彩排,通过这这次性能测试试了解了开幕幕式的真实情情况,从而制制定了推荐观观众在开幕式式前及早进入入场地且开幕幕式结束后先先等待运动员员离场后观众众再分批离场场的策略,确确保不会出现现拥堵的情况况,这就是通通过性能测试试发现问题并并进行修改的的案例。2确保系统的的健壮性系统应该能够在在极端负载的的情况下正常常运行。这就就好我们,不能因因为生活压力力大就不工作作了,可以工工作效率低,但但是不能不工工作。3制定意外的的处理方式在运行过程中有有全面的监控控,并且针对对各种意外制制定详细的应应急方案,才才能确保系统统有能力处理理各种意外情情况。对于可可能出现的访访问高峰,相相信很多网络络维护的朋友友做过这样的的事情,将公公司多余的服服务器或者不不常用的服务务器腾出来,加加入核心服务务器的群集中中,并且设置置流量阈值,确确保整个系统统能够正常工工作。当出现现网络流量过过大的情况时时,可以通过过队列等技术术手段进行解解决。还记得我在Ettang做SQA的时候候,每次进行行CET查分的的时候,公司司都会将所有有的服务器停停下来,全部部支持CETT查分的业务务。所以说,并不是是奥运会在线线购票的用户户请求远远超超出了我们的的技术能力范范围才导致网网站瘫痪。一一些门户网站站在直播神七七出仓时,其其页面的并发发请求会远远远高于奥运订订票网站的并并发请求,但但是并没有出出现无法访问问或者响应时时间较长的情情况。性能测试上面谈了什么是是性能,忽视视了性能会带带来怎样的结结果,那么什什么是性能测测试呢?性能测试的概念念性能测试是系统统测试的一种种。作为一个个优秀的系统统测试工程师师,需要通过过“系统”的的视角来分析析被测试系统统,分析包含含以下两点:1功能测试:某个功能点点2性能测试:整个系统,包包括软件和硬硬件在软件质量模型型中,性能测测试是属于效效率这一类的的。我们先来来了解一下这这句话涉及的的两个概念。质量模型:一组组特性及特性性之间的关系系,它提供规规定质量需求求和评价质量量的基础。软件效率(effficieency):在规定条件件下,相对于于所用资源的的数量,软件件产品可提供供适当性能的的能力。其中中资源可能包包括其他软件件产品、系统统的软件和硬硬件配置,以以及物质材料料(如打印纸、磁磁盘等)。衡量一个软件的的性能,需要要从软件效率率的以下3点考虑:·时间特性在规定条件下,软软件产品执行行其功能时,提提供适当的响响应和处理时时间以及吞吐吐率的能力。·资源利用性在规定条件下,软软件产品执行行其功能时,使使用合适数量量和类别的资资源的能力。·效率依从性软件产品遵循与与效率相关的的标准或约定定的能力。也就是说我们需需要确保软件件在一定的资资源配置条件件下达到一定定的性能,并并且遵守相关关的标准或协协议。例如我我们从来不会会奢望一台880386的的电脑能够在在1分钟内启动动完Winddows Vistaa操作系统,因因为我们知道道其硬件不符符合产品的标标准。但是如如果一台高级级的主流配置置电脑在1分钟内无法法完成Winndows Vistaa操作系统的的启动,你就就会开始怀疑疑是不是自己己的硬件存在在某些问题,如如果不是硬件件问题,那么么就会觉得这这个操作系统统很慢,性能能很差。所以一个性能测测试工程师的的主要工作目目标就是确保保系统能够在在一定的硬件件、软件环境境下达到一定定的性能指标标。而性能测试(PPerforrmancee Testiing)的定定义为:在一一定的负载情情况下,系统统的响应时间间等特性是否否满足特定的的性能需求。从从某些角度来来说,性能其其实是功能的的一种。什么是负载?本书谈到的性能能问题都不是是单机性能问问题,而是基基于网络架构构(如C/S架构或者B/S架构)的性能问题题。当众多终终端用户对系系统进行访问问时,用户越越多,那么服服务器需要处处理的客户请请求也就越多多,从而形成成了负载,而而在这里负载载的概念包含含以下3点:1系统实际用用户可能会有很多人人使用同一个个系统,但并并不是所有的的用户都会同同时使用该系系统,所以系系统的实际用用户是一个容容量的问题,而而不是负载的的问题。2系统在线用用户当系统用户对系系统进行操作作时,我们认认为该用户为为在线用户,这这些用户对系系统形成了负负载,在线用用户和实际用用户的比例是是根据系统特特性决定的。例如:对于电子子邮件系统,每每天上班后几几乎所有的实实际用户都会会进行收取邮邮件的操作,这这个时候在线线用户几乎等等于实际用户户。而对于某网络游游戏来说,工工作时间的在线用用户甚至不足足所有用户的的20。3并发操作用户在线后会对对系统产生负负载,但是用用户和用户之之间的操作却不不是并发的,这这是因为首先先用户的操作作需要延时等等待,其次每每个用户的操操作并不是完完全相同。并并发操作会对对系统产生很很大的负载,当当多个用户同同时对某个功功能进行操作作时,服务器器必须对这些些请求进行队队列管理,依依次处理。性能测试的分类类性能测试的方法法很多,名词词也很多,从从使用方便的的角度来说,这这里将性能测测试分为6大种。负载测试(Looad Testiing)负载测试是指在在一定的软件件、硬件及网网络环境下,运运行一种或多多种业务,在在不同虚拟用用户数量的情情况下,测试试服务器的性性能指标是否否在用户的要要求范围内,以以此确定系统统所能承载的的最大用户数数、最大有效效用户数以及及不同用户数数下的系统响响应时间及服服务器的资源源利用率。负载测试强调的的是在一定的的环境下系统统能够达到的的峰值指标,大大多数的性能能测试都是负负载测试。例如在各大网站站上看到的各各种显卡测试试,都是通过过运行3D Mark或者者某种游戏得得到的最终数数据,通过这这个数据来说说明显卡的峰峰值处理能力力,这就是负负载测试的一一种方式。通过运行EVEEREST的的性能测试功功能对当前硬硬件平台下CCPU Queenn进行负载测测试,负载结结果如图1.1所示,最终终得分为83392分。压力测试(Sttress Testiing)压力测试是指在在一定的软件件、硬件及网网络环境下,模模拟大量的虚虚拟用户向服服务器产生负负载,使服务务器的资源处处于极限状态态下并长时间间连续运行,以以测试服务器器在高负载情情况下是否能能够稳定工作作。与负载测测试获得峰值值性能数据不不同,压力测测试强调在极极端情况下系系统的稳定性性,这个时候候处理能力已已经不重要了了。例如在CPU超超频后经常需需要对系统的的稳定性进行行测试,那么么可以通过PPrime995工具来进进行稳定性测测试,如图11.2所示,该软软件可以让系系统的所有资资源长时间处处于消耗殆尽尽的状态。通通过这样一段段时间的“烤烤机”后,如如果没有出现现死机等情况况,可以认为为系统通过了了压力测试,即即可以在各种种情况下稳定定地运行。图1.1 EEVERESST CPU Queenn测试结果 图1.2 压力测试工工具Primme95容量测试(Voolume Testiing)容量测试是指在在一定的软件件、硬件及网网络环境下,在在数据库中构构造不同数量量级别的数据据记录,运行行一种或多种种业务在一定虚拟用用户数量的情情况下,获取取不同数量级级别的服务器器性能指标,以以确定数据库库的最佳容量量和最大容量量。容量测试试不仅可以对数据据库进行,还还可以对硬件件处理能力、各各种服务器的的连接能力等等进行,以此此来测试系统统在不同容量量级别下是否否能达到指定定的性能。容量测试和负载载测试的区别别在于,容量测试试主要关心hhow much,而而负载测试则则同时强调hhow much和how fast。例如测试一个WWord20003文档中中最多可以存存放多少个汉汉字。容量测试中也包包含了可伸缩缩性测试的概概念,可伸缩缩性可以从硬硬件和软件两两个方面来理理解:1硬件的可伸伸缩性是否可可以通过硬件件设备的增加加来支持更多多的用户,比比如通过增加加CPU个数或或者存储器空空间大小等。2软件的可伸伸缩性是否可可以通过运行行更多的实例例或者采用分分布式处理来来支持更多的的用户。再具体一点就是是一个可伸缩缩系统必须具具有随负荷增增加响应时间间也线性增加加的特点。这这样就可以通通过线性增加加硬件设备、实实例个数或者者分布式处理理点来处理更更多的数据量量,也就能更更好地在不增增加响应时间间的前提下支支持更多的用用户。可伸缩性测试具具体的测试过过程为:进行行负载测试,记记录不同负载载下的平均响响应时间,然然后查看平均均响应时间是否线性性增加。如线线性增加,则则说明系统具具有可伸缩性性;否则说明明系统可伸缩缩性较差或者者没有可伸缩性配置测试(Coonfiguuratioon Testiing)配置测试是指在在不同的软件件、硬件以及及网络环境配配置下,运行行一种或多种种业务,在一一定的虚拟用用户数量情况况下,获得不不同配置的性性能指标,用用f选择最佳的的设备及参数数配置。通过过产生不同的的配置,来得得到系统性能能的变化状况况。在购买电脑前,我我们通常会参参考各种硬件件评测,通过过这些评测可可以得知如何何花最少的钱钱获得最高的的性能回报,而而这些测试都都是通过在相相同的平台下下切换CPUU或者显卡等等硬件来获得得对应的性能能指标。例如如可以使用EEVERESST Ultimmate、Iometeer、Sisofft Sandrra这类工具具来获得当前前系统整体或或者某个硬件件的性能数据据。通过配置置测试可以将将性能缺陷放放大,方便定定位性能瓶颈颈。通过EVVERESTT测试内存读读写速度,得得出当前系统统的内存写入入速度为30029MBs,如图1.3所示。图1.3 EEVERESST内存写入入测试结果基准测试(Beenchmaark Testiing)基准测试是指在在一定的软件件、硬件及网网络环境下,模模拟一定数量量的虚拟用户户运行一种或或多种业务,将将测试结果作作为基线数据据,在系统调调优或系统评评测的过程中中,通过运行行相同的业务务场景比较测测试结果,确确定调优的结结果是否达到到预期效果或或者为系统的的选择提供决决策数据。基基准测试一般般基于配置测测试,通过配配置测试得到到数据,并将将这个数据作作为基准来比比较每次调优优后的性能是是否有所改善善。例如前面面通过EVEEREST Ultimmate工具具获得了当前前的内存读写写速度数据,然然后对系统进进行调优(修改内存时时序),再做一次相同的测测试,如果内内存读写速度度上升了,就就说明前面的的调优是正确确有效的,反反之则说明调调优无效。并发测试(Cooncurrrency Testiing)并发测试是指通通过模拟多个个用户并发访访问同一个应应用、存储过过程或数据记记录以及其他他并发操作,测测试是否存在在死锁、数据据错误等故障障。为了避免免数据库或函函数方法在并并发下的错误误,需要专门门针对每个模模块进行并发发测试。例如软件系统中中有以下类似似的存储过程程:Create proc newusserunamevvarchaar(1000)AsDeclaree ucounnt intSelect ucoount=ccount(*) from userssIf uccount<<5000Insert into USerss(unamme) valuees(unname)e1Se-提示VIPP用户活动已已经结束,会会员已满go当大量用户并发发运行该存储储过程时就会会出现注册成成功的会员数数目大于50000的情况况,因为有多多个会员能够够同时得到系系统当前的用用户数,而产产生多个用户户同时插入会会员信息的情情况,导致功功能的最终错错误。对于这这种情况需要要在查询用户户数的时候添加查查询锁来避免免查询功能的的并发操作。性能测试进行的的时间好比几年前功能能测试刚刚起起步,其实就就是一次出厂厂验货,却美美其名日QAA。现在我们们知道了功能能测试包括单单元测试、集集成测试、系系统测试,知知道了需要尽尽可能早地介介入测试,甚甚至应该对需需求进行测试试,从而有效效地、全方位位地保证软件件质量。扁鹊见蔡桓公公是一篇小小学时的课文文,相对于看看病来说,软软件测试也是是一种类似的的工作,即应应该及早进行行诊断及预防防。现在的性性能测试往往往都是在项目目后期才开始始进行的,就就算通过性能能测试发现系系统的性能已已经完全无法法达到预期的的需求,在多多数情况下已已经于事无补补了。一个有效的缺陷陷就是能够被被修复的缺陷陷!一个软件的缺陷陷,特别是性性能上的缺陷陷不是简单地地改改代码就就行。当一栋栋高楼已经建建到第40层,才发发现地基打得得不够深,没没办法继续往往下修建了,而而主梁的强度度也不够,这这时除了推倒倒重建也没什什么其他有效效的方法了。软软件也是如此此,当后期才才发现存在严严重的性能问问题时,再想想修正它的成成本和难度相相对功能问题题来说要大很很多。接着来来看看理想情情况下性能测测试应该在哪哪些阶段介入入,如图1.4所示。图1.4 性性能测试的进进行时间编码阶段(压力力/并发)在编码阶段,当当每个函数、方方法、存储过过程被开发出出来并通过单单元测试后,都都应该进行压压力和并发测测试,确认接接口和被测对对象能否健壮壮地处理极端端情况,并且且能否正确处处理并发请求求。在大多数情况下下,这个阶段段的性能测试试都是开发人人员自行负责。而而作为一个架架构设计师,在在设计软件时时即应该考虑虑整个系统的的性能,并进进行建模测试试,确保设计计的正确。随随后程序员对对架构进行实实现时就需要要对自己编写写的代码进行行并发测试和和压力测试。编码一测试之间间(容量测试)在系统编码完成成时,应该及及时进行容量量测试,确认认系统能否满满足在指定容容量下的性能能需求。例如如导入5年的历史数数据量,检查查在这种容量量下系统的性性能是否可以以接受,进一一步再构造未未来5年的数据量量,检查系统统是否正常工工作。测试阶段(负载载/配置/基准)在进入测试阶段段之后,在确确保功能正确确实现后需要要进行负载测测试,得到系系统在当前硬硬件及软件环环境下的性能能指标(响应时间、吞吞吐量、资源源利用率),进一步形形成性能数据据基准,然后后通过配置测测试进行性能能瓶颈的定位位和优化。在负载测试后可可以得到系统统的性能,如如果该结果满满足用户需求求,则可以考考虑结束性能能测试,也可可以考虑进一一步进行配置置和基准测试试,定位系统统中的性能瓶瓶颈,并进行行进一步的优优化。1.2.2 性能指标前面了解了什么么是性能,忽忽视性能会带带来什么结果果以及什么是是性能测试,那那么性能测试试到底要测什什么呢?在讨论软件的性性能指标之前前,请思考一一下汽车和家家用电脑的性性能指标是通通过什么数据据来说明的。对于一个应用系系统来说,我我们所需要监监控的性能指指标主要有以以下3点:响应时间响应时间反映完完成某个业务务所需要的时时间。例如从单击登录录按钮到登录录完成返回登登录成功页面面需要消耗11秒钟,那么么就说这个操操作的响应时时间是1秒。在性能测试中是是通过事务函函数来完成对对响应时间的的统计,事务务是指做某件件事情的操作作,事务函数数会记录开始始做这件事情情和该事情做做完之间的时时间差,使用用Transsactioon Respoonse Time这个个词来说明,也也称为事务响响应时间。吞吐量吞吐量反映单位位时间内能够够处理的事务务数目。例如对于系统来来说一个用户户登录需要11秒钟,如果果系统同时支支持10个用户登登录,且响应应时间是1秒钟,那么么系统的吞吐吐量就是100个秒。在在性能测试工工具中,吞吐吐量也被称为为TPS(TTransaactionn Per Seconnd,每秒事事务数)也就是说在在单位时