性能测试
性能测试的分类
性能测试包括验证性能测试、负载测试、压力测试、容量测试。
图片需要重画
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)报告编写
性能测试考虑的主要维度
性能测试关注点 | 性能描述 |
---|---|
资源使用合理 | 资源利用率 |
系统是否可扩展 | 可扩展性 |
系统支持的用户并发 | 系统容量 |
系统最大业务处理能力 | 系统容量 |
系统瓶颈在哪里 | 系统可扩展性 |
是否支持长时间业务访问 | 稳定性 |