1. 引子

  性能测试在软件的质量保证中起着重要的作用。性能测试从软件系统的响应速度、效率、资源使用等方面对软件系统的质量进行度量。随着社会对互联网应用系统的不断深入,对性能测试的需求也越来越迫切。作为软件测试工程师,掌握必要的性能测试基础知识和测试工具的使用,不仅能够提升自我技术能力的竞争力,也能够在日常工作中,灵活运用各种工具来提升工作效率。


2. 常见的性能瓶颈

  常见的性能瓶颈,可以分别从硬件、软件上进行划分。硬件上的性能瓶颈包括:CPU、内存、磁盘I/O、网络等;软件上的性能瓶颈则包括:支持软件如中间件配置、容器配置、数据库I/O等,项目软件如响应时间、吞吐量、异常处理等。

2.1. CPU

  程序的运行离不开CPU的计算和指令,它们会长时间、不间断地占用CPU资源,当所运行的计算数量超过了CPU的容量时,就会导致性能问题。一般地,如果在程序运行时,CPU利用率持续并达到了90%及以上,那么就可以认为,CPU出现了性能瓶颈。

2.2. 内存

  Java程序一般通过JVM对内存进行分配管理,但可能由于系统设计或功能实现上的缺陷,导致程序占用内存资源一直居高不下,甚至出现内存溢出/内存泄露等问题,从而出现性能瓶颈。

2.3. 磁盘

  磁盘的空间一般比内存要大很多,但相应地,其I/O读写能力却比内存慢。因此,在程序对磁盘内的文件(特别是大型文件)进行读取或者写入的时候,就可能会引发磁盘IO读写性能瓶颈。

2.4. 网络

  网络对于系统的性能来说,也是至关重要的一环。重要的一个指标就是网络带宽,它由网卡性能、网卡接口、网线类型等因素所影响。对于数据传输比较大、并发量比较大的系统,就比较容易出现网络上的性能瓶颈。

2.5. 中间件

  例如中间件的超时设置、线程池设置、缓存策略、最大连接数、负载均衡策略等。

2.6. 数据库IO

  系统软件的运行离不开数据库,而数据库的操作一般都是涉及到磁盘I/O读写,大量的读写操作,可能会导致磁盘I/O的性能瓶颈,进而产生数据读写延迟等问题。除此之外,还有数据库连接池配置等因素,也可能引发性能瓶颈问题。


3. 名词解释

序号 名词 英文名称 解释
1 响应时间 Response Time 响应时间是指系统对请求作出响应所需要的时间。典型的响应时间是指从客户端发出请求数据包到服务器处理,并接收到返回数据包所经过的时间,中间可能包含各种中间组件的处理时间,例如网络、服务器、数据库等。
2 事务响应时间 Transaction Response Time 事务是指一组==密切相关的操作==的组合,例如一个登录的过程,可能包含N次http请求和响应,那么就可以将这些请求封装在一个事务中,以此来分析登录的性能瓶颈。而事务响应时间,就是服务器针对这一个事务进行处理并完全返回数据包后所经过的时间。
(有业界默认的2-5-8原则)。
3 并发用户 Concurrent Users 是指==同一时间==内使用==相同资源==的人或组件。资源可以是计算机系统资源、文件、数据库等。
4 吞吐量 Throughput 是指单位时间内系统处理的客户请求的数量,度量单位可以是:字节/天、请求数/秒、访问量/天、处理业务数/小时等。
5 每秒事务量 Transaction Per Second(TPS) TPS是指每秒钟系统能够处理的交易或事务的数量,是衡量系统处理能力的重要指标。
6 点击率 Hit Per Second(HPS) 也称命中率,是指每秒钟用户向服务器提交的HTTP请求数。用户每点击一次,服务器就要处理一次,不难看出,点击率越大,对服务器的压力也越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。
7 资源利用率 Resource Utilization 资源利用率指的是对不同系统资源的使用程度,如服务器的CPU占用率、磁盘利用率、内存占用率等,是性能指标分析和改善的重要依据。

性能测试工具JMeter合集
【Performance】01. 性能测试技术初探篇之性能测试介绍
【Performance】02. 性能测试技术初探篇之常用性能测试工具
【Performance】03. 性能测试技术初探篇之 JMeter 工具使用
【Performance】04. 性能测试技术磨合篇之性能测试场景设计
【Performance】05. 性能测试技术磨合篇之脚本录制和调试
【Performance】06. 性能测试技术磨合篇之脚本执行和结果分析
【Performance】07. 性能测试技术历练篇之性能监控工具
【Performance】08. 性能测试技术历练篇之性能分析神器 JProfile
【Performance】09. 性能测试技术历练篇之 Java 诊断工具 Arthas