性能测试工具

1. LoadRunner

HP公司开发的企业级性能测试工具,是最流行的性能测试工具之一。

1.1 四大组件

组件功能
VUGen (Virtual User Generator)录制和创建脚本,生成由虚拟用户执行的C语言脚本代码
Controller组织、驱动、管理测试场景的中央控制台
Analysis查看、分析、比较测试结果
LoadGenerator可单独安装在多台机器上用于产生真正的虚拟用户负载

1.2 工作原理

  1. 通过建立虚拟用户(Virtual Users)代替真正用户操作客户端软件
  2. 使用HTTP协议发送请求到IIS或Apache网络服务器
  3. 负载生成器(Load Generators)产生来自许多虚拟用户的客户端请求
  4. 控制器(Controller)启动和停止负载生成器
  5. 控制器调用已编译脚本和运行时设定来控制负载测试
  6. 测试结束后,分析程序生成报告和图表

2. Apache JMeter

开源的性能测试工具,基于Java语言开发。

2.1 特点

  • 开源免费
  • 纯Java开发,跨平台
  • 支持多种协议:HTTP、HTTPS、FTP、JDBC、LDAP、SMTP等
  • 支持分布式测试
  • 强大的脚本录制和编辑功能
  • 丰富的断言和监听器

2.2 主要功能

  • 负载测试
  • 性能测试
  • 功能测试
  • 压力测试
  • 分布式测试

3. 开源性能测试工具

工具特点
JMeter全能型压测工具
Gatling性能强悍,基于Scala
Locust基于Python的压测工具
nGrinder企业级分布式压测工具
ab (Apache Bench)HTTP协议压测工具
Grinder分布式Web性能测试工具
SiegeWeb压力测试和评测工具
DBMonster数据库压力测试工具

4. 性能测试监控工具

4.1 Prometheus

  • 开源监控系统
  • 时序数据库
  • 灵活的查询语言
  • 现代告警方式

4.2 Grafana

  • 开源分析和监控平台
  • 支持多种数据源
  • 可视化仪表板

4.3 SkyWalking

  • 应用性能监控(APM)
  • 全链路监控
  • 分布式追踪

4.4 ELK (Elasticsearch, Logstash, Kibana)

  • 日志收集与分析
  • 可视化展示

5. 性能测试协议支持

  • HTTP/HTTPS - Web应用
  • WebSocket - 实时通信
  • TCP/UDP - 网络协议
  • Dubbo - 分布式服务框架
  • JDBC - 数据库
  • MQ - 消息队列

6. 性能测试脚本技术

6.1 参数化

将脚本中的固定值(如用户名)替换为变量,从数据文件中读取。

6.2 关联

处理动态变化的Session ID、Cookie等。

6.3 集合点

让所有虚拟用户在某一时刻同时执行某个操作,模拟瞬间高并发。

6.4 思考时间

模拟用户操作间隔时间。

7. 性能测试场景设计要素

  1. 虚拟用户数 - 并发用户数量
  2. 负载策略 - 逐渐增加、阶梯、峰值
  3. 测试数据 - 参数化数据
  4. 业务比例 - 不同业务的混合比例
  5. 监控指标 - 需要监控的性能指标