作者:手机用户2502941585_336 | 来源:互联网 | 2023-09-25 19:35
篇首语:本文由编程笔记#小编为大家整理,主要介绍了聊一聊性能测试指标相关的知识,希望对你有一定的参考价值。
上文说到了性能测试就是在功能测试通过的前提下,通过合理的加压方式及策略对系统进行性能测试,在这过程中监控并收集服务端应用程序的各项性能指标以及硬件资源使用情况(硬件资源包含了服务端及测试端)来评估系统是否存在性能问题。
本章作为性能测试系列更新的第二章,主要介绍下在服务端性能测试中常见的性能指标。
在说之前,先推一篇在刚接触性能测试时觉得不错的性能测试基础随笔:https://www.cnblogs.com/puresoul/p/5456855.html。testing写的第二系列也相当于是借鉴了这篇文章吧!
不同的群体由于视角的不同,关注的侧重点也不同。比如系统的用户只关心系统的一个响应速度及稳定性;而系统的开发者可能会更注重系统的架构、数据库的设计、代码是否存在性能问题、代码是否可以进一步的优化、代码的扩展性等问题;运维可能更关心服务器的一个资源情况、系统的上限(最大处理量)、系统存在那些瓶颈、怎么可以提升系统性能等。说到这里,可以看出,因为身处位置的不同,所以看待问题的方式也不一样,不同的群体关心的性能指标也不一样。
测试人员通常是作为软件质量控制的一个角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面。
1、测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。
2、测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等言方方面面。
说到这里,后面可能会更新一篇针对软件测试工程师的职责的文章。下面来看看软件测试工程师常关注的性能测试指标!
从性能测试分析度量的度角来看,可以分几个维度来收集考察各项性能指标。
下面分别介绍这几个维度的常见指标、指标含义及参考标准等方面,下述部分介绍及业内参考标准取自于百度百科。
一般常见的资源性能指标有:CPU、内存、磁盘吞吐量、网络吞吐量。
介绍:CPU也叫中央处理器,作为计算机系统的运算核心和控制核心,是信息处理、程序运行的最终执行单元。cpu是计算机内的电子电路,通过执行由指令指定的基本算术、逻辑、控制和输入/输出操作来执行计算机程序的指令。
参考标准:CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。
1.CPU利用率要低于业界警戒值范围之内,即小于或者等于75%
介绍:内存是计算机中重要的部件之一,它是外存与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
参考标准:现在的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内存是否有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。
介绍:磁盘吞吐量简称为Disk Throughput,是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。
参考标准:磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%。
介绍:网络吞吐量简称为Network Throughput,是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。
参考标准:网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。
一般常见的系统性能指标有:响应时间、系统处理能力、吞吐量、并发用户数、错误率。下面部分介绍及业内参考标准取自于百度百科。
介绍:响应时间,简称RT。是指系统对请求作出响应的时间,可以理解为是指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。
在性能检测中一般以压力发起端至被压测服务器返回处理结果的时间为计量,单位一般为秒或毫秒,由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。
参考标准:不同行业不同业务可接受的响应时间是不同的,一般情况,对于在线实时交易的系统:
这里需要注意的是,响应时间的绝对值并不能直接反映软件性能的高低,它取决于用户对该响应时间的接受程度。
介绍:系统处理能力是指系统在利用系统硬件平台和软件平台进行信息处理的能力。系统处理能力通过系统每秒钟能够处理的交易数量来评价,交易有两种理解:一是业务人员角度的一笔业务过程;二是系统角度的一次交易申请和响应过程。前者称为业务交易过程,后者称为事务。两种交易指标都可以评价应用系统的处理能力。
HPS(Hits Per Second):每秒点击次数,单位是次/秒。
TPS(Transaction per Second):系统每秒处理交易数,单位是笔/秒。
QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。
在互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器点击请求。
参考标准:无论TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好一般情况下:
-
金融行业:1000TPS~50000TPS,不包括互联网化的活动
-
保险行业:100TPS~100000TPS,不包括互联网化的活动
-
-
互联网电子商务:10000TPS~1000000TPS
-
-
对于单用户的系统,响应时间可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。
对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是t,当有你n个用户使用时,每个用户看到的响应时间通常并不是n×t,而往往比n×t小很多(当然,在某些特殊情况下也可能比n×t大,甚至大很多)。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。
介绍:并发用户数指在同一时刻内,登录系统并进行业务操作的用户数量。
并发用户数对于长连接系统来说最大并发用户数即是系统的并发接入能力。对于短连接系统而言最大并发用户数并不等于系统的并发接入能力,而是与系统架构、系统处理能力等各种情况相关。
与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。
除了用户并发数还有在线用户数和系统用户数,一般三者的关系是:系统用户数 >= 在线用户数 >= 并发用户数
介绍:错误率简称FR,指系统在负载情况下,失败交易的概率。错误率=(失败交易数/交易总数)*100%。
参考标准:不同系统对错误率的要求不同,但一般不超出千分之六,即成功率不低于99.4%
常用的中间件例如Tomcat、Weblogic等,指标主要包括JVM、ThreadPool、JDBC。这个有兴趣的可以百度下。testing百度了一张图片,具体的如下:
参考标准:
当前正在运行的线程数不能超过设定的最大值。一般情况下系统性能较好的情况下,线程数最小值设置50和最大值设置200比较合适。
当前运行的JDBC连接数不能超过设定的最大值。一般情况下系统性能较好的情况下,JDBC最小值设置50和最大值设置200比较合适。
GC频率不能频繁,特别是FULL GC更不能频繁,一般情况下系统性能较好的情况下,JVM最小堆大小和最大堆大小分别设置1024M比较合适。
常用的数据库例如MySQL指标主要包括SQL、吞吐量、缓存命中率、连接数等,这个有兴趣的也可以百度下。testing百度了一张图片,具体如下:
参考标准:
SQL耗时越小越好,一般情况下毫米、微秒级别。
命中率越高越好,一般情况下不能低于95%。
锁等待次数越低越好,等待时间越短越好。
对于服务端性能测试,从系统可靠性指标度量分析时,常见从三类来入手:
对于将双机热备作为可靠性保障手段的系统,可衡量的指标如下:
对于使用集群方式的系统,主要通过以下方式考量其集群可靠性:
集群中某个节点出现故障时,系统是否有业务中断情况出现
在集群中新增一个节点时,是否需要重启系统
当故障节点恢复后,加入集群,是否需要重启系统
当故障节点恢复后,加入集群,系统是否有业务中断情况出现
节点切换需要多长时间在验证集群可靠性的同时,需根据具体情况使用压力工具模拟实际业务发生相关情况,对应用保持一定的性能压力,确保测试结果符合生产实际情况。
本指标为了验证系统的备份/恢复机制是否有效可靠,包括系统的备份和恢复、数据库的备份和恢复、应用的备份和恢复,包括以下测试内容:
备份是否成功及其消耗时间。
备份是否使用脚本自动化完成。
恢复是否成功及其消耗时间。
恢复是否使用脚本自动化完成指标体系的运用原则。
指标项的采用和考察取决于对相应系统的测试目的和测试需求。被测系统不一样,测试目的不一样,测试需求也不一样,考察的指标项也有很大差别。
部分系统涉及额外的前端用户接入能力的,需要考察用户接入并发能力指标。
对于批量处理过程的性能验证,主要考虑批量处理效率并估算批量处理时间窗口。
如测试目标涉及到系统性能容量,测试需求中应根据相关指标项的定义,明确描述性能指标需求。
测试指标获取后,需说明相关的前提条件(如多少的业务量、系统资源情况等)。
好了,第二篇文章到此结束,这篇文章写的稍微费力点。为了尽可能的写详细点,上述文章有些东西testing也是临时百度copy的,testing也顺便涨了一波见识。上面提到的后三个指标testing也没有具体了解过,大多数公司在开展性能测试的时候应该会很少涉及到这几个点,但这几个点从产品整体性能和质量来讲,又是不得不关注的点,这里算是给大家提供一些测试思路吧,有兴趣的可以百度了解了解。
朋友们看完后也可以看看前言testing说的那个随手博客。如果有问题可以联系testing或者评论区留言哦~