性能测试常见分类 web
常会别人说到性能测试、负载测试、压力测试、并发测试,不少人都是混合使用,或者一会叫压力测试,一会叫并发测试。这些概念除了非测试人员分不清楚,甚至许多专业测试人员也对这些名词也很模糊。关于这个分类我翻阅了几个本比较好的书籍,他们讲的也比较模糊,没有给出本质上的区别。只是从不一样角度和关 注点来解释。好吧咱们先来看他们之间比较广泛的解释。服务器
性能测试(狭义)并发
性能测试方法是经过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否知足生产性能要求。通俗地说,这种方法就是要在特定的运行条件下验证系统的能力状态。工具
特色:性能
一、这种方法的主要目的是验证系统是否有系统宣称具备的能力。
二、这种方法要事先了解被测试系统经典场景,并具备肯定的性能目标。
三、这种方法要求在已经肯定的环境下运行。测试
也就是说,这种方法是对系统性能已经有了解的前提,并对需求有明确的目标,并在已经肯定的环境下进行的。大数据
负载测试线程
经过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预约指标或都某种资源已经达到饱和状态。设计
特色:内存
一、这种性能测试方法的主要目的是找到系统处理能力的极限。
二、这种性能测试方法须要在给定的测试环境下进行,一般也须要考虑被测试系统的业务压力量和典型场景、使得测试结果具备业务上的意义。
三、这种性能测试方法通常用来了解系统的性能容量,或是配合性能调优来使用。
也就是说,这种方法是对一个系统持续不段的加压,看你在何时已经超出“个人要求”或系统崩溃。
压力测试(强度测试)
压力测试方法测试系统在必定饱和状态下,例如cpu、内存在饱和使用状况下,系统可以处理的会话能力,以及系统是否会出现错误
特色:
一、这种性能测试方法的主要目的是检查系统处于压力性能下时,应用的表现。
二、这种性能测试通常经过模拟负载等方法,使得系统的资源使用达到较高的水平。
三、这种性能测试方法通常用于测试系统的稳定性。
也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。
并发测试
并发测试方法经过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。
特色:
一、这种性能测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。
二、这种性能测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。
三、这种性能测试方法能够在开发的各个阶段使用须要相关的测试工具的配合和支持。
也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操做进行加压。
配置测试
配置测试方法经过对被测系统的软\硬件环境的调整,了解各类不一样对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
特色:
一、这种性能测试方法的主要目的是了解各类不一样因素对系统性能影响的程度,从而判断出最值得进行的调优操做。
二、这种性能测试方法通常在对系统性能情况有初步了解后进行。
三、这种性能测试方法通常用于性能调优和规划能力。
也就是说,这种测试关注点是“微调”,经过对软硬件的不段调整,找出这他们的最佳状态,使系统达到一个最强的状态。
可靠性测试
在给系统加载必定业务压力的状况下,使系统运行一段时间,以此检测系统是否稳定。
特色:
一、这种性能测试方法的主要目的是验证是否支持长期稳定的运行。
二、这种性能测试方法须要在压力下持续一段时间的运行。(2~3天)
三、测试过程当中须要关注系统的运行情况。
也就是说,这种测试的关注点是“稳定”,不须要给系统太大的压力,只要系统可以长期处于一个稳定的状态。
上面的分类绝非全面,还有失效性测试,就是系统局部发生问题时,其它模块是否能够正常的运行。这个在极少数状况下进行,这里就不介绍了。
性能测试分类之我见
上面的类分完了,彷佛获得很多专家的认同,并没有不妥。但咱们在性能测试过程当中真的能把它们区别分的很清楚么?你能严格区分出你此次的测试到底并发测试仍是压力测试。
笔者第一点不太赞同的是对“性能测试”的定义。笔者认为性能测式测试包含了上面的全部分类。而这种性能测试的定义只是一种狭义上的“性能测试”,属于性能测试的一种。
性能测试是相对功能测试来讲的。他们之间最本质的区别就是对系统有处理能力是否够成压力。若是一个用户的一个操做(好比超大数据量的查询)对系统够成了压力,我也能够视其为性能测试。
其实,能够这样来划分性能测试
上面定义了那么多分类,是否是有点晕了。其实,以笔者认为咱们进行性能测试时关注的就两点。耐力和爆发力。
初高中时练过几年体育,最好时表明学校参加县体育比赛,不过是去垫底的。哈哈!哈一个体育运动员来讲,那么多的体育项目,其实,考核他的就两方面。一是爆发力。二是耐力。
爆发力:拿一个举重选手来讲,他的重点在重量上,由于你只要能举起三秒就算你成功了。关键是看你能举起一个什么样的重量。
耐力:拿一个马拉松运动员来讲,你百米速度跑得再快没用。关键是这40千米路程中,最早跑到终点的人才是赢家。
总体协调性:固然,身为一个教练员,我在选拔选手的时候,除了看这个运动员的耐力和爆发力,身体的总体协调性也是我考核的一个很重要的指标。好比一个运行员身体各位部位练得很是强壮,但右臂先天性萎缩。他的跑步成绩虽然不错。但他在跑的过程当中,身体有各个部分都在分担右臂的不足。右臂影响了整个体能的发挥。
再到系统的性能上说,爆发力就是这个系统能承受的最大压力,没准这个系统承受的压力很大。但过半个小时之间就挂掉了。耐力就是这个每系统长时间处于压力下的稳定性,这系统超级稳定,跑个几十年都不用重启服务器。那么总体协调性就是看系统有没系统瓶颈,需不须要进行系统调优。
在作性能测试时请忘掉分类
这里只是告诉在作性能测试时不要想这个测试是属于性能测试的哪一类呢?是并发性测呢?仍是压力测试?
咱们还拿上面的教练员选拔选手作例子。
记得我进校体队的时候,教练说让我跑两圈。而后,我就开始围绕着操场跑起来。你说教练让我跑两圈是想看个人什么能力?
一、双腿的考核,一个是步幅,就是步与步之间的距离。一个是频率,两腿交替的频率。若是你一步拉得很大的话,那么频率必定会降低。若是想提升频率的话,那么必定会影响到步幅的大小。
二、双臂的考核,肩膀是否放松,摆臂是否有力,双臂的摆动与双腿的摆动是否协调。
三、呼吸是否匀称,目前的速度能够跑几圈。
我只作了一项体育运行,就考核了我这么多内容。咱们在作一个性能测试时也不局限在某一分类上,也可能咱们的一个测试包含多个分类。
《web性能测试实战》: 么多类型的性能测试看起来很吓人,实际上它他们大可能是密切相关的。例如,运行8个小时来测试系统是否可靠,而这个测试极有可能包含了可靠性能测、强度测试、并发测试、负载测试,等等。所以,在实施性能测试时决不能割裂它们的内部联系去进行,而应该分析它们之间的关系,以一种高效率的方式来设计性能测试。