le# 什么是性能测试?

1. 性能测试的定义

性能测试(Performance Test)就是为了发现系统性能问题或获取系统性能相关指标而进行的测试。

一般在真实环境特定负载条件下,通过工具模拟实际软件系统的运行及其操作,同时监控性能各项指标,最后对测试结果进行分析以确定系统的性能状况。

2. 性能测试的类型

2.1 按目标分类

类型说明
性能基准测试在系统标准配置下获得有关的性能指标数据,作为将来性能改进的基线(Baseline)
性能验证测试验证系统是否达到事先已定义的系统性能指标、能否满足系统的性能需求
性能规划测试在多种特定的环境下,获得不同配置的系统性能指标,从而决定系统部署的软硬件配置选型

2.2 按实施方式分类

类型说明
负载测试模拟实际负载,测试系统在不同负载下的性能
容量测试确定系统的最大负载能力
压力测试模拟高负载、异常负载、极限负载,检查系统的抵抗能力
稳定性测试长时间运行,检查系统的稳定性

压力测试(Stress Test):也称为强度测试、负载测试,是模拟实际应用的软硬件环境及用户使用过程的高负载、异常负载、极限负载、超长时间运行,以检查程序对异常情况的抵抗能力,找出性能瓶颈、不稳定或不可靠等问题。

3. 性能测试的具体指标

3.1 响应时间相关

  • 系统/事务平均响应时间(Average System/Transaction Response Time)
  • 连接时间(Connect Time)
  • 发送时间(Sent Time)
  • 处理时间(Process Time)
  • 页面下载时间

3.2 吞吐量相关

  • 事务/交易处理效率(Transactions per Second,==TPS==,最常用)
  • 吞吐率(Throughput):每秒服务器处理的HTTP申请数
  • 每秒点击次数(Hits per Second)
  • 每秒SSL连接数(SSLs Per Second)

3.3 用户相关

  • Page View (PV):用户向Server发送请求,Server处理这样一次真实的请求
  • User View (UV):同一个用户在一个网站上的所有访问操作算一个UV

3.4 资源使用

  • 内存使用
  • CPU使用

4. 性能测试流程

  1. 需求分析 - 确定性能测试目标
  2. 制定测试计划 - 确定测试策略、场景、资源
  3. 测试环境准备 - 搭建与生产环境一致的测试环境
  4. 编写测试脚本 - 使用性能测试工具编写脚本
  5. 执行测试 - 按照场景执行性能测试
  6. 监控分析 - 监控各项性能指标
  7. 性能调优 - 发现瓶颈,优化性能
  8. 输出报告 - 编写性能测试报告

5. 常用性能测试工具

  • LoadRunner - HP性能测试工具
  • JMeter - Apache开源性能测试工具
  • Locust - Python开源性能测试工具
  • Gatling - Scala编写的开源性能测试工具
  • k6 - 现代负载测试工具
  • NeoLoad - 企业级性能测试平台

6. 性能测试场景设计

6.1 基准场景

获取系统在标准配置下的性能基线数据。

6.2 性能验证场景

验证系统是否满足预定义的性能指标。

6.3 负载测试场景

逐步增加负载,测试系统在不同负载下的表现。

6.4 压力测试场景

超出正常负载,检查系统的极限能力和容错性。

6.5 稳定性测试场景

长时间运行,检查系统的可靠性。