一、性能测试的概念
说到性能测试,不得不说一下软件的性能,什么是软件性能呢?
软件性能:对一个完整的系统而言,它包括了执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。
性能测试:通过对软件的测试、分析、调优等过程,评估软件性能能力或者说帮助改进软件性能能力的一种专业测试
从不同的角度看性能,如下图:
站在性能测试的角度:
网络传输时间:N1+N2+N3+N4
应用服务器处理时间:A1+A3
数据库服务器处理时间:A2
事务响应时间:N1+A1+N2+A2+N3+A3+N4
对于用户来说,软件性能就是:N1+A1+N2+A2+N3+A3+N4
二、性能测试的目的
验证软件系统是否能达到用户提出的性能要求,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。
三、性能测试基本术语以及需要关注的指标:
TPS(每秒事务数)、ART(平均响应时间)、并发用户数、资源利用率、网络吞吐量(一段时间内通过某个信道/端口的数据量)、网络吞吐率(单位时间内通过某个信道/端口的数据量)
指标:CPU利用率、磁盘(DISK BUSY)利用率、内存(MEM)利用率
一些术语的解释:
事务:事务可以理解为用户一步或者多步操作的集合。但是我们要求事务要有一个完整的意义,比如用户的一次登录、用户一次完整的支付等
TPS:每秒钟系统能够处理的事务的数量
请求响应时间:从客户端发起一个请求开始,到客户端接收到从服务器返回的响应结束这个过程所耗费的时间,单位一般用秒或者毫秒
90%响应时间:事务响应时间从小到大排序,取90%分位处的数据
99%响应时间:事务响应时间从小到大排序,取99%分位处的数据
并发用户数:与服务器交互的在线用户数量,需要注意的是需要对服务器产生压力才可以算入并发数,平均并发用户数=平均每天访问用户数*用户从登陆到退出的平均时间/考察时间长度(一天内多长时间有用户使用系统)
通常我们需要获取分析的服务器指标包括:CPU占用(CPU utillzation)、内存占用(MEM-memfree+)、网络带宽(Total Ethernet Read and Write)、磁盘(Total Disk Read and Write),并且大多数以百分比形式描述
Web应用服务器指标:最大连接数、最大等待连接数、连接超时、内存溢出
四、性能测试的分类
声明:非行业标准的分类
1)负载测试:为系统施加特定的压力,观察此时的系统性能指标
特定的压力:这个可以理解为设计的并发数,并发数按照预期最大响应时间乘以tps设计,比如最大响应时间为2秒,tps要求为10个/秒,那么这个并发数就可以设计为2x10=20个
2)容量测试:持续为系统增加压力,直至出现性能拐点,寻找系统瓶颈及在特定系统资源情况下系统的最大处理量。
拐点分为业务拐点和资源拐点。
业务拐点:TPS不再增长/ART超越阈值/标准差拐点/业务处理大量报错
资源拐点:CPU>75%/MEM>75%/DiskBusy>75%
注意记录出现拐点时的并发数。
3)疲劳测试:为系统施加特定的压力,并持续较长时间(12H),观察系统各指标在长时间负载情况下的变化情况
注意:实际测试过程中执行疲劳测试,施加的压力一般为接近生产或者测试需求中的预期压力
4)配置测试:更改系统的配置,比如数据库连接数、服务数或比例、内存大小等,观察系统在不同配置下的性能指标变化
以上是我对性能测试学习的基础知识总结