一、什么是性能测试?
通过自动化的测试工具模拟出多种正常场景、异常场景以及峰值负载场景条件下,对软件系统的各项性能指标进行的测试!
举例:12306抢票、秒杀活动、双十一全天等。
二、性能测试主要分哪几类?
性能测试包括:性能测试、负载测试、压力测试、容量测试、配置测试、并发测试、可靠性测试。
三、性能测试
性能测试,简而言之就是模仿用户对一个系统进行大批量的操作,得出系统各项性能指标和性能瓶颈,并从中发现存在的问题,通过多方协助调优的过程。而web端的性能测试应该注意的指标有:用户操作的响应时间、系统的吞吐量(TPS)、系统的硬件资源情况(CPU、硬盘、磁盘)、网络资源占用情况等。
2、web性能测试之HTTP请求
关于性能测试中,HTTP请求类的性能指标都需要我们去关注些什么?
响应时间,这里的响应时间一定得是前端+后端的响应时间,我们惯性的思维都是只关注后端服务的响应时间,其实前端的响应时间也是须考虑在内的。
并发测试的相应数据,这部分也得考虑前端数据,这只是一个大概的补充,因为具体的系统需要的数据不一样,其中也不乏包括响应时间。
其中,前端的响应时间都涉及到哪些环节呢?
DNS解析
各种请求的连接
TLS的建立
字节流的发送
另外,后端响应时间涉及的环节:
等待(前端请求)
接收信息流
返回响应数据
这其实就是一个比较完整的web端请求所需要的环节,而响应时间就是指的这个请求的过程所花费的时间。这部分时间就是一个用户在操作的时候所等待的时间,所以用户所能接受的时间范围恰好是性能测试所关注的时间范围。通常用户所能接受的系统响应时间是3-5s,若大于这个时间节点,将会使用户失去耐心,取消对系统的操作。
四、压力测试
压力测试可以确定应用程序在繁重工作负载下的稳健性和错误处理能力。压力测试是通过考虑更多的数据和许多用户来进行的,旨在确定系统在压力下的行为。
压力测试是为了确定系统的瓶颈或者最大使用极限的。为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户数,方法是分别模拟一定数量的用户并发访问系统,记录并分析系统响应时间;
1、压力测试的目的:
1.通过不断加压,得到服务器峰值,找出系统瓶颈。
2.验证系统的稳定性。
3.确定系统各项指标是否满足上线预估目标。
4.为后期性能优化提供参考依据。
2、压力测试时,要隔离线上环境,以免影响线上其他业务,主要关注以下三点:
1.如果有测试环境,首选测试环境。
2.如果只有线上环境,要确保线上环境没有其他业务。
3.要压测的环境所接入的第三方接口也要确定做到隔离线上环境。?
3、压测环境要求
1.稳定性。由于压测时会持续打压并保持一段时间,所以测试环境的稳定性尤为重要。测试环境的稳定性决定了测试结果的准确性。
2.独立性。在搭建环境时,要尽量保证测试环境的独立性,最好是测试环境不与其他系统共用,减少不确定的因素可能对测试过程的影响,导致测试结果不准确,以及避免压测对其他服务的影响。
3.可控性。在进行压测时,测试环境中的所有设备和资源应该是可以监测和控制的。以免出现异常而未察觉,造成不可挽回的失误。
4、确定预期目标,压力测试前,要与产品、运营、开发一起预估各项预期数据目标。预估之前,需要先考虑如下情况:
1.产品所依附的平台的用户数,访问量是多少?
2.产品是否会大力宣传推广?
3.产品是否会先灰度上线进行观察和监控?
4.该产品的目标用户数、访问量是多少?
5.用户对该产品的关注度怎么样?
6.会不会有其他产品影响到该产品的QPS?
7.产品是否存在使用高峰期?
8.产品上线的准备数据是否充足,操作方便,满足需求,能够吸引大量用户上线后瞬间频繁使用该产品或持续增加用户使用量(预估产品峰值是发生在刚上线的时候,还是通过用户的逐渐增加而产生)?
五、负载测试
这里的“负载”是指使用该网站的用户数量。进行负载测试(可伸缩性测试),以检查开发的网站是否具有足够的能力来处理较大的负载。
1、负载测试的目的:
1.在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况;
2.预见系统负载压力承受力,在应用实际部署之前,评估系统性能;
3.分析系统瓶颈、优化系统。
通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
负载测试(可伸缩性测试)的另一个最重要的用途是,如果负载增加,则检查服务器是否崩溃。另外,此测试不仅确定网站的性能,而且还有助于发现数据库中您需要存储新客户的所有数据的问题。
负载测试是为了测试软件系统当负载逐渐增加时,系统各项性能指标的变化情况。站在用户的角度去观察在一定条件下系统的性能表现。这些考察指标一般为响应时间、交易容量、并发容量、资源使用率等。
六、压力测试与负载测试两者区别
相同点:都是性能测试
负载测试强调系统正常工作情况下的性能指标
压力测试的目的是发现在什么条件下系统的性能变得不可接受,发现应用程序性能下降的拐点。
举例:工人建桥,桥身上表明,该桥的最大负重量为60吨。—负载测试
该桥的内部建筑资料中,表明该桥的最大载重量为70吨。这个数据是给内部建桥工程师掌握的。—压力测试
打个比喻:一位服务员,就相当于咱们的应用系统;
负载测试就是在单位时间内逐步加大这位服务器的工作量,看看此服务员在不同的工作量下完成工作的速度和质量,从而了解该服务员的工作能力;
压力测试就是给这位服务员外部压力,比如长时间不让他休息,不给开工资等,看看服务员会不会好好工作(能否及时响应请求),或者罢工之类的;
性能测试是动力,负载测试载重,压力测试强度
七、性能测试的指标
1.响应时间(Response Time):t1+t2+t3+t4
time1:客户端——服务器(发送请求)
time2:服务器处理时间
time3:数据库处理时间
time4:服务器——客户端(返回数据)
2.并发\并发数\并发用户数( Concurrent users):一定时间内向服务器发送的请求用户数
a.同一时间在做相同事情的并发(单接口性能测试)
b.同一时间在做不同事情的并发(混合业务场景测试)
所以说,一般先做 单接口的性能测试,然后再做 单业务性能测试,最后做 混合业务场景的性能测试。
3.TPS(Transaction per Second):系统每秒处理的事务数
TPS越高,表示服务器处理能力越好。
QPS:每秒查询数
这也是在做性能测试时,最重要的一个指标值。
4.吞吐量:事务/s,kb/s
在不受网络延迟影响的情况下,吞吐量是和TPS值相等的。
5.资源利用率:主要包括CPU、内存、磁盘、I/O(换入/换出)
一般都要求不会超过80%,占用率越低,表现越好。