一、性能测试介绍
1、性能测试的价值
- 为研发、运维团队提供有效的容量规划能力
- 系统风险识别
- 系统瓶颈识别
- 性能调优指导
2、案例
2020年11月11日,天猫双十一峰值处理订单58.3万笔/秒
京东金融618战报,白条交易额10秒破亿
若停摆10分钟~~~
3、性能测试场景
- 负载测试:关注系统满足性能前提下能够承受的最大压力
- 压力测试:测试在资源特别低的情况下的系统运行情况,同时找到系统在哪里失效以及如何失效
- 极限测试:在过量用户下的负载测试,避免攻击或爬虫
- 容量测试:确定系统可处理同时在线的最大用户量,关注点为how much,不是how fast
4、性能测试概念/指标
- 并发:虚拟并发用户数/同时在线用户数
- TPS:每秒处理的事务数/交易数
- QPS:每秒处理的请求数/接口查询次数
注意:
– 若某些业务有且仅有一个请求连接,则TPS=QPS
– 一般情况下,用TPS来衡量整个业务流程,用QPS来衡量接口查询/请求次数
– 并发数=QPS*平均响应时间
例如:一个接口耗时100ms,QPS为1000(此处,1个请求即1个接口,每秒能处理1000个接口请求),而每秒1个接口可以执行10次,所以并发数为1w - RT(Response Time):响应时间
- HPS(Hits Per Second):每秒点击数
- PV(Page View):页面访问量
- Throughput:吞吐量
- 指标分位
– Mean 平均
– P90 表示90%的用户/请求/事务对应的指标值
– P95 表示95%的用户/请求/事务对应的指标值
– P99 表示99%的用户/请求/事务对应的指标值
5、性能测试方法论(性能压力曲线图)
其中,第一个拐点为最优并发用户数(最佳并发),第二个拐点为系统能承载的最大并发
二、常用性能压测工具
1、Apache AB(Apache HTTP Server benchmarking tool)
- 小巧、便捷、灵活
- 只能做HTTP压测
- 不能跑复杂场景
-下载:搜索Apache AB benchmarking–>在Apache HTTP官网下载
2、Apache JMeter
- 开源
- 纯JAVA客户端
- 支持所有协议
- 插件较多
3、nGrinder
- jython编写(基于JVM运行的Python)
- 兼容JAVA、Python
- 开源
- 下载:github官网搜索nGrinder
4、Locust
- 下载:github官网搜索Locust
三、常用性能监控工具
Prometheus
四、常用性能剖析工具
作用: 用于对所发现问题的排查、诊断和调试
Skywalking
五、性能测试流程与方法
1、性能测试流程
2、性能测试方法
- 并发模式:从客户端角度出发,模拟业务系统能同时承载的在线用户数
- 吞吐量模式:从服务端角度出发,更关注服务器端接受到的请求及系统的处理能力,直接设置每秒发出请求数,免去并发到RPS的繁琐转化
六、性能测试计划
1、需求分析与测试设计
一般情况下,根据业务、业务数据、行为日志或同类产品业务或 数据等来提取场景和指标
2、环境设计与搭建
3、测试数据准备
- 接口请求参数:自己构造、日志获取、上下关联
- 使用数据库中表的数据
- 若为多接口,需结合业务场景设计请求比例
4、性能指标预期设定
- 每秒请求数 QPS
- 请求响应时间(最大、最小、平均)(例如:0.2~1秒)
- 错误率
- 机器性能,例如:CPU idle 45%、内存无剧烈抖动或飙升
- 压测过程中接口功能是否正常,例如:测高负载、稳定性时
5、压测工具配置及脚本编写
6、测试执行与跟踪
发压时间线
- 测试前环境检查
- 起压:根据被压情况,调节并发量到适合的情况
- 查看记录各项性能指标:
– ngix日志查看每秒请求数
– ngix查看错误请求
– 查看机器参数:CPU idle、memory
– 查看db、cache等数据是否写入正常
– 访问接口,查看功能是否正常
霍格沃兹的测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。