1. 性能测试概述
1.1 软/硬件
软件:程序是人类逻辑思维的物化,表现形式为一系列指令代码
硬件:主要指运行该软件的硬件平台,有CPU、内存和存储系统等,如果软件是基于网络架构的,那么硬件还有网络硬件,如交换机、路由器等。
软件资源包括操作系统、开发平台、中间件和数据库等,它们以库文件和API的方式提供给应用软件使用。
1.2 定义
在一定的负载情况下,系统的相应时间等载特性是否满足特定的需求
1.3 性能分层
前端性能
APP
卡顿、流畅度
资源消耗(CPU、内存、流量、电量)
WEB
页面渲染(浏览器、文件存放位置)
js性能---[dynatrace ajax edition](https://www.cnblogs.com/yixiaoheng/p/dynatrace-ajax-edition-0.html)
服务端性能
linux
windows
1.4 目的
+ 评估系统的能力
+ 识别系统性能瓶颈
+ 系统性能调优
+ 验证可伸缩性和可靠性
1.5 衡量性能
+ 时间特性:响应时间、吞吐率)
+ 资源利用特性:内存、CPU
+ 效率依从特性:效率(相关标准)
2. 测试策略
2.1 负载测试
确定不同用户数下系统的最大用户数、最大有效用户数、系统响应时间、资源占用率------发现系统的极限
2.2 压力测试
使服务器资源处于极限状态下长时间运行,能否稳定工作------测试系统特殊条件下的稳定性
2.3 并发测试
测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题-----发现内存泄漏、线程锁和资源争用等问题
+ 在线用户 -----容量
+ 实际用户 -----负载(并发操作---------队列管理)
2.4 配置测试
调整被测系统的软\硬件环境,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则------用于性能调优和规划能力
2.5 稳定性测试
加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定------运行状态是否稳定
2.6 容量测试
主要针对服务器----关注服务器容量,以及硬件处理能力、服务器连接能力
2.7 基准测试
当软件系统中增加一个新的模块的时候,需要做基准测试,以判断新模块对整个软件系统的性能影响。按照基准测试的方法,需要打开/关闭新模块至少各做一次测试。关闭模块之前的系统各个性能指标记下来作为基准(Benchmark),然后与打开模块状态下的系统性能指标作比较,以判断模块对系统的影响
2.8 网络性能测试
带宽、端口、延迟、负载变化对响应时间的影响--------测试用户数目和网络带宽的关系
3. 关注参数
3.1 响应时间
+ 对请求作出响应所需要的时间。
+ 响应时间=呈现时间+数据传输时间+系统处理时间,t = N1+N2+N3+N4+A1+A3+A2+A3,其中:
t是响应时间
网络传输时间:N1+N2+N3+N4,数据传输时间影响因素:网速、传输路径,一般选择千兆局域网测试
应用服务器处理时间:A1+A3---线程池
数据库服务器处理时间:A2----连接池技术
呈现时间:A3,影响因素:浏览器、操作系统、硬件(CPU\内存),性能工具屏蔽响应的呈现过程
3.2 TPS/QPS
+ 单位时间内系统处理用户的事物数,与request对CPU的消耗、外部接口、IO等有关。
+ 未遇到性能瓶颈的时候,吞吐量F=VU * R /=并发数/平均响应时间
F为吞吐量
VU表示虚拟用户个数
R表示每个虚拟用户发出的请求数
T表示性能测试所用的时间
3.3 并发用户数
+ 平均并发用户数的计算:C=nL/T,峰值:C`=C+3C^(1/2)
C是平均的并发用户数
n是平均每天访问用户数(login session)
L是一天内用户从登录到退出的平均时间(login session的平均时间)
T是考察时间长度(一天内多长时间有用户使用系统)
3.4 资源利用率
+ 内存(Memory)
+ 硬盘(Physical Disk)
+ 处理器(Processor)
+ 网络状况
3.5 事务成功率
发送的请求是否都100%成功响应
4. 软件性能关注点
4.1 管理员角度
1. 资源利用率(服务器、数据库) 服务器、I/O
2. 响应时间
3. 系统容量
4. 系统瓶颈
5. 系统/设备可扩展性
4.2 开发角度
1. 架构设计是否合理
2. 数据库设计(读写分离、索引、分库分表、sql)
3. 代码是否存在性能方面的问题
4. 内存泄漏
5. 不合理的线程同步方式
6. 不合理的资源竞争
4.3 测试角度
性能需求 + 全部