一次弄懂性能、压力、负载测试

谈到性能测试就不得不说压力、负载测试,其实叫法有很多种,而且他们所用到的工具以及关注的指标大致相同,所以很容易混淆。太难了!先举个最通俗易懂的例子:
举例: 一个人扛X斤
负载测试:200斤情况下,能否坚持5分钟。(满足最基本的要求)
压力测试:200,300,400…情况下,他的表现,什么时候失败,失败之后什么表现,重新扛200是否正常。(最大承受的条件)
容量测试:在坚持5分钟的情况下,他一次最多能扛多少斤。

负载测试:
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,这里我们可以根据《loadrunner没有告诉你的》中哪一条性能的曲线来理解,那条曲线有两个拐点,第一个拐点时达到最佳并发数的时候,第二个拐点是达到最大并发数的时候,这时候仍没有超过我们设置的最大响应时间,在增加的时候,性能就开始下降了,出现了大量的超时情况
一次弄懂性能、压力、负载测试_第1张图片
理解就是负载测试是测试出第二个拐点,此时系统仍然维持着最佳状态!
压力测试
如上图,继续增加并发或者用户数就是我们的压力测试了,假设我们规定我们业务的相应时间不能够超过图中标识的点,一旦超过这个点,错误率等指标就不可被接受,那么如何测试出来这个点,这就是压力测试,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下系统的性能会变得不可接受。

性能测试中关注的关键指标
软件性能测试的目的主要有以下三点:
1.评价系统当前性能,判断系统能否满预期的性能需求
2.寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题。
3.判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能
对于用户而言,则更关注当前系统的:
1.能否满足上线性能要求
2.系统极限承受如何
3.系统稳定性如何
而我们关注的指标大概可以分为两类
一次弄懂性能、压力、负载测试_第2张图片
说一下磁盘I/O
磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是读IO操作,一般使用%DiskTime(磁盘用于读写所占的时间百分比)度量磁盘读写性能。

如何分析监控的关键指标?

**判断CPU是否是瓶颈的方法:**一般情况下CPU满负荷工作,有时候并不能判定为CPU出现瓶颈,比如Linux 总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化,即CPU尽可能最大化使用。因此,一般判断CPU为瓶颈,主要从两方面:一是CPU空闲持续为 0二是运行队列大于CPU核数(经验值3-4倍),即可判定存在瓶颈,对于CPU高消耗主要由什么引起的,可能是应用程序不合理造成,也可能是硬件资源 不足,需要具体问题具体分析,比如问题SQL语句引起,则需要跟踪并优化引起CPU使用过高的SQL语句。

**判断内存是否是瓶颈的方法:**一般至少有10%可用内存,内存使用率可接受上限为85%。当空闲内存变小时,系统开始频繁地调动磁盘页面文件,空闲内存过小可能是内存不足或内存泄漏引起,需要根据系统实际情况监控分析。

**判断磁盘I/O是否是瓶颈的方法:**磁盘I/O对于数据库服务器、文件服务器、流媒体服务器系统来说,更容易成为瓶颈,一般从以下几个方面对磁盘I/O进行分析判断:
① 计算每磁盘I/O数
② 监控磁盘读写,如果磁盘长时间进行大数据量读写操作,且cpu等待超过20%,则说明磁盘I/O存在问题,考虑提高磁盘I/O读写性能。

说说实际情况

针对接触到的实际的业务,大家一般第一要求的都是说相应时间不能超过多少毫秒,其次才是TPS或者说并发数,因为这三者的关系是有计算公式的。
假如我们要求我们的接口相应时间不超过200ms,那么这TPS是多少嘞?1000/200=5/s,在系统可以正常运转的情况下我们假如要求是100个并发下,相应时间不大于200ms,那么此时的TPS是多少?(5/s)*100 = 500/s,如果实际的压力测试情况满足这个条件且其他监控指标正常,那么我们则可以认为这个接口满足条件,如果在测试过程中发现100个并发的时候,相应时间严重超时了 达到了500ms,那么再计算tps (1000/500)再乘100 = 200/s,首先相应时间不符合表均,进而TPS即使计算出来也没有太大的意义。这个时候就需要进行性能分析了,或者逐步减少并发数来获取响应时间开始下降的拐点!
https://blog.csdn.net/qq_29234631/article/details/83620868

你可能感兴趣的:(测试)