1.概念
狭义:性能测试主要用于描述常规的性能测试,是指通过模拟生产运行的业务压力或用户使用场景来测试系统的性能是否满足生产性能的要求。
广义:性能测试是压力测试、负载测试、强度测试、并发(用户)测试、大数据量测试、配置测试、可靠性测试等和性能相关的测试统称 。
2.测试目的
首先要获取生产环境的业务/事件最大处理能力,包括响应时间和并发等。然后明确测试目的,例如:验证生产环境xx平台的稳定性是否符合性能需求(评估当前性能);验证生产环境xx平台是否满足未来x年业务量要求(预测未来性能);寻找性能瓶颈并协助调优;
3.前提条件
功能\接口基本稳定,架构无较大变化;
了解项目背景,确定测试范围,确定测试工具;
制定测试计划;
4.性能测试规划之需求分析
- 要测试的业务/事件及配比,哪些交易量大,如查询、交易、具体哪些接口服务等;
- 业务特点,重点关注哪些交易量大,交易量频繁,重复性高的交易,对性能要求较高的交易;以及有没有特定的操作、特定的时间导致特定的高峰值;批量处理的交易;
- 对响应时间的要求,包括查询、提交、与第三方交互的功能等;
- 调研开发工具、开发语言、通讯协议、交易渠道、交易路径及应用架构;
- 确定性能测试指标、资源指标调研和其他特殊指标;包括:页面响应时间、交易处理能力、稳定运行指标、cpu、内存、i/o阀值等;
- 数据量的年增长趋势,未来1年、2年、3年等;
- 调研分析生产环境、测试环境之间的差异;
- 调研生产上的数据量;
5.性能测试规划之测试方案
- 测试目的
- 制定测试指标及接口明细
包括但不限于主机资源使用率(cpu和内存),数据库最大连接数、带宽使用率,TPS,平均响应时间,调用成功率,稳定性(持续时间)等;
3.测试范围
被测场景的指标包括哪些,是否需要全链路测试,稳定持续时间多久等;
4.测试准则
启动/暂停/再启动/结束准则
5.环境配置
6.测试模型
7.测试策略
测试总体策略,测试基本策略,交易选取策略,测试执行策略,测试监控策略,测试调优策略,环境部署策略,版本发布策略,理论依据等;
8.场景设计
单接口和混合场景设计,稳定性(12h或者24h),扩展性(横向、纵向扩展为动态增加cpu、内存),极限测试(至系统某一环节导致无法进行为结束)等;
6.性能测试规划之测试案例
根据性能测试方案,按照性能测试案例模板,编写性能测试案例单交易基准、单交易负载、混合场景、极限测试、稳定性、高可用性等;
7.性能测试规划之测试脚本
针对测试模型中选取的交易,依据性能测试脚本检查规范,进行测试脚本的开发和调试,jmeter录制并编辑调试;
8.性能测试规划之测试数据及场景准备
根据不同的业务场景,不同的营业日情况,创建不同测试场景,尽可能模拟真实场景,模拟真实的生产环境数据量,测试环境尽可能模拟真实的生产环境的硬件配置;
9.性能测试规划之测试启动
在上述准备完成后,成立测试执行小组、测试监控分析小组和调优小组,根据测试策略按优先级执行测试案例,需要开发、架构、DBA支持配合,确保性能测试正常进行;
10.性能测试规划之测试报告
根据测试原始结果,进行测试结果整理、汇总和归档,最终编写性能测试报告;
11.一些性能测试常见术语概念
- 并发用户数(Vu/Vuser):测试时同时访问被测系统的进/线程数。注意,由于测试过程中,每个进/线程都是以尽可能快的速度发送请求,与实际用户的使用存在差别,所以,此数据不等同于实际使用时的并发用户数;
- 响应时间(RT):从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间;
- 平均响应时间(ART):测试线程向被测系统发请求,所有请求的响应时间的平均值;
- TPS(Transactions per Second):每秒事务数,每秒通过的事务数;
- 吞吐量:在性能测试中,吞吐量是指服务器处理的字节数,吞吐量的大小直接的体现服务器的承载能力;
- 吞吐率:吞吐率是指单位时间内从服务器返回的字节数,也可以指单位时间内服务器处理客户提交的请求数,是衡量网络性能的重要指标。吞吐率=吞吐量/测试时间;
- 资源利用率:指的是对不同系统资源的使用程度,例如服务器的CPU利用率、内存、网络、磁盘利用率等。资源利用率是分析系统性能指标进而改善性能的主要依据;
- 压力测试:指系统已经达到一定的饱和程度(CPU、磁盘等已经处于饱和状态),此时系统处理业务的能力是否会出现错误;
- 负载测试:通过对系统不断的加压,直到超过预定的指标或者部分资源达到一种饱和状态不能再加压为止。该方法主要用于找到系统最大的负载能力,为性能调优提供数据;
- 稳定性测试:采用典型交易混合并发模式,对被测系统进行长时间的稳定性测试,获得系统在持续大的压力下的性能表现数据,考察是否会出现宕机、响应时间变长、交易成功率下降、内存使用率持续上升等异常现象;
- 容灾测试:当系统硬件、软件出现异常,然后恢复,检验系统能否恢复正常;
- 容量测试:确定系统可处理同时在线的最大用户数 ;