# http-performance-tester **Repository Path**: hulu_fly/http-performance-tester ## Basic Information - **Project Name**: http-performance-tester - **Description**: - 基于场景的压测:支持预定义复杂测试场景,每个场景可包含多个HTTP请求 - 并发模拟:模拟多个虚拟用户同时执行测试 - 全协议支持:支持HTTP/HTTPS协议 - 配置化管理:支持YAML/JSON格式配置文件 - 丰富报告:提供Console、HTML、JSON、CSV等报告格式 - 高性能:基于多线程并发架构,支持高负载测试 - 灵活控制:支持QPS限制、预热时间、执行模式等高级配置 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-03 - **Last Updated**: 2025-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HTTP性能压测工具 v1.0.0 基于JDK 1.8开发的HTTP性能压测工具,支持基于场景的配置化压测,提供多种报告格式和详细的统计分析。 ## ✨ 主要特性 - 🎯 **基于场景的压测**:支持预定义的复杂测试场景 - 🔄 **多请求支持**:每个场景可包含多个HTTP请求 - 👥 **并发模拟**:模拟多个虚拟用户同时执行测试 - 🌐 **全协议支持**:完整支持HTTP/HTTPS协议 - ⚙️ **配置化管理**:支持YAML/JSON格式的配置文件 - 📊 **丰富报告**:提供Console、HTML、JSON、CSV等多种报告格式 - 🚀 **高性能**:基于多线程并发架构,支持高负载测试 - 🎛️ **灵活控制**:支持QPS限制、预热时间、执行模式等高级配置 ## 📋 功能特性 ### 压测配置 - ✅ 并发用户数配置 - ✅ 测试持续时间控制 - ✅ 预热时间设置(渐进式加载) - ✅ QPS(每秒请求数)限制 - ✅ 全局请求头配置 ### HTTP请求支持 - ✅ 支持所有标准HTTP方法(GET、POST、PUT、DELETE等) - ✅ 自定义请求头设置 - ✅ 请求体配置(支持JSON、XML等格式) - ✅ 请求超时控制 - ✅ 期望状态码验证 ### 测试场景 - ✅ 多场景并行执行 - ✅ 场景内请求串行/并行执行 - ✅ 请求间延迟控制 - ✅ 场景重复执行 - ✅ 场景启用/禁用控制 ### 统计分析 - ✅ 成功率统计 - ✅ 响应时间分析(最小值、最大值、平均值、95%分位数、99%分位数) - ✅ QPS/TPS计算 - ✅ 错误分类统计 - ✅ HTTP状态码分布 - ✅ 实时测试进度跟踪 ### 报告生成 - ✅ 控制台实时输出 - ✅ HTML可视化报告 - ✅ JSON结构化数据 - ✅ CSV详细数据导出 ## 🛠️ 技术要求 - **JDK版本**:JDK 1.8或更高版本 - **操作系统**:Windows、Linux、macOS - **内存要求**:建议至少512MB可用内存 - **网络**:稳定的网络连接(用于HTTP请求) ## 🚀 快速开始 ### 1. 编译项目 ```bash # 克隆或下载项目代码 cd http-performance-tester # 使用Maven编译 mvn clean package # 编译完成后会生成 target/http-performance-tester.jar ``` ### 2. 快速测试(命令行模式) ```bash # 测试单个URL,10个并发用户,持续60秒 java -jar target/http-performance-tester.jar --url "https://httpbin.org/json" --users 10 --duration 60 # POST请求测试 java -jar target/http-performance-tester.jar --url "https://httpbin.org/post" --method POST --data '{"test":"data"}' --header "Content-Type=application/json" ``` ### 3. 使用配置文件 ```bash # 生成示例配置文件 java -jar target/http-performance-tester.jar --example my-config.yml # 使用配置文件执行测试 java -jar target/http-performance-tester.jar --config my-config.yml ``` ## 📁 项目结构 ``` http-performance-tester/ ├── src/main/java/com/example/performance/ │ ├── model/ # 数据模型类 │ ├── config/ # 配置加载器 │ ├── executor/ # HTTP请求执行器 │ ├── engine/ # 测试引擎和并发控制 │ ├── statistics/ # 统计分析和报告生成 │ ├── cli/ # 命令行接口 │ └── PerformanceTesterMain.java # 主程序入口 ├── config/ # 配置文件示例 │ ├── example-config.yml # 完整配置示例 │ ├── simple-config.yml # 简单配置示例 │ └── restful-api-config.json # RESTful API测试示例 ├── examples/ # 使用示例脚本 │ ├── run-examples.bat # Windows示例脚本 │ └── run-examples.sh # Linux/macOS示例脚本 ├── pom.xml # Maven项目配置 └── README.md # 项目说明文档 ``` ## ⚙️ 配置文件说明 ### YAML配置示例 ```yaml # 基本测试信息 testName: "API性能测试" description: "测试用户管理API的性能" # 压测参数 concurrentUsers: 20 # 并发用户数 testDurationSeconds: 120 # 测试持续时间(秒) rampUpSeconds: 10 # 预热时间(秒) requestsPerSecond: 50 # QPS限制 # 报告配置 reportFormat: "html" # 报告格式 outputPath: "./results" # 输出目录 # 全局请求头 globalHeaders: User-Agent: "Performance-Tester/1.0" Authorization: "Bearer token123" # 测试场景 scenarios: - name: "用户登录场景" description: "测试用户登录流程" executionMode: "sequential" # 串行执行 delayBetweenRequests: 1000 # 请求间延迟1秒 requests: - name: "用户登录" method: "POST" url: "https://api.example.com/login" timeout: 10000 headers: Content-Type: "application/json" body: | { "username": "testuser", "password": "password123" } ``` ### 配置参数详解 | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `testName` | String | 必填 | 测试名称 | | `description` | String | 可选 | 测试描述 | | `concurrentUsers` | int | 1 | 并发用户数 | | `testDurationSeconds` | int | 60 | 测试持续时间(秒) | | `rampUpSeconds` | int | 0 | 预热时间(秒) | | `requestsPerSecond` | int | 0 | QPS限制,0表示无限制 | | `reportFormat` | String | "console" | 报告格式:console/html/json/csv | | `outputPath` | String | "./results" | 报告输出路径 | ## 🎯 使用场景 ### 1. API接口测试 ```bash # 测试RESTful API的各种操作 java -jar target/http-performance-tester.jar --config config/restful-api-config.json ``` ### 2. 网站性能测试 ```bash # 测试网站首页的加载性能 java -jar target/http-performance-tester.jar --url "https://www.example.com" --users 50 --duration 300 ``` ### 3. 压力测试 ```bash # 高并发压力测试 java -jar target/http-performance-tester.jar --url "https://api.example.com/health" --users 100 --duration 600 --qps 200 ``` ### 4. 回归测试 ```bash # 使用配置文件进行自动化回归测试 java -jar target/http-performance-tester.jar --config regression-test.yml --format json --output ./regression-results ``` ## ⚙️ Spring Boot Web界面配置 本工具支持通过Web界面进行性能测试配置和管理。Web界面基于Spring Boot构建,支持多种配置方式: ### 启动Web界面 ```bash # 启动默认Web界面 java -jar target/http-performance-tester.jar --web # 启动开发环境Web界面 java -jar target/http-performance-tester.jar --web --spring.profiles.active=dev # 指定端口启动Web界面 java -jar target/http-performance-tester.jar --web --server.port=9090 ``` ### 配置文件说明 Spring Boot配置文件位于 `src/main/resources` 目录下: - `application.yml` - 默认配置文件 - `application-dev.yml` - 开发环境配置文件 - `application-prod.yml` - 生产环境配置文件 - `application-test.yml` - 测试环境配置文件 主要配置项包括: - 服务器端口配置 - 日志级别设置 - Web界面标题 - CORS跨域配置 - 报告输出目录设置 ### 环境变量配置 ```bash # 设置环境变量 export SPRING_PROFILES_ACTIVE=prod export SERVER_PORT=9090 # 启动应用 java -jar target/http-performance-tester.jar --web ``` 访问Web界面:http://localhost:8080 ## 📊 报告示例 ### 控制台报告 ``` ======================================== HTTP 性能测试报告 ======================================== 测试名称: API性能测试 测试开始: 2024-01-15 14:30:00 测试结束: 2024-01-15 14:32:00 测试耗时: 2分钟 ========== 基础统计 ========== 总请求数: 2,400 成功请求数: 2,350 失败请求数: 50 成功率: 97.92% ========== 性能指标 ========== QPS (每秒请求): 20.00 TPS (成功事务): 19.58 ========== 响应时间统计 ========== 最小响应时间: 45 ms 最大响应时间: 1,230 ms 平均响应时间: 156.50 ms 95%分位响应时间: 280 ms 99%分位响应时间: 450 ms ``` ### HTML报告 生成美观的HTML可视化报告,包含: - 📈 关键指标图表 - 📋 详细统计表格 - 🎨 响应式设计 - 📱 移动端适配 ## 🔧 命令行参数 | 参数 | 简写 | 说明 | 示例 | |------|------|------|------| | `--config` | `-c` | 配置文件路径 | `-c config.yml` | | `--url` | | 快速测试URL | `--url https://api.test.com` | | `--users` | `-u` | 并发用户数 | `-u 20` | | `--duration` | `-d` | 测试持续时间(秒) | `-d 120` | | `--rampup` | `-r` | 预热时间(秒) | `-r 10` | | `--qps` | `-q` | QPS限制 | `-q 100` | | `--method` | | HTTP方法 | `--method POST` | | `--header` | `-H` | 请求头 | `-H "Auth=Bearer token"` | | `--data` | | 请求体数据 | `--data '{"key":"value"}'` | | `--format` | `-f` | 报告格式 | `-f html` | | `--output` | `-o` | 输出路径 | `-o ./my-results` | | `--validate` | | 仅验证配置 | `--validate` | | `--example` | | 生成示例配置 | `--example config.yml` | | `--help` | `-h` | 显示帮助 | `--help` | | `--version` | `-v` | 显示版本 | `--version` | ## 🎨 高级用法 ### 1. 多阶段压测 ```yaml scenarios: - name: "预热阶段" # 低并发预热 - name: "正常负载" # 正常业务负载 - name: "峰值压测" # 高并发压测 ``` ### 2. 复杂业务流程 ```yaml scenarios: - name: "用户完整流程" executionMode: "sequential" requests: - name: "登录" - name: "浏览商品" - name: "加入购物车" - name: "结算订单" - name: "支付" - name: "退出" ``` ### 3. 并行场景测试 ```yaml scenarios: - name: "读操作压测" executionMode: "parallel" - name: "写操作压测" executionMode: "sequential" ``` ## 🐛 故障排除 ### 常见问题 1. **OutOfMemoryError** ```bash # 增加堆内存 java -Xmx2g -jar target/http-performance-tester.jar --config config.yml ``` 2. **连接超时** ```yaml # 在配置文件中增加超时时间 requests: - timeout: 30000 # 30秒超时 ``` 3. **证书问题** ```bash # 忽略SSL证书验证(仅测试环境) java -Dtrust_all_cert=true -jar target/http-performance-tester.jar ``` ### 日志配置 项目使用Logback日志框架,可以通过以下方式调整日志级别: ```bash # 启用调试日志 java -Dlogback.configurationFile=logback-debug.xml -jar target/http-performance-tester.jar ``` ## 🤝 贡献指南 欢迎提交Issue和Pull Request来改进这个项目! ### 开发环境设置 1. JDK 1.8+ 2. Maven 3.6+ 3. IDE(推荐IntelliJ IDEA或Eclipse) ### 提交规范 - 代码注释使用中文 - 遵循Java编码规范 - 新功能需要添加单元测试 - 提交信息使用中文描述 ## 📄 许可证 本项目基于 MIT 许可证开源 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🙋 支持与反馈 如果您在使用过程中遇到问题或有改进建议,请: 1. 查看本文档的故障排除部分 2. 搜索已有的Issue 3. 创建新的Issue描述问题 4. 提供详细的错误日志和配置信息 --- ## 📈 版本历史 ### v1.0.0 (2025-09-03) - ✨ 初始版本发布 - ✅ 基础HTTP压测功能 - ✅ 多种配置格式支持 - ✅ 丰富的统计报告 - ✅ 命令行和配置文件双模式 --- *感谢使用HTTP性能压测工具!如果这个工具对您有帮助,请给项目点个星⭐*