近十年是中国互联网发展最快的10年,互联网用户从4亿增长至10亿+。面对用户量的暴增,用户体验就成为互联网产品最大的考验。而 影响用户体验的最重要因素就是性能。
流量为王的时代,性能测试是所有产品上线前必须通过的重要环节。
企业招聘性能测试,普遍要求有真正的服务端压测经验。
而对于性能测试的学习,一直以来最大的门槛就是硬件,项目集群化部署,分布式压力测试都需要有高配的服务器来搭建环境。然而高配的云服务器,动辄几万/年的费用,让普通人望而却步。
于是很多同学在学习性能测试时,迫于硬件限制,都是在自己本机安装虚拟机来模拟,但是稍微一压测,CPU压爆了、内存不足了,根本没办法进一步深入学习。这样一来,无论测试指标,还是定位瓶颈,都与真正的服务端环境相差甚大。
大家好,今天小濠从5个方面来介绍性能测试
一、什么是性能测试
二、性能测试的目的
三、如何做性能测试
四、性能测试关注的指标
五、性能结果分析
一、什么是性能测试
是不断的通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡。
我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求,发现系统可能存在的性能瓶颈,进而改善优化并系统的性能,提高系统的可扩展性、稳定性。
从上面的描述可以看出,性能测试的主要工作包括:获得预估的性能需求、搭建测试环境、执行测试、分析测试结果。其中,最为重要两个工作是确定测试的目的、方案,并对结果进行分析。
二、性能测试的目的
(1)验证系统是否满足预期需求;
(2)验证系统在高压下的表现;
(3)验证系统是否能持续稳定的运行;
(4)探测系统的瓶颈和产生瓶颈的原因;
(5)探测系统设计与资源之间的最佳平衡,改善并优化系统的性能。
三、如何做性能测试
1. 负载测试: 找到系统稳定时(或满足性能需求下)的最大吞吐量;(要有响应时间、成功率的限制,比如定义:99.9%的响应时间必需在1ms之内,平均响应时间在1ms以内,100%的请求成功)
2. 稳定性(通过浸泡测试soak test): 以系统稳定时的最大吞吐量(或满足性能需求时的最大吞吐量),长时间对系统进行测试,已检查系统是否稳定
3. 压力测试: 找到系统极限值,系统瓶颈(系统崩溃临界值)(要求:响应时间可以变慢,但系统不能崩溃;)(根据测试目的,选择是进行负载、压力、稳定性还是几种测试;)
4. 并发有两个概念:
多个用户同时进行相同操作,访问同一接口——单个业务接口并发;
多个用户同时访问系统,但进行不同的操作,访问不同的接口——系统级并发;(在性能测试过程中,根据 具体场景和业务 选择合适的方案,一般第2种更符合实际场景。以上2种都需要进行测试;)
5. 测试流程: 确定测试目的与需求——根据需求与场景,梳理测试要点——根据测试目的,制定测试方案——准备测试环境与数据——测试执行(脚本或工具)——统计测试结果——分析结果——测试报告
PS:
1 .测试执行时,执行多次,取平均结果更为准确。
2. 单机并发不够时,采用多机分布式并发;
3. 测试过程,一定要尽可能模拟实际应用场景;
为了方便大家自学性能测试,我也准备了一份5g的性能测试视频资源在我的qq群里(技术交流和资源共享)需要的朋友可以点击下方小卡片进群免费获取哦~
广告
【软件测试学习交流群】每天学习一点,今后必成大神
四、性能测试关注的指标
测试人员关注(单次业务相关指标):
并发用户数
响应时间:TP(百分比分布统计)
吞吐量:tps/qps
成功率
失败率
开发人员关注(系统层面指标):
1. Tomcat、数据库等;
2. 容量:系统能承载的最大访问量是多少?系统最大的业务处理量是多少?
3. 稳定性:是否支持7*24小时(一周)的业务访问?
运维人员关注(硬件资源相关指标 ):
硬件资源消耗情况:CPU、内存、I/O读写速度、网络带宽等
五、性能结果分析
以下相关指标分析时需注意:
1.响应时间不要光看平均值,平均值不靠谱。要求最好定成:99.9%请求必须<1s,所有的平均响应时间必须<1s,这两个条件限制;
2.响应时间要和吞吐量TPS/QPS挂钩;
系统的性能如果只看吞吐量,不看响应时间是没有意义的。我的系统可以顶10万请求,但是响应时间已经到了5秒钟,这样的系统已经不可用了,这样的吞吐量也是没有意义的。
我们知道,当并发量(吞吐量)上涨的时候,系统会变得越来越不稳定,响应时间的波动也会越来越大,响应时间也会变得越来越慢,而吞吐率也越来越上不去(如上图所示),包括CPU的使用率情况也会如此。所以,当系统变得不稳定的时候,吞吐量已经没有意义了。吞吐量有意义的时候仅当系统稳定的时候。
所以,吞吐量的值必须有响应时间来卡。比如:TP99小于100ms的时候,系统可以承载的最大并发数是1000qps。这意味着,我们要不断的在不同的并发数上测试,以找到软件的最稳定时的最大吞吐量。
3. 响应时间吞吐量要和成功率挂钩 ;
不难理解,如果请求可以并发10w,但是成功率只有40%,那也没什么用。
性能测试的失败率的容忍应该是非常低的。对于一些关键系统,成功请求数必须在100%,一点都不能含糊。
4. CPU、内存等硬件资源占比持续超过90%,说明性能存在瓶颈;
5. 带宽波动起伏很大,说明带宽受限;
如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......
END配套学习资源分享
最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】
加入我的软件测试交流qq群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
全套资料获取方式: