性能测试流程


性能测试的流程,分为四个阶段:

1、第一阶段:性能测试准备阶段

1.1 性能评估

性能测试准入原则:功能迭代已完成,预发布完成后,功能已经稳定

压测标准:确定哪些模块和接口需要做性能测试(不是所有需求和接口都要做性能测试)【性能测试必要性研究】

  • (1)甲方需求,明确规定测试哪些接口性能
  • (2)涉及生命财产安全,国计民生等,如:医疗系统、金融、保险等
  • (3)大型产品上线之前,对于核心、用户使用率高的接口,例如活动秒杀
  • (4)架构调整,前后的数据库调整等,需要升级SDK,需要重新做性能测试
  • (5)业务剧增:业务增加,要做性能调优
  • (6)底层bug修复,可能会影响到性能

1.2 需求分析

性能需求需要基于业务功能的

  • 熟悉业务,接口关联、参数、数据库的关联,数据业务流等
  • 熟悉项目的架构和通信协议:是http协议还是其他协议?了解项目架构,是为了定位性能问题,每个项目架构中间的步骤,都有科恩那个是性能问题
  • 评估指标:要关注哪些业务指标及指标范围
每个公司指标都有差异,如果公司有指标,可以按照公司要求来,没有的话,参考行业内标准

ART < 1.5s
ERR < 0.1%
服务器资源利用率 < 80%

1.3 压测方案

执行测试计划、测试模型、评估工作量

  • 测试模型是指做负载测试,还是性能测试,还是混合场景测试等
  • 评估工作量,需要编写测试计划,如5W+H(why/when/who/where/what、how)
  • 编写性能测试用例(同功能测试)

2、第二阶段:性能测试环境搭建

(1)搭建独立的性能测试环境,理论上,不能用功能的测试环境和线上环境,因为会相互影响。

(2)搭建好性能测试监控平台,如Prometheus、grafana、influxdb等

(3)安装性能测试工具:根据协议,选择合适的工具来开发性能测试脚本

  • Jmeter:开源免费,跨平台【Linux、win、Mac】支持Http协议和websocker协议 Dubbo
  • Loadrunner:商用收费,版本12免费只能使用50用户数,更新很慢,破解版本使用有风险,支持HTTP协议
  • locust:结合Python语言开发
  • PTS:阿里云性能测试工具,收费

(4)性能测试脚本开发,选择各种模型进行脚本设计

例如:压测场景设计,一般包含如下步骤:

* 1)先进行单接口功能测试:1个用户运行一段时间来验证脚本问题

* 2)单接口负载测试:逐步增加用户数关注TPS和RT,找到系统承受的最大并发用户数【拐点】,找到最优的TPS和最大承受并发用户数

* 3)进行单接口性能测试:使用负载测试找到的并发用户数去做单接口性能测试,得到性能指标数据结果

* 4)混合场景测试:多个接口同时压测,根据业务模型指定混合比例,真实业务混合比例下的系统指标【真实用户场景就是有用户注册、用户登录、用户下单等】

* 5)稳定性测试:长时间运行,确认系统的稳定性,确认系统是否报错和崩溃等【可以是单接口稳定性,也可以是混合场景稳定性】

3、第三阶段:压测执行、结果分析、性能调优

1)根据之前设计好的场景脚本,进行压测,一般使用CLI命令行去执行,或者使用分布式执行

2)测试记录:性能测试场景,响应时间,TPS,监控图表,简单分析结论等

3)性能测试过程中各种数据监控和收集:被测项目的监控(服务+服务器)、硬件资源监控、项目服务监控

4)测试结果和监控数据综合分析,定位问题、分析、调优(和开发一起进行)

  • 由外及内进行检查:RT > TPS > 负载机器的资源情况 > 服务器资源情况 > 中间件、数据库配置 > 中间件、数据库耗时分析
  • 由表及里进行检查:自身问题 > 服务器硬件瓶颈 > 服务器os瓶颈(参数配置、数据库、web服务器) > 应用瓶颈(SQL语句、数据库设计、业务逻辑、算法)

5)调优后再验证测试,并持续跟踪发现的性能bug

  • 可能解决了一个性能问题,会出现另外一个性能问题

4、第四阶段:压测报告及结果评估

1)性能测试通过标准及验收标准,主要以公司内部标准为准:

判断维度通过【行业内标准】备注
超时概率<0.5%没有绝对标准,由具体业务和项目组参考并评定
错误率<0.5%4xx、5xx状态码
响应时间<小于期望时间<1s优秀,<3s普通,5s客户忍耐上线
TPS>大于期望值TPS越大越好
CPU利用率<80%以公司标准
内存利用率<80%以公司标准

2)整理编写性能测试报告

问题:你们公司的性能测试是怎么做的?

* ①首先做性能测试的需求分析,明确性能测试的目标、范围、场景、性能测试指标(响应时间、吞吐量、并发用户数等)

* ②性能测试环境搭建:项目+监控+工具等环境,搭建一套与生产环境尽可能一直的测试环境,包括硬件、网络、操作系统、数据库等都一致,最好隔离成独立环境

* ③选择工具编写性能测试脚本:如jmeter工具,根据测试场景编写性能测试脚本,模拟用户行为和数据交互

* ④执行性能测试:使用CLI命令行运行脚本,或者使用分布式压测,包括负载测试、压力测试、稳定性测试等

* ⑤性能测试结果分析:收集并分析测试结果,识别性能测试瓶颈和潜在问题,用Prometheus+grafana

* ⑥性能调优:根据分析结果进行性能调优,优化系统配置,辅助开发做代码调优实现等

* ⑦编写测试报告:编写性能测试报告,总结测试结果,分析性能瓶颈,提出优化建议等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值