Python测开28期 - TLF - 学习笔记 - 性能测试 - 性能测试体系

一、性能测试介绍

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、性能测试方法论(性能压力曲线图)

image
其中,第一个拐点为最优并发用户数(最佳并发),第二个拐点为系统能承载的最大并发

二、常用性能压测工具

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等数据是否写入正常
    – 访问接口,查看功能是否正常
    image