关于性能测试,首先要考虑
5个W
WHY:为什么要进行性能测试?
WHAT:关注的性能测试内容;
WHO:哪些人员关注性能?
WHERE:性能测试关注的领域;
WHEN:什么时候进行性能测试。
-
为什么要进行性能测试
1、为了看应用程序能否快速响应用户的要求;
2、为了看应用程序能否处理预期的用户负载并且具有盈余能力;
3、为了看应用程序能否处理业务所需要的事务数量;
4、在预期和非预期的用户负载下,应用程序能否稳定;
5、是否能够确保用户在真正使用软件时获得舒服的体验;
注意:不是提高硬件配置就能提高性能,性能不仅需要提高硬件配置,还与软件设置等有关。 -
性能测试关注什么
1、并发用户数,即同一时间用户数,以及吞吐量,即单位时间内处理的信息数,在有些地方又叫吞吐率。
2、平均响应时间,即处理用户需求的响应时间的平均值。
3、服务器资源占用情况,即诸如网络带宽之类的资源占用。
4、可靠性、可扩展性,即系统的可靠性和可扩展性能。
5、发现引起系统问题的原因,关注采用何种技术提高系统性能。
6、软、硬件配置是否合适。 -
谁关注
·1、开发人员,即关注系统架构(架构设计是否合理)、数据库设计(数据库设计是否存在问题)、代码(代码是否存在性能问题,系统中是否存在不合理的内存使用方式)、设计和代码(系统中是否存在不合理的线程同步方式和不合理的资源竞争)。
2、系统管理人员(操作系统、网络、服务器),即关注资源利用率、系统容量(系统最多支持多少用户的访问,系统最大的业务处理量是多少)、系统稳定性、系统可扩展性。
3、用户,即关注响应时间,一般对于web网站来说有一个准则,即3/5/8准则,3秒钟是用户最佳体验,5秒钟用户觉得还行,8秒钟是用户承受的最大极限;关注系统稳定性,若出现HTTP500错误或者数据库崩溃会让用户对系统失去信心。
4、业务人员,即关注参数(如何向用户提供参数,比如支持多少用户使用)。
5、测试人员对以上层面都要关注。 -
关注领域
1、能力验证:主要关心的是“在给定的条件下,系统能否具有预期的表现”。
2、规划能力:主要关心的是“应该如何才能使系统具有我们要求的性能能力”或是“在某种可能发生的条件下,系统具有如何的性能能力”。
3、性能调优:对系统性能进行调优。
4、发现缺陷:通过性能测试的手段来发现系统中存在的缺陷。
注意:性能测试建立在功能测试之上,它包含并发用户测试、容量测试、配置测试等,不仅要在开发环境下测试,也要在测试环境下测试。 -
何时测试
在功能测试中后期,不是在其他测试完成之后才测试。
性能测试相关概念
-
概念
性能测试就是通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。一般地,性能测试是针对系统的性能指标制定性能测试方案,执行测试用例,得出测试结果来验证系统的性能指标是否满足既定值。它主要是用来保证产品上线或者发布后系统的性能满足用户需求。 -
并发数
1、系统用户数:系统的注册用户数;
2、在线用户数:登录系统的用户数,但是不一定每个用户都对服务器产生了压力,因为有的用户登录后什么都不干。
3、并发用户数(并发数):即对服务器产生压力的用户数。
4、严格意义上的并发用户数:同一时间进行同一操作的用户数。
例如:有1000个用户登录系统,其中200个在浏览网页,300个提交信息,100个填写信息,200个查询信息,200个干其他的事情,则:
广义上的并发用户数:也就是对系统产生压力的用户数,即300个提交信息+200个查询信息=500个;
狭义上的并发用户数:也就是对系统产生压力的最大用户数,300>200,因此为300个。
在线用户数:1000个 -
响应时间
也就是系统对用户请求做出响应所需要的时间 -
事务响应时间
事务指的是一组密切相关的操作组合,比如登录一次系统包含多次HTTP请求。 -
每秒事务通过数
TPS指的是每秒系统能够处理的事务数,衡量系统处理能力。
压力加大时,TPS曲线如果变化缓慢或者有平坦的趋势,可能是服务器出现瓶颈,如果环境没有发生大的变化,对于同一系统会存在一个最大处理事务能力,并不随着并发用户的增减而改变。
例如:地铁检票机只有10台进站检票的机器,一台机器一秒进一个人,当并发用户数为5时,则TPS为5;并发用户数为10时,则TPS为10,并发用户数为100时,TPS仍然是10. -
点击率
每秒点击数表示用户每秒向web服务器提交的HTTP请求数,点击率越大,服务器压力越大,当然这个点击不是指鼠标一次点击,一次点击可能有多个HTTP请求。 -
吞吐量
即单位时间内系统处理的用户请求的数量,体现系统性能承载能力 -
思考时间
思考时间就是用户操作时,每个请求或者操作之间的间隔时间,为了真实模拟用户的操作场景。 -
资源利用率
即不同系统资源的使用情况,CPU,磁盘,网络等。
性能测试模型
-
曲线拐点模型
如图:
其中x轴代表并发用户数,y轴代表资源利用率、吞吐量、响应时间,从左到右是轻压力区,重压力区和拐点区。
我们逐个分析,首先是响应时间,随着并发用户数的增加,在轻压力区响应时间变化不大,进入重压力区后逐渐上升,到达拐点后大幅度增大,响应时间急剧增加;
然后是吞吐量,随着并发用户数的增加,在轻压力区吞吐量增加,进入重压力区后逐步平稳,到达拐点区急剧下降,说明系统到达处理极限,有点扛不住了;
然后是资源利用率,随着并发用户数增加,在轻压力区资源利用率逐步增加,到达一个拐点进入重压力区后趋于平稳,说明达到饱和状态。
最后总体分析:随着并发用户数的增加,资源利用率和吞吐量增加,说明系统在积极处理,所以响应时间增加得不明显,此时处于比较好的状态,但是随着并发用户数的不断增加,压力逐渐加大,资源利用率与吞吐量达到饱和,吞吐量急剧下降,导致响应时间急剧增长,其中轻压力区和重压力区交汇点是最佳用户并发数,此时资源利用充分,吞吐量比较好,响应很快,重压力区与拐点区的交汇点是最大并发用户数,超过这个点,系统性能急剧下降甚至崩溃。
例如经典的理发师模型,理发馆有3个理发师,每个理发师水平相当,每给一位顾客理发需要10分钟,顾客可以忍受等待的时间最多为30分钟,则可得:
当并发用户数为1时,总响应时间为101=10分钟,平均响应时间为10/1=10分钟,实际并发数为1;
当并发用户数为2时,总响应时间为102=20分钟,平均响应时间为20/2=10分钟,实际并发数为2;
当并发用户数为3时,总响应时间为103=30分钟,平均响应时间为30/3=10分钟,实际并发数为3;
当并发用户数为4时,总响应时间为103+201=50分钟,平均响应时间为50/4=12.5分钟,实际并发数为3;
当并发用户数为5时,总响应时间为103+202=70分钟 ,平均响应时间为70/5=14分钟,实际并发数为3;
当并发用户数为6时,总响应时间为103+20*3=90分钟,平均响应时间为90/6=15分钟,实际并发数为3;
以此类推,我们可以得到,每10分钟3个顾客是最佳并发用户数,而每10分钟9个顾客是它的最大并发用户数,每10分钟都有3个顾客到来时,理发馆的整体工作效率最高,而当每10分钟有9个顾客到来时,随着等待的顾客越来越多,等待时间越来越长,最终就会有顾客无法忍受离开,当然,如果一开始有10个顾客到来,则会有一个顾客剪不了头发了。 -
地铁模型
例如:某个地铁站有3个刷卡机,进站需要1s,乘客耐心有限,等待时间超过30min,就会唠叨甚至放弃,则可有:
只有1名乘客进站,可以在1s时间进站,只用了一台刷卡机,剩余两台等待;
只有2名乘客进站,可以在1s时间进站,用了2台刷卡机,剩余一台等待;
只有3名乘客进站,可以在1s时间进站,用了3台刷卡机,资源充分利用;
A、B、C三名乘客要进站,同时D、E·、F三名乘客也要进站,由于A、B、C先到达,D、E、F需要排队,则A、B、C的进站时间为1s,而D、E、F由于要等1s,因此进站时间为2s;
一次来了9名乘客,前3名的进站时间(响应时间)为1s,中间3名进站时间(响应时间)为2s,后3名进站时间(响应时间)为3s;
若地铁正好在火车站,每名乘客拿着不同大小的包,包太大导致卡在刷卡机阻塞,每名乘客的进站时间则不一样,刷卡机有加宽和正常宽度两种类型,那么拿大包的乘客可以通过加宽的刷卡机进站(增加网络带宽);
进站的乘客越来越多,3台刷卡机无法满足需求,为了减少人流堵塞,要多开几个刷卡机(提升TPS、增大连接数);
在上班高峰期,乘客数量急剧增加,采用普通进站措施已经无法满足,乘客开始抱怨,此时就不能只增加刷卡机,增加发车频率(加快服务器、数据库的处理速度)、增加车厢数量(增加内存和吞吐量)、增加线路(增加服务线程)、限流和分流等。
性能测试分类
-
基准测试
有基础的标准,通过对比发现系统的不同点和变化; -
狭义性能测试
通过模拟生产运行的业务压力量和使用场景相结合,测试系统的性能要求是否满足生产系统要求。 -
负载测试
在被测系统上不断增加压力,直到各项指标达到饱和。 -
并发测试
指在数据库容量、硬件、软件环境和网络配置指标一定的情况下,确定用户并发数。
例如:有一系统,进行模糊查询功能,数据库的数据量为10000条,用户并发数为4000,每次增加500,查看系统的性能,直到:
当响应时间为3s时(用户最佳体验),用户并发数为9500;
当响应时间为5s时,用户并发数为12000;
当响应时间为8s时,用户并发数为20000,即其他指标不变,只有用户并发数变;
这里有错误率的概念,它等于(错误用户数+结果失败数)/总用户并发数 ,当它=5%时,达到了最佳用户并发数。 -
容量测试
指在用户并发数、硬件、软件环境和网络配置指标一定时,确定数据库容量。
还是上面的系统进行模糊查询功能,用户并发数为4000条,数据量开始为10000条,每次增加100条,查看系统性能,当响应时间为3s时,数据量为31000;当响应时间为5s时,数据量为40000;响应时间为8s时,数据量为60000. -
压力测试
测试系统在一定的饱和状态下,系统能够处理的会话能力,以及系统是否会出现错误,它和负载测试有点类似,它的主要目的是为了揭露高负载下的问题。 -
配置测试
通过被测系统的软/硬件环境的调整,了解不同环境对系统性能影响的程度,从而找到各项资源的最优分配原则。 -
可靠性测试
又叫疲劳测试,通过给系统加载一定的业务压力的情况下,让应用系统持续运行一段时间,测试系统在这种条件下是否能够稳定运行。
例如在负载为70%到80%,用户数为950070%,运行36小时;或者用户量为310075%,运行48小时;或者用户数为950070%+数据量为310075%进行测试。查看在这些情况下,系统是否稳定。 -
大数据量测试
1、独立的数据量测试:针对某些系统存储、传输、统计、查询等业务进行大数据量测试。
2、综合数据量测试:和压力测试、负载测试、并发测试、可靠性测试相结合的综合测试方案。