热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

性能测试_聊一聊性能测试指标

篇首语:本文由编程笔记#小编为大家整理,主要介绍了聊一聊性能测试指标相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了聊一聊性能测试指标相关的知识,希望对你有一定的参考价值。




















聊一聊性能测试指标














聊一聊性能测试指标






















前言






























上文说到了性能测试就是在功能测试通过的前提下,通过合理的加压方式及策略对系统进行性能测试,在这过程中监控并收集服务端应用程序的各项性能指标以及硬件资源使用情况(硬件资源包含了服务端及测试端)来评估系统是否存在性能问题。




本章作为性能测试系列更新的第二章,主要介绍下在服务端性能测试中常见的性能指标。




在说之前,先推一篇在刚接触性能测试时觉得不错的性能测试基础随笔:https://www.cnblogs.com/puresoul/p/5456855.html。testing写的第二系列也相当于是借鉴了这篇文章吧!




聊一聊性能测试指标






















性能测试指标






















不同群体性能










不同的群体由于视角的不同,关注的侧重点也不同。比如系统的用户只关心系统的一个响应速度及稳定性;而系统的开发者可能会更注重系统的架构、数据库的设计、代码是否存在性能问题、代码是否可以进一步的优化、代码的扩展性等问题;运维可能更关心服务器的一个资源情况、系统的上限(最大处理量)、系统存在那些瓶颈、怎么可以提升系统性能等。说到这里,可以看出,因为身处位置的不同,所以看待问题的方式也不一样,不同的群体关心的性能指标也不一样。






那么,在性能指标这方面,测试又该关心那些指标呢?






测试人员通常是作为软件质量控制的一个角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面。


1、测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。


2、测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等言方方面面。






说到这里,后面可能会更新一篇针对软件测试工程师的职责的文章。下面来看看软件测试工程师常关注的性能测试指标!




聊一聊性能测试指标
















性能测试分类











从性能测试分析度量的度角来看,可以分几个维度来收集考察各项性能指标。


1.系统性能指标


2.资源性能指标



3.中间件指标


4.数据库指标


5.稳定性指标


6.可扩展性指标



7.可靠性指标






下面分别介绍这几个维度的常见指标、指标含义及参考标准等方面,下述部分介绍及业内参考标准取自于百度百科。



聊一聊性能测试指标
















资源性能指标










聊一聊性能测试指标


资源性能指标




聊一聊性能测试指标











一般常见的资源性能指标有:CPU、内存、磁盘吞吐量、网络吞吐量。



聊一聊性能测试指标












聊一聊性能测试指标


CPU




聊一聊性能测试指标











介绍:CPU也叫中央处理器,作为计算机系统的运算核心和控制核心,是信息处理、程序运行的最终执行单元。cpu是计算机内的电子电路,通过执行由指令指定的基本算术、逻辑、控制和输入/输出操作来执行计算机程序的指令。






参考标准:CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。



1.CPU利用率要低于业界警戒值范围之内,即小于或者等于75%



2.CPU sys%小于或者等于30%



3.CPU wait%小于或者等于5%




聊一聊性能测试指标












聊一聊性能测试指标


内存




聊一聊性能测试指标











介绍:内存是计算机中重要的部件之一,它是外存与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器和主存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。






参考标准:现在的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内存是否有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。



聊一聊性能测试指标












聊一聊性能测试指标


磁盘吞吐量




聊一聊性能测试指标











介绍:磁盘吞吐量简称为Disk Throughput,是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。






参考标准:磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%。



聊一聊性能测试指标














聊一聊性能测试指标


网络吞吐量




聊一聊性能测试指标













介绍:网络吞吐量简称为Network Throughput,是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。






参考标准:网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。



聊一聊性能测试指标
















系统性能指标











一般常见的系统性能指标有:响应时间、系统处理能力、吞吐量、并发用户数、错误率。下面部分介绍及业内参考标准取自于百度百科。



聊一聊性能测试指标














聊一聊性能测试指标 


响应时间




聊一聊性能测试指标 















介绍:响应时间,简称RT。是指系统对请求作出响应的时间,可以理解为是指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。






在性能检测中一般以压力发起端至被压测服务器返回处理结果的时间为计量,单位一般为秒或毫秒,由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。




参考标准:不同行业不同业务可接受的响应时间是不同的,一般情况,对于在线实时交易的系统:


  • 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。


  • 金融企业:1秒以下为佳,部分复杂业务3秒以下。


  • 保险企业:3秒以下为佳。


  • 制造业:5秒以下为佳。


  • 时间窗口:不同数据量结果是不一样的,大数据量的情况下,2小时内完成。





聊一聊性能测试指标








这里需要注意的是,响应时间的绝对值并不能直接反映软件性能的高低,它取决于用户对该响应时间的接受程度。








聊一聊性能测试指标 


系统处理能力




聊一聊性能测试指标 











介绍:系统处理能力是指系统在利用系统硬件平台和软件平台进行信息处理的能力。系统处理能力通过系统每秒钟能够处理的交易数量来评价,交易有两种理解:一是业务人员角度的一笔业务过程;二是系统角度的一次交易申请和响应过程。前者称为业务交易过程,后者称为事务。两种交易指标都可以评价应用系统的处理能力。




一般情况下,系统处理能力又用以下几个指标来度量:


  • 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,不包括互联网化的活动



  • 制造行业:10TPS~5000TPS



  • 互联网电子商务:10000TPS~1000000TPS



  • 互联网中型网站:1000TPS~50000TPS



  • 互联网小型网站: 500TPS~10000TPS









聊一聊性能测试指标












聊一聊性能测试指标 


吞吐量




聊一聊性能测试指标 











介绍:吞吐量是指系统在单位时间内处理请求的数量。






对于单用户的系统,响应时间可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。






对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是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或者评论区留言哦~















推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 模块化区块链生态系统的优势概述及其应用案例
    本文介绍了相较于单体区块链,模块化区块链生态系统的优势,并以Celestia、Dymension和Fuel等模块化区块链项目为例,探讨了它们解决可扩展性和部署问题的方案。模块化区块链架构提高了区块链的可扩展性和吞吐量,并提供了跨链互操作性和主权可扩展性。开发人员可以根据需要选择执行环境,并获得奖学金支持。该文对模块化区块链的应用案例进行了介绍,展示了其在区块链领域的潜力和前景。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
author-avatar
手机用户2502941585_336
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有