性能测试过程
1.需求分析,分析性能的测试指标。比如,单个接口响应时间不超过2秒。登录接口2000人,时间不超过3s。当前服务器是否支持20000人同时使用。
1)被测系统
- 熟悉被测系统的业务功能
- 熟悉被测系统的技术架构
2)明确性能测试内容
- 从业务角度明确测试内容
- 确定关键业务,即:用户使用频率较高的业务功能
- 从技术角度明确测试内容
- 如:通常逻辑复杂度较高的业务,也是cpu密集运算较大的地方,考量服务器cpu在预定性能指标下是否达标。
- 如:通常数据量较大的业务很占用系统内存,考量服务器内存在预定性能指标下是否达标。
3)测试策略
- 负载测试
- 压力测试
- 稳定性测试
- 并发测试
4)测试指标
- 无明确需求指标
- 通过查找相关资料,
- 和类似的系统对比,
- 以及对未来流量的预估,确定性能测试需求的指标
- 有明确需求指标
- 例如,类似如下指标
- 下订单业务并发20个用户
- 平均响应时间要小于等于3s
- 事务成功率为100%
- CPU使用率小于等于85%
- 只需要跟行业执行分析结果与预期指标作对比,如果有不满足的,就需要分析问题所在。
- 例如,类似如下指标
2.性能测试计划。(谁负责,怎么测试,计划是什么)
1)项目背景
2)测试目标
- 确定此次性能测试的目标
3)人员安排
- 明确性能测试的时间,计划需要多少人来测试。
4)时间进度
性能测试 | 工作日 | 开始时间 | 结束时间 |
测试用例设计 | |||
测试环境搭建 | |||
测试数据准备 | |||
脚本开发及执行 | |||
测试结果分析 |
5)性能测试环境(原则:尽量要和用户使用的都一样(生产环境))
- 系统架构:系统组成
- 软硬件配置:数据库版本,apache
- 测试数据:比如测试环境100条测试数据,线上100万条,那测试就没有意义。
6)测试工具
- 性能测试工具,监控工具等
7)测试策略
- 确定性能测试类型
- 负载测试
- 压力测试
- 稳定性测试
- 并发测试
- 确定性能测试场景
- 单一场景
- 服务器同一时刻只进行同一业务操作,如,抢红包
- 混合场景
- 服务器同一时刻处理多个不同业务操作,如网上商城搜索商品,加入购物车,下订单,支付等。
- 单一场景
8)风险控制
3.性能测试用例
主要包括:
- 测试步骤,预期结果。
- 并发数,目标数,
- 测试策略(参数化,关联,检查点)。
4.准备脚本。基于不同的性能场景,完成测试准备。
性能测试用例编写完成以后,接下来需要结合用例的需要,进行测试脚本的编写工作。
提示:录制或编写,根据不同的工具要注意代码的冗余。
5.准备环境,搭建场景(环境)如果监控服务端资源,那么需要监控的一套环境,如果不需要做监控,那么不需要监控的环境。(包含,工具,场景)。
说明:测试场景的设计一个重要的原则就是一句测试用例,把测试用例设计的场景展现出来。
提示:
1)虚拟用户数量以及启动虚拟用户方式。
2)场景的相关设置。(如,集合点)
3)脚本是否存在依赖关系(登录与注册)
6.执行脚本,运行场景。获取数据。
注意:
- 负载的测试机不能够运行设定的虚拟用户数;
- 没有“预热”过程,没有考虑缓存。
- 没有模拟用户的真实环境。
- 性能用例运行测试过少。
7.判定指标是否满足要求。
1、如果达标,还需要进一步进行性能测试。
测试系统的阈值,测试系统是否具有抗风险的能力。
2.如果不达标,进入系统诊断。
8.性能诊断。性能测试分析人员经过对结果的分析以后,有可能提出系统存在性能瓶颈。
1.比如资源监控,监控到服务器的cpu利用率高,就要看哪个进程导致的?在看进程里面的那个线程导致的?再看线程的内容是什么?
后端处理性能-响应时间
服务器硬件资源(cpu,内存,磁盘)
中间件,网络,数据库、架构设计是否存在瓶颈
9.性能调优
1.如果是代码问题,需要找出优化的代码。
2.如果代码没有问题,做到无可再优化,cpu占比还高,可以把服务器装备升高。
3.如果响应时间长,慢查询引起的,中间关联了一些sql的查询,需要进行sql优化。
4.或者redis,Tomcat、之类的优化
经过上诉调优之后,性能测试人员继续第二轮第三轮。。。的测试,与以前的测试结果进行对比,从而确定经过调整以后系统的性能是否有提升。
注意:
系统调优由易到难的先后顺序如下:
- 硬件问题
- 网络问题
- 应用服务器、数据库等配置问题
- 源代码、数据库脚本(索引最快,然后左右连接,然后子查询最慢)问题。
- 系统架构问题
10.性能测试报告。
- 性能测试需求覆盖情况,性能测试过程中出现的问题,如何去分析、调优、解决的。(覆盖需求,测试不同阶段的进度和产物、性能测试结果的分析)
- 测试人员、进度控制与实际执行偏差和性能测试过程中遇到各类风险是如何控制的。---管理的角度
- 经过该项目性能测试后,有哪些经验和教训等内容;(通过与否,经验和教训)