以下是我所遇到过的,也使用过的一些性能测试里面的种类以及who?what?how?的问题。
一些释义来自网络:
基准测试:
做过某电网性能测试,要求基准测试。基准测试就是一种测量和评估软件性能指标的活动。说白了就是看一下这系统在没有做并发量的时候的“性能结果“是什么样的。
执行的时候,比如”每支交易迭代执行100次,每次执行10分钟,获取系统在测试环境下的事务处理能力“这个就是目标以及迭代的次数。这样看到执行就清楚多了吧。
这个一般不太常用。需要做的话,就是摸一下在没有并发持续执行的时候系统的业务执行结果是什么样子的。
并发测试:
测试多个用户同时访问同一个模块或者数据记录时,系统的性能问题。目的就是发现系统中会不会发生隐藏的并发访问时的问题。主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。
并发测试具体使用时分为很多中,都数据并发的范围。
性能测试:
(一般做的时候使用的)区别于广义上的统称
性能测试就是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。
可以说是要在特定的运行条件下验证系统的能力状态。
(通信项目经验)比如做20并发,持续5分钟等。查看平均响应时间和TPS是否满足生产的指标或者是设计的指标。评估正常使用的功能。不是破坏性的(好一些的系统配置)。
目的:验证系统是否达到了设计要求和是否可以满足需求。需要将环境确认不变更。做之前需要了解业务流程,最重要是做之前先确定好目标即指标要求。
负载测试:
叫法不一,也可以说是极限测试。不过根据负载,就可以联想到系统背负的运载能力,也就是说,它是一个评估性的,通过在被测系统上不断增加压力(即用户并发数),直到性能指标达到极限(下一秒各种指标都不正常,例如系统宕机或者半宕机或者系统资源使用马上崩溃)。
这时候宕掉也没事。就一直稳定的持续增加并发用户数就行,宕掉就停止。重点观看系统正常运行的最大值时候的一些数据和资源使用。主要就是看是否是程序、还是网络、还是服务器、还是数据库等哪个方面是瓶颈。(有关于分析以后会讲到)。
目的:发现系统处理能力的极限。找出问题所在,做这个就是为了发现系统是否还有隐藏的能力。用来改进调优。就是,不知道哪里有问题,也没有目标,就跑跑看。
压力测试:
有时候也叫它强度测试,就是保持这个强度保持这个压力进行测试咯。就是测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。而这个压力这个强度的标准就是要满足系统在一定饱和状态下,例如cpu、内存在饱和使用情况下。关于这个点就可以参考负载测试的分析结果。有人说负载和压力差不多,也有的说负载是为了做压力测试,其实这样说也有道理的。
目的呢:就是检查系统处于较高的压力性能下时,应用的表现能力。使系统资源一直维持在高强度状态。当然一般是用在测试系统的稳定性方面。
执行的话就是已这个标准持续跑2个小时来观察这个业务的性能表现,是否有衰减等等。(电网项目做过)。
当然有的项目上这个压力的多少并发量不太确定,严格的话按照负载测试结果来衡量。不严肃的话,差不多的一个标准就行。比如200VU。1000VU等。
再废话一次:就是保持大强度的压力之下,看系统是否稳定,哪里会出问题。持续时间比较长也算是稳定性测试咯。
可靠性测试:
可靠性测试和压力测试区别不是很大,区别就在于,压力测试压力比较大,可靠性压力一般在中间水平,自主判断合理就可,不唯一。时间上可靠性一般比较长,压力相对短很多,我电网项目做过的可靠性最长为3*24小时。这个就是稳定性测试。
主要目的是验证是否支持长期稳定的运行。观察资源使用情况等指标。
主要就这些,叫法多变,可以根据具体需求目的来判断。从执行上来看区别比较大。也就是所谓方法不一样。
一个系统之所以要做性能测试就是为了让整个系统的部件协调可以更好地协同工作,实现1+1>2的标准。往往有的公司说,只要硬件配置搞上去高上去,就没必要做性能测试。很显然这是错误的。如果能让组成部分都发挥的很好,协调作战能力就会强。
之所以分类会有差异,只是因为对应了不同的目标目的。基本一个完整的系统评估,这些都是要做的。做的多了。才能分析更到位。
浅言辄止-谢谢!
--白话师说-2015/11/30