1、什么是性能测试
性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统响应时间、TPS(Transation Per Second)、吞吐量、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。
1)负载测试(Load Testing)
通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。
2)压力测试(Stress Testing)
通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能出于失效状态,并以此来获得系统能够提供的最大服务级别的测试。压力测试,是一种特定类型的负载测试。
3)疲劳强度测试
通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。疲劳强度测试可以反映出系统的性能问题,例如内存泄露等。
2、软件的性能指标有哪些?
1)并发用户数(最佳、最大):应用系统可支持的并发用户数,通常反映系统的容量,即系统的处理能力情况。(最佳:对系统、用户都最佳;最大:系统、用户的最大容忍度)
2)响应时间:从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间。包括网络传输时间、web/app服务器处理时间、DB服务器处理时间,但不包括浏览器上的内容显示时间。
3)吞吐量:单位时间内系统处理的客户请求的数量,直接体现应用系统的性能承载能力。
4)TPS(Transation Per Second):应用系统每秒处理完成的交易数量。
5)HPS(Hit Per second):每秒内用户对WEB页面的链接、提交按钮等点击综合。(HPS一般与TPS成正比关系,是B/S系统中非常重要的性能指标之一)
6)资源利用率:指系统在负载运行期间,数据库服务器、应用服务器、web服务器的CPU、内存、硬盘、外置存储,网络带宽的使用率。(一般,<20%为资源空闲;20%-60%为资源使用稳定,60%-80%为资源使用饱和;>80%则需进行资源调整和优化)
CPU使用率:用户进程与系统进程消耗的CPU时间百分比(一般目标:<80%)
内存利用率:iowait/iostat,内存利用率=(1-空闲内存/总内存大小)*100%(一般目标:10%-85%之间)
磁盘I/O:磁盘主要用于存/取数据。一般使用%Dist Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能
网络带宽:一般使用计数器Bytes Total/sec(标示)来度量,
7)事务成功率:一段时间内成功的交易数在总交易数中所占的比例
3、指标监控及分析(待补充)
1)资源指标
Linux系统,free、vmstat、sar、iostat等命令监控内存、CPU、磁盘IO等的使用情况
CPU:下面两种情况则可判断CPU存在瓶颈,1)CPU空闲持续为0;2)运行队列大于CPU核数3-4倍。(应用程序不合理、硬件资源不足、SQL语句等都可能引起CPU瓶颈)
内存:内存可用率在10%-85%之间即可接口,大于85%则存在瓶颈。(空间内存过小可能是内存不足或内存泄露引起)
性能测试 举例:
性能测试前,明确性能目标:
系统要处理的最大并发用户数
系统运行高峰时期,响应时间小于X秒
TPS不小于多少
服务器资源利用率不超过80%
运行7*24小时,无明显的内存泄露现象
性能测试前,了解环境(测试环境):
硬件环境:了解被测服务器的硬件配置,用于加压客户端的机子配置,CPU、内存等
软件环境:了解被测系统的架构,前端、中间件、服务器(指运行系统软件服务器,如tomcat)、数据库,以及他们的部署位置
网络环境:找出系统性能瓶颈可以在广域网进行,其他的都在局域网进行。