1.常见的性能问题
(1)内存泄露
软件运行的时候没有回收内存,导致系统运行越来越慢。
(2)CPU使用率达到100%
(3)线程死锁,阻塞,造成系统运行越来越慢
(4)查询速度越来越慢
(5)受外部系统的影响越来越大
2.为什么要进行性能测试
(1)获取系统性能的指标,作为性能基准指标
(2)验证系统的性能指标是否符合需求
应用系统是否能够满足系统的各项性能指标
应用系统是否可以处理预期的用户数量,并且是否有盈余能力
应用系统是否可以处理预期的事务 数量(原子性、一致性、隔离性、持久性)
在预期和非预期的情况下,系统是否可以稳定运行
在预期和非预期的情况下,用户使用软件时是否可以获得舒适的体验
(3)看系统是否有内存泄露等瓶颈问题
(4)系统在正常工作下可以处理的用户数量
(5)了解系统性能,让运维部分可以更好的规划系统的各种配置
3.确定性能测试的需求(性能指标,量化)
(1)关键性能指标的分析
根据用户要求进行分析
(2)关键业务的分析
系统出问题,一般不是系统所有的功能出问题,而是一些关键的业务或者功能出问题导致的
①在分析性能指标的时候,要选择用户频繁使用的功能。
②计算量比较大的业务
4.不同的维度衡量系统的性能
(1)研发人员
系统的架构是否合理,是否支持多线程并发这类操作
数据库设计是否合理(合理放入索引和合理的关联表关系)
算法:核心算法是否高效
设计和代码:是否存在不合理的线程同步方式和不合理的资源竞争
(2)系统运维人员
系统对资源的利用率,服务器(CPU,内存,磁盘,网络带宽等)的利用率和数据库的使用状况
系统的容量:系统支持的最大用户数
系统的稳定性:是否可以稳定运行,一天24小时
系统的可扩展性,如果要进行扩容操作,系统可以支持
(3)用户
使用是否舒适,响应速度是否快,稳定性好
(4)性能测试人员
以上层面都需要关注
当系统性能无法达标时,关注引起系统性能的瓶颈
5.性能指标
(1)并发用户数
业务层面的并发数:同一时刻向服务器发送请求的用户的数量。
后端服务器的并发数:同一时刻向后台服务器发送请求的数量。
(2)相应时间
指的是用户发送请求,到用户所期待的响应完全展示到前端所需要的时间。
前端响应时间
系统响应时间
服务器之间通信处理请求所需要时间
(3)事务的响应时间
事务:指一系列密切相关的操作的集合
系统中完成一个事务的平均响应时间
(4)每秒事务通过数
TPS 平均每秒处理的事务的数量
(5)点击率
每秒点击数,代表用户每秒向web服务器提交的HTTP请求的个数
点击率越大,服务器的压力越大
(6)吞吐量
指的是单位时间系统处理的信息量
TPS, HPS, bytes/second
(7)思考时间
模拟用户时间操作的停顿时间
(8)资源利用率
系统在运行的时候资源的使用情况,包括CPU,内存,硬盘,网络等
6.性能测试的方法
(1)基准测试(没有性能需求,主要了解系统的性能指标)
系统的新版本,或者新接手的系统,需要进行基准测试,获得系统的性能指标,作为以后改善系统性能,或者保持系统性能的基准。
基准测试不仅可以获取系统的基准性能指标,也可能发现新系统的一些性能问题
(2)并发测试
同一时刻,向后端服务器发送请求,测试系统的表现,看系统是否会因为用户量大而出现资源竞争,死锁等问题
(3)压力测试
压力测试一般指后端压力测试,不断对系统施加压力,看系统在长期处于临界饱和情况下,系统的稳定性以及系统性能指标的变化。
进行压力测试的时候会不断向系统增加负载,使得系统长期处于高负荷情况,看系统在极限的情况下是否稳定,确定系统在极限情况下的CPU利用率,内存使用情况等其他指标。
(4)配置测试
系统配置在不同的配置上进行测试,找出能够使得系统性能发挥最优的配置。
操作系统的配置 Linux, Ubuntu, Redhat
数据服务器的配置 读写,存储容量大
JVM配置
网络环境
服务器 内存,磁盘等
(5)可靠性测试
验证系统长时间运行的稳定性 (24小时,一周或一个月)
系统实际负载的70%左右,长时间运行,看系统是否运行稳定,指标是否稳定