性能测试理论
终于有时间把性能测试补上了,下一步补充Jmeter的具体操作
性能指标
1. 响应时间: 客户端发出请求->接受请求的时间
2. 吞吐量: 单位时间内系统处理请求的数量
3. 错误率: 失败请求比例
4. 并发用户数: 同一时间向系统发出请求的用户数,基于场景分析
5. 服务器资源:cpu,内存等
性能测试目的
1. 性能表现
2. 发现性能瓶颈
性能测试主要分为
1. 线上压测-全链路压测来执行
2. 线下测试-单机或小集群来压测
性能指标
1. 虚拟用户数
2. 压测事务
3. tps 每秒钟处理事务的数量(吞吐量)
4. QPS 每秒钟的查询率
5. PV 高峰pageview 是指一天中PV数达到的最高峰
DB层
1. QPS: Select的请求量
2. TPS insert, update,delete的请求量
应用层
1. 所有的请求量都可以使用QPS和TPS来表示
指标
并发, 响应时间-RT, 思考时间, CPU资源, Load负载
性能测试指标
业务指标
资源指标
应用指标
前端指标
性能测试策略
数据库
专用性能测试数据库
基础数据
业务数据(业务逻辑数据)
日志
仅输出warn级别日志
缓存
屏蔽缓存
场景
单场景(先执行)
混合场景(后执行)
分析
拆分问题
隔离分析
根据业务系统要求,判断被测性能是否通过
性能瓶颈
不能在当前项目中解决得性能bug
性能测试评估
评估
明确测试什么
期望值
测试系统能够满足将来一个时间段的压力
性能测试评估
测试前的评估(四个维度)
关键业务(购物车系统,提交订单,优惠券打折券,支付的选择,取消订单)
日PV量
逻辑复杂度
运营推广计划
功能点不满足四个维度的属于高资源占用
CPU
内存
I/O
load
disk
测试后的评估
性能测试类型和执行方法
1. 性能期望值
2. 高于期望,系统资源处于临界点
3. 高于期望,拐点
4. 超过负载,系统崩溃
1. 性能测试
2. 负载测试
3. 压力测试
4. 稳定性测试
性能监控
性能监控:
应用服务器
数据库
中间件
网络
应用服务器
cpu
Memory
Load
I/o
disk等
数据库
缓存命中
牵引
单条SQl性能
数据库线程数
数据池连接数
中间件
线程数
连接数
日志输出
网络
防护墙
网卡
网线
吞吐率
应用服务
JVm的内存使用和回收
JAVA内存使用
FullGC频率
Java类的载入
卸载
日志
线程-运行状态(阻塞,等待,正常运行)
性能监控指标
用户执行情况
场景状态
事务响应时间
TPS
Load
CPU分析图表等
测试机资源
CPU
内存
网络
日志输出
磁盘空间
负载生成器评估
监控工具
Jstat
java/bin 利用JVM内建指令对java应用程序的资源和性能进行实时的命令行监控,包括对HeapSize和垃圾回收状态监控
JConsole
java开发的GUI程序,用来监控JVM,也可以监控远程的JVM
java内存,javaCPU使用率,线程执行情况,加载类情况等
Jmap
可输出所有内存对象的工具,可以将JVM的Heap以二进制输出为文本,可用于监控java是否存在内存泄漏
JProfiler
功能相对较全的java剖析工具,可详细剖析CPU,线程和内存的使用情况
可直观式的界面,可方便找到性能瓶颈,抓到内存泄漏,解决多线程问题,对内存GC的资源回收器做深入的分析,可以轻易找出内存泄漏
性能分析
分析原则-拆分问题,隔离分析-逐步定位,从外到内,从表及里,逐层分解,隔离排除
中间件瓶颈(Tomcat参数配置,数据库参数配置等)-->应用服务日志-->本应用得性能瓶颈(代码,SQL语句,索引,业务逻辑,线 程池设置,算法)-->服务提供者的性能瓶颈-->相关联的底层存储应用的性能瓶颈
分析信息来源
监控工具所采集的数据
tps, RT,并发用户数,JVM内存,FULLGC频率,CPU利用率,Load
应用服务的日志
本应用的日志和远程应用的错误日志,超时日志
项目配合人员提供的数据
数据库监控信息,开发人员提供的代码逻辑信息
分析标准
RT是否符合性能预期值,表现是否稳定
应用日志中,超时的频率,是否在可接受的范围内
TPS维持在多大的范围内,是否会有波形出现,标准差多少,是否符合预期
服务器的CPU,内存
性能测试总结
1. 评估是否需要做性能测试
项目立项前的技术方案阶段-PM或者PDM
2. 性能测试资源分配
个业务的开发和测试人员
3. 制定性能测试计划
4. 编写性能测试设计方案
邀请PM, PDM, 测试负责人,一起细化需求
性能测试方案
5. 评审性能测试设计方案
PM,系统设计人员,测试人员,DBA等共同参与
测试目标
测试策略
测试数据
6. 提供代码,搭建环境,数据准备
项目环境中搭建性能测试环境,准备压测数据和压测脚本
7. 执行性能测试
功能测试通过-执行性能测试-执行脚本需要符合规范
8. 性能调优
PM,性能测试工程师,DBA共同参与
9. 编写性能测试报告
性能测试目标,环境,数据构造规则,测试策略,测试结果,调优说明,测试过程中遇到的问题以及解决方法等