性能测试方案模板
第一章 概述
1.1. 项目背景
对xxx服务的核心接口进行排查问题,并且通过压测能够及时发现和排查系统潜在的性能瓶颈点,发现问题并及时解决,提高服务整体响应和处理能力。
1.2. 测试范围
本次测试基于xx服务的核心接口调用,测试内容主要是:
-
线上系统调用频率Top 10的单接口(列举接口)
-
对线上慢响应的接口,列举相关接口(列举接口)
-
慢SQL影响到的相应的接口(列举接口)
-
计费模块涉及到的主要业务场景(后续需要基于此,进行性能场景设计)
-
……
接口名称 | 路径 | MAX响应时间(s) | 成功率 |
---|---|---|---|
接口1 | xx | 16.98 | 100% |
以上接口数据采集时间:2022-06-01 00:00 ~ 2022-06-08 23:59,仅代表该时间段的最大处理响应时间
1.3. 项目指标
1.3.1. 定义
编号 | 指标名称 | 定义 | 英文 |
---|---|---|---|
1 | TPS | 系统每秒处理的事务数 :一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。 |
Transaction Per Second |
2 | QPS | 每秒查询率 :是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 |
Queries Per Second |
3 | CPS | 每秒新建连接数 ,定义了新建连接的速率。当新建连接的速率超过规格定义的每秒新建连接数时,新建连接请求将被丢弃。 |
Connection Per Second |
4 | 并发用户 | 业务并发用户数。指同一时间系统在线操作的用户数。 | The number of concurrentusers |
5 | 事务平均响应时间 | 显示的是测试场景运行期间的每一秒内事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。 | Average Transaciton Response Time |
6 | 90%响应时间 | 全部事务的响应时间中,90%事务响应时间小于或等于的值 | 90%Average Transaciton Response Time |
7 | 网络吞吐率 | 单位时间内所有类型的数据包的数量 | Throughput |
8 | 点击率 | 服务器每秒处理的HTTP请求数 | Click-through Rate |
1.3.2. 性能指标
关键点 | 测试场景 |
---|---|
1.xx场景xx模块 ,接口压力测试响应时间<5s | 单接口压测 |
2.xx模块,在大数量情况下操作时,接口的响应时间整体提升80%,处理时间<60s | 大数量情况下调用接口 |
2.事务失败率< 1‱ | - |
1.4 项目参考文档
文档名称 | 版本 | 备注 |
---|---|---|
业务相关文档 | ||
接口相关文档 |
第二章 系统架构
2.1 系统逻辑架构图
2.2 系统部署架构图
第三章 性能测试环境准备
3.1 环境软、硬件配置
服务器类型 | IP | 软件版本 | 核心参数 | 设备用途 | 机器配置 | 操作系统及软件版本 |
---|---|---|---|---|---|---|
应用服务器 | 10.6.0.27 | release-20220101 | JDK Version:1.8.0_252JVM Heap Size:-Xms1024m -Xmx1024m -XX:+UseConcMarkSweepGC -XX:NewRatio=2 | xx服务 测试服务 | CPU:2核MEM:768Mi~2048MiDISK:180 G | 版本:Ubuntu 18.04.4 LTS内核:Linux version 3.10.0-1062.18.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) |
10.6.1.249 | release-20220101 | JDK Version:1.8.0_252JVM Heap Size:-Xms1024m -Xmx1024m -XX:+UseConcMarkSweepGC -XX:NewRatio=2 | audit_web测试服务 | CPU:2核MEM:768Mi~2048MiDISK:180 G | 版本:Ubuntu 18.04.4 LTS内核:Linux version 3.10.0-1062.18.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) | |
数据库服务器 | MySQL-5.7.38 | |||||
中间件服务器 | Redis-2.6 | xx服务 redis测试服务器 | CPU:2核MEM:768Mi~2048MiDISK:180 G |
3.2 监控和测试工具
序号 | 工具类型 | 目标 | 工具名称 | 备注 |
---|---|---|---|---|
1 | 监控工具 | 操作系统 | arthas,Linux命令top | 可以使用TOP命令查看系统资源使用情况: |
中间件 | arthas,grafana,apm | |||
网络 | iperf | |||
2 | 负载生成工具 | 压力产生 | jmeter |
3.3 测试数据
本轮测试场景中涉及的库表
模块名称 | 主要表名称 | 测试目标数据量 | 生产环境 |
---|---|---|---|
xxx | xx | 106047 | 70698 |
以上结论是:测试环境的数据存量与线上环境对比差距太大,在测试执行前需要预跑存量数据;基础数据量要大于线上基础数据量,参考大于50%
第三章 性能测试设计
3.1 场景执行策略
3.1.1. 基准场景
无并发压力情况下,单进程调用,执行时间3分钟,获取接口的响应时间和TPS等;
3.1.1.1 场景一:单接口并发压测
场景描述 |
---|
通过模拟高并发用户,对进行压测查询接口;采取数梯度增压 1 , 5 , 10,20....用户开始,直到服务性能达到拐点,出现性能指标下降;每个梯度执行时长3~5分钟,具体时间可能更加基准测试有调整,迭代次数根据实际执行时间确定;忽略think time;关闭log; |
测试前准备工作 |
完成测试环境各服务器的软硬件安装和配置;完成数据库表基础数据量的准备;测试场景的配置完成,见场景描述;被测系统压力情况正常;测试脚本调试通过。 |
测试过程及调用链路 |
接口1: |
中间调用外部服务1接口1—》调用外部服务2接口2 |
1) 响应时间;2) Transaction per Second指标;3) 系统资源:各服务器CPU利用率,可用内存,磁盘busy%,磁盘读写IO,网络读写流量等系统资源情况;4)数据库表慢SQL |
3.1.2 大数量的并发场景
\1. 选取 系统常用操作 ,以上5个接口,在大数量的场景下 ,进行接口的调用; 2. 大数量接口的调用,先采取基准测试,使用多线程对接口进行测试,测试场景顺序:xxx
3.1.2.1 场景二:大数据量并发测试
大数量并发增压情况下,接口响应时间、TPS值,响应时间 和资源消耗的趋势;
场景描述 |
---|
通过模拟大数量并发数,对xx模块相关接口测试;采取1个线程进行基准测试,再进行多线程测试:2个线程进行进行大批量数据的请求,其他线程组,请求非大批量数据,采取梯度增压;每个梯度执行时长3~5分钟,具体时间可能更加基准测试有调整,迭代次数根据实际执行时间确定;忽略think time;关闭log; |
测试前准备工作 |
完成测试环境各服务器的软硬件安装和配置;完成数据库基础数据量的准备;测试场景的配置完成,见场景描述;被测系统压力情况正常;测试脚本调试通过。 |
测试过程及调用链路 |
xxx |
预期结果 |
1) 响应时间;2) Transaction per Second指标;3) 系统资源:各服务器CPU利用率,可用内存,磁盘busy%,磁盘读写IO,网络读写流量等系统资源情况;4)数据库表慢SQL |
3.1.3. 稳定性场景
3.1.3. 异常场景
- 测试重点关注的点
\1. 通过JMETER模拟有效的并发用户负载访问系统对压力点进行测试,测试期间监控和采集系统关键性能指标;
\2. 使用arthas 监控系统资源,排查和分析最消耗资源的线程栈信息;
从而分析现有系统是否满足客户性能需求,以及系统是否存在性能瓶颈,资源的监控参考第五章。
3.2 监控策略
- 测试重点关注的点
\1. 通过JMETER模拟有效的并发用户负载访问系统对压力点进行测试,测试期间监控和采集系统关键性能指标;
\2. 使用arthas 监控系统资源,排查和分析最消耗资源的线程栈信息;
监控项 | 是否需要监控 | 评价标准 | 监控方法 |
---|---|---|---|
系统Cpu、Mem、DiskIO、NetIO负载的稳定性 | 是 | CPU占用低于70%、内存低于80%,IO wait时间低于30%,网络IO低于最大带宽的70%,负载低于CPU内核数 | 1、 使用mytools工具(需要把工具统计采样间隔设定为5分钟)2、 使用dstat工具每5秒监测一次系统资源情况,命令:dstat -cmndlt 5 |
各个模块占用的内存、cpu、socket连接数目、文件句柄数、线程数 | 是 | 各个指标比较稳定,CPU低于100% | 使用mytools工具(需要把工具统计采样间隔设定为5分钟) |
业务触发成功率 | 是 | 成功率是否低于99.999% | 通过性能测试平台关注各个事务的成功情况 |
第四章 测试风险分析
序号 | 风险描述 | 备注 |
---|---|---|
1 | 主从同步,存在的问题无法验证 | 测试环境无主从 |
2 | 服务性能配置不一致,测试结果和分析可能存在一定偏差 | 线上服务配置高于测试环境配置 |
第五章 里程碑
时间 | 输出成果 | 参与人 | 备注 |
---|---|---|---|
2022-06-06~2022-06-08 | 性能测试前期准备:《线上慢接口统计文档输出》《常用库表数据量统计输出》《性能测试流程输出》 | xx | |
2022-07-01~2022-07-05 | 《性能测试方案V1.0》 | xx | |
2022-07-06~2022-07-13 | 测试数据准备完成 | xx | |
2022-07-06~2022-07-15 | 测试脚本的编写 | xx | |
2022-07-16~2022-07-20 | 测试执行,测试监控 | xx | |
2022-07-20~2022-07-22 | 《性能测试报告》 | xx |