性能测试工具
1. LoadRunner
HP公司开发的企业级性能测试工具,是最流行的性能测试工具之一。
1.1 四大组件
| 组件 | 功能 |
|---|---|
| VUGen (Virtual User Generator) | 录制和创建脚本,生成由虚拟用户执行的C语言脚本代码 |
| Controller | 组织、驱动、管理测试场景的中央控制台 |
| Analysis | 查看、分析、比较测试结果 |
| LoadGenerator | 可单独安装在多台机器上用于产生真正的虚拟用户负载 |
1.2 工作原理
- 通过建立虚拟用户(Virtual Users)代替真正用户操作客户端软件
- 使用HTTP协议发送请求到IIS或Apache网络服务器
- 负载生成器(Load Generators)产生来自许多虚拟用户的客户端请求
- 控制器(Controller)启动和停止负载生成器
- 控制器调用已编译脚本和运行时设定来控制负载测试
- 测试结束后,分析程序生成报告和图表
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性能测试工具 |
| Siege | Web压力测试和评测工具 |
| 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. 性能测试场景设计要素
- 虚拟用户数 - 并发用户数量
- 负载策略 - 逐渐增加、阶梯、峰值
- 测试数据 - 参数化数据
- 业务比例 - 不同业务的混合比例
- 监控指标 - 需要监控的性能指标