性能测试
一.性能测试概述
性能测试概念:
性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系响应时间、TPS、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。
从不同角度来看性能:
用户角度:
响应时间,稳定性
开发角度:
架构设计,数据库设计,代码设计
系统管理员角度:
性能测试的价值:
提前发现系统高峰运行故障 指导制定突发流量承载方案 确保系统运行平稳
性能测试的目的:
优化性能 最小化成本 最小化风险 交付高质量的系统
性能测试的目标:
- 评价当前系统性能
- 寻找瓶颈,优化性能
- 验证系统稳定性与可靠性
性能测试常用术语
并发数:
某一物理时刻同时向系统提交请求的用户数。 最佳并发用户数:通常反映系统的容量,即系统的处理能力情况。
响应时间:
响应时间指的是从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间。(网络时间 + 应用程序处理时间)
吞吐量:
单位时间内系统处理的客户请求的数量,体现系统的性能承载能力
TPS:应用系统每秒钟处理完成的交易数量。
QPS:应用系统每秒钟处理完成的请求数量。
资源利用率:
系统在负载运行期间,数据库服务器、应用服务器、web服务器的CPU、内存、硬盘、外置存储,网络带宽的使用率。
二.性能测试的主要类型
解释:
负载测试:
通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。 目标:确定系统的性能容量(如系统在保证一定响应时间的情况下能够允许多少并发用户的访问),系统各项指标,如吞吐量、响应时间、CPU负载、内存使用等如何决定系统的性能。
压力测试:
通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能够提供的最大服务级别的测试。 目标:压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。
大数据量测试:
- 主要针对数据库有特殊要求的系统进行的测试。
- 实时大数据量,测试用户较多或者某些业务产生较大数据量时,系统能否稳定运行。
- 历史大数据量,测试系统使用一段时间即系统累计一定量的数据时能否正常的运行业务。
- 前面两种的结合,测试系统已经累计了较大数据量时,一些实时产生较大数据量的模块能否稳定。
单交易负载测试:
单交易在系统一定负载压力下,采用梯度增加并发的方式,获得单交易系统处理最优时的并发用户数、响应时间和系统处理能力。目的是获取单日交易业务处理性能峰值,并且检查和排除该交易自身可能存在的性能问题。
混合交易测试(数据库可能会产生大量的死锁):
根据混合场景设计,采用梯度增加并发的方式,直到出现性能拐点,获得混合交易系统处理最优时的并发用户数、响应时间及系统处理能力。混合交易的目的是获取系统整体在不同负载级别下性能表现,检查和排除交易与交易之间可能存在的并发问题。
三.性能测试的流程
1.测试设计(性能需求调研,方案设计,计划制定)
方案设计:
选取原则:
- 测试交易要覆盖各个渠道;
- 选取交易量较大的高频交易;
- 选取重要程度高的交易;
- 选取占用资源较高的交易;
- 选取业务逻辑复杂的交易;
- 选取交易路径较长的交易;
- 选取处理时间较长的交易;
- 选取生产上曾经出现或者容易出现问题的交易;
设计方法:
1.分析业务系统各种正常日和特殊日的业务量运营情况
2.分析实际业务分布、交易类型及交易发生量、交易占比情况,根据业务分布比例及交易比例,确定测试模型所选交易的配比,构建测试模型。
常见测试场景分类:
正常业务日交易场景 特殊日交易场景 高峰交易场景 日终批处理场景
性能指标:
TPS、ART、并发用户数:非功能性能需求 TPS估算:首先获取被选交易生产高峰时段TPS,若获取有困难采用二八原则核算: TPS= n*80% m*20%*3600 (n:日交易量 m:每日工作时长) 交易成功率:99.99% 各应用服务器和数据库服务器系统资源使用情况:CPU、内存、IO、networke
2.测试准备
测试环境:重要系统以及新系统需要和生产环境一样,其他优化系统要保持1:2配比
测试数据:开发人员准备存量数据,测试人员准备参数化数据(脚本)
测试工具:LoadRunner,JMeter等
3.测试开发
4.测试执行
常见的性能测试问题:
TPS不达标,响应时间慢
交易大量超时或失败报错,交易成功率低于指标
TPS大幅波动不稳定
系统长时间运行不平稳
内存泄露
数据库有大量死锁生成
5.分析报告