性能测试

性能测试的分类

性能测试包括验证性能测试、负载测试、压力测试、容量测试。

性能测试 - 图1

图片需要重画

a点-b点 验证性能测试:根据系统设计的规格容量进行测试,确定系统能否达到设计目标。

b点-负载测试:压力测试的一种,设计梯度模型,考察在不同压力下的系统表现,一致提高负载直到达到系统极限。

a点-b点 压力测试:在一定负载情况下长时间运行,观察系统表现。

a点-d点 容量测试:根据不断提高系统访问量确定系统能成熟的最大负载。

其中使用最多的主要包含两类,一是验证性能测试,客户方已经给定了明确的性能参数,进行的负载测试,另一种是容量测试,客户方没有明确的性能参数,通过逐步施压确定系统的容量。

性能测试中发现的主要问题

性能关注点 问题层次
系统架构 系统架构
数据库是否设计合理 数据库设计
代码存在是否合理 代码
系统是否有内存泄漏 代码
系统是否存在不合理线程同步 代码与设计
系统是否存在不合理资源竞争 代码与设计

性能测试的关键指标

关键性能指标:TPS、QPS、并发数、响应时延、资源占用率

TPS—每秒事务数,事务由实际需求来定义。如果请求10次后台才能完成一个事务,那么一个事务就包括10次请求。

QPS—每秒完成的请求数。一个请求包括发起、响应、返回,一秒钟完成多少次完整的请求过程,就是多少QPS。上面的例子,一个tps包括10个请求,那么1个tps就包括10个qps。如果某个事务就只有一次请求,那么一个tps就等于一个qps。

吞吐率(Throughput),每秒服务器处理请求数 并发数(并发度):指系统同时能处理的请求数量,同样反应了系统的负载能⼒。这个数值可以分析机器1s内的访问⽇志数量来得到。

平均系统/事务响应时延(Average System/Transaction Response Time):从发出请求到收到系统返回所花费的时间。

性能测试的流程

需求分析

1)确定性能测试目标

2)确定被测试的环境

3)确定系统转测时间:确定自测通过率,提测内容,不可测内容,需要相关的开发/运维人员到位

4)确定被测系统服务器和网络拓扑:与压测方式有关,避免因缓存导致压测不充分

5)确定系统的接口人

测试设计&测试脚本开发

1)完成测试场景和分析和评审 2)脚本的参数化

数据预置

1)压测和被压测环境的准备 2)确定预置值

用例执行

1)执行脚本 2)服务器监测,CPU/内存/IO wait 3)被测服务监测,全链路压测

结果分析&报告编写

1)结果分析 2)问题定位 3)报告编写

性能测试考虑的主要维度

性能测试关注点 性能描述
资源使用合理 资源利用率
系统是否可扩展 可扩展性
系统支持的用户并发 系统容量
系统最大业务处理能力 系统容量
系统瓶颈在哪里 系统可扩展性
是否支持长时间业务访问 稳定性