性能测试基础


# 性能测试基础

# 性能测试类型

  • 负载测试:主要看系统能承受多大的负载,直至系统崩溃
  • 并发测试:主要看系统最大能支持多大并发
  • 压力测试:高压力,持续一段时间,看系统运行的状态
  • 容量测试:系统能承受的最大容量,可以是最大用户数量、数据库数量
  • 可靠性测试:达到最大压力时,系统长时间运行,是否会有内存泄漏
  • 配置测试:不同的配置下,系统的性能表现

# 基本流程

性能测试流程

# 性能测试术语解释:

1、事务

2、虚拟用户数(线程数)

3、断言

4、集合点

# 性能测试指标:

  • 系统指标(与用户场景和需求相关):

  • TPS(每秒事务数):每秒钟系统处理的事务数

  • 并发用户数:同一时间并发的用户数

    业务层面:实际使用系统的用户总数

    后端服务器层面:同时向服务器发送请求的数量

  • 吞吐量:

    request/second

    pages/second

    bytes/second

  • 吞吐率:

  • 响应时间:客户端发送请求后,服务器作出回应后返回给client的时间

    前端响应:前端拿到服务端返回的数据后,浏览器渲染到曾献的时间

    系统响应时间:包含了请求时间、数据传输时间、应用服务处理时间、数据库时间等

  • 点击量

  • 点击率:同一时间,用户的点击率

# 并发用户、响应时间与吞吐量之间的关系

  • 当系统并发用户数较少时,系统的吞吐量也低,系统处于空闲状态,我们往往把这个阶段称为 “空闲区间”。
  • 当系统整体负载并不是很大时,随着系统并发用户数的增长,系统的吞吐量也会随之呈线性增长,我们往往把这个阶段称为 “线性增长区间”
  • 随着系统并发用户数的进一步增长,系统的处理能力逐渐趋于饱和,因此每个用户的响应时间会逐渐变长。相应地,系统的整体吞吐量并不会随着并发用户数的增长而继续呈线性增长。我们往往把这个阶段称为系统的“拐点”
  • 随着系统并发用户数的增长,系统处理能力达到过饱和状态。此时,如果继续增加并发用户数,最终所有用户的响应时间会变得无限长。相应地,系统的整体吞吐量会降为零,系统处于被压垮的状态。我们往往把这个阶段称为“过饱和区间”

# 场景分析设计

1、用户量访问比较大的功能 2、与金钱相关比较重要的场景 3、影响业务主流程的场景 4、开发人员任务可能存在性能问题的场景 5、应该考虑综合场景,防止线程争用导致现场死锁以及数据库死锁 6、应该做稳定性能场景测试,防止长时间运行导致的内存泄露情况发生

# 硬件指标:

  • cpu 使用率
  • 内存使用率
  • io

# 软件指标

  • 服务器的配置
  • 架构是否合理
  • 数据库方面:
    • 是否有索引
    • 数据库锁
    • 表空间设计是否合理
    • 慢查询等

# 性能测试工具

1、jmeter:开源的 Java 项目

2、loadrunner: