软件测试-性能测试专题方法与经验总结
本文 从 性能测试流程,性能测试指标,性能监测工具,性能测试工具,性能测试基线,性能测试策略,性能瓶颈分析方法几个维度,进行知识总结和经验分享;详细见下图总结,欢迎大家补充;
性能测试经验与思考
1. 性能测试流程
1.1. 性格规格评审
1.2. 资源排期
1.2.1. 人力资源
1.2.2. 时间计划
· 性能测试介入时机
? 流程可跑通
? 数据无严重问题
? IPD-TR4-第二轮系统测试
1.2.3. 设备资源
1.3. 测试方案
1.3.1. 测试项
1.3.2. 测试场景
· 默认配置
· 基础功能启用
· 最常用操作
1.3.3. 性能测试指标
1.3.4. 测试工具
1.3.5. 数据准备
· 数据类型
· 数据大小
· 数据量级
· 数据比例分布
1.4. 测试结果与报告
1.4.1. 性能优化
1.4.2. 迭代验证
1.4.3. 结果评审
2. 性能测试指标
2.1. 网络安全设备性能指标
2.1.1. RFC2544:属于2-3层的测试
· 吞吐量:不丢失包情形下 转发的最大数据流量
· 丢包率:不太负载下,丢失包百分比
· 延迟:输入帧最后一份到达输入端口的时间-输出帧第一位到达输出端口的时间
· 背靠背:最大速率发送一定长度的数据包,处理突发数据的能力(数据缓存能力)
2.1.2. RFC3511:4-7层的测试
· TCP每秒新建(CPS):CPS测试的目的是确定最大的TCP连接建立速度
? 描述了在测试CPS时,采用HTTP1.1的协议,并且响应Get请求
? 每秒新建连接数是个性能指标,连接不断建立不断销毁,每秒能建立起来的连接数的意思,因为建立连接的时候需要额外的开销来维护连接表,这个指标用来衡量连接表相关的计算的性能
· HTTP的每秒处理事务数(TPS):TPS是指最大HTTP传输速率,考察被测设备的应用层处理能力
? 在HTTP1.0 协议中,每对请求/应答都使用一个新的连接。每次请求都需要客户端与服务器建立一个TCP连接,服务器收到请求并且返回应答后,会立即断开TCP连接。
而HTTP1.1协议是可以保持这种连接状态,是可持久的
· HTTP有效吞吐量(HTTP Good Throughput)
? 请求的文件大小建议为21K/64K字节的文本文件
· 最大TCP并发连接数
? 在每次反复过程中以低于被测设备所能承受的连接速率发送不同数量的并发连接,直至得出被测设备的最大TCP并发连接数
? 最大并发测试的主要目标是评价被测设备对TCP连接的管理和保持能力。一般来说,设备的内存越大,session表空间越多,对session的管理能力越强,则设备的TCP并发能力越高。
2.1.3. 商用仪表:TestCenter /Avalanche/IXIA/bps
2.2. 大数据设备性能测试指标
2.2.1. 数据格式
· 结构化/半结构化/非结构化
· 关系型数据库如Oracle、MySQL、SQL Server等不能用于大数据,大部分数据都是非结构化
· 数据预处理:数据清理/数据集成/数据归一化
2.2.2. 数据流
· 处理流程
· 数据接入速度eps
· 数据预处理速度eps
· 数据入库存储速率eps
· 数据查询和展示响应时间
2.3. 数据库性能测试指标
2.3.1. 常用的测试单位是每秒事务数(TPS),每分钟事务数(TPM)
2.3.2. 响应时间或延迟 用于测试任务所需的整体时间
2.3.3. 并发性:工作中的线程数或者连接数
2.4. 业务处理产品性能测试指标
2.4.1. 响应时间 RT/ART(Response Time/Average Response Time)
2.4.2. 页面展现时间
2.4.3. 吞吐量
2.4.4. TPS: 处理事务
2.4.5. 并发数
2.4.6. 系统容量
3. 性能监测工具
3.1. 工具
3.1.1. Prometheus技术
3.1.2. jmeter+influxdb+grafana
3.1.3. linux 性能监测命令
3.1.4. 分布式集群监测:ganglia
3.1.5. linux/windows: Spotlight
3.2. 监测指标
3.2.1. 服务器端
· CPU:Total%、Sys%、User%、每个CPU%;
· 磁盘:读写吞吐率(MBps)、读写次数(次/s);读写缓慢程度util%
· 网络:网卡出/入带宽(kbps)、网卡出/入包量(个/s)、TCP连接状态;
· 内存:Menery%、free-memory、SWAP%;
· 进程:进程端口、进程占用内存和cpu资源
4. 性能测试工具
4.1. API
4.1.1. jmeter
4.2. network
4.2.1. iptraf
4.2.2. netperf
4.3. database
4.3.1. sysbench :影响数据库服务器性能的各种因素来评估系统的性能
4.3.2. MYSQL Benchmark Suyite:是单线程的,主要用于测试服务器执行查询的速度
4.4. disk
4.4.1. dd
4.4.2. fio
4.4.3. iozone
5. 性能测试基线
5.1. 基础版本性能测试数据
5.2. 版本变更触发的性能变化参考
6. 性能测试策略
6.1. 分段性能测试
6.2. 迭代折半性能压测寻瓶颈
7. 性能瓶颈分析
7.1. 分析流程
7.1.1. 网络接入层面
· 带宽
· 最大连接数
· 新建连接数
· 网络访问限制
7.1.2. 客户端层面
· 带宽
· 浏览器自身加载和渲染
· 客户端软件性能限制
7.1.3. 服务器端层面
· 系统硬件层面
? 操作系统参数配置
? 连接数
? 文件打开数
? cache
? 端口数
? 操作系统
? cpu性能
? top c
? cpu 绑定是否均衡
? 频繁运算
? 数据库语句 order /group by
? 内存限制
? top res
? 磁盘io
? iostat util%
? 网络io
? rx/tx
· 中间件层面
? 线程池
? 阻塞
? 锁
? 方法耗时
? 连接池
? jdbc 连接池
? jvm
? jvm GC
? jvm FUll GC
? 修改JVM的堆内存参数Xmx
? jstat 每个代大小和gc 频繁程度
? 垃圾回收时间
· 数据库层面
? 连接数
? 连接数增加
? 等待超时增加
? 锁死
? sql语句优化
? 命中率
· 应用程序层面
? 算法
? 缓存
? 同步/异步
? 线程/进程数设置
? 生产者和消费者处理
? cpu和内存资源申请控制