一个基于 C# Windows Forms 开发的 HTTP 并发测试工具,用于测试 Web API 的并发性能和稳定性。
- ✅ HTTP 请求支持:支持 GET 和 POST 请求方法
- ✅ 并发控制:可配置并发数和总请求数
- ✅ User-Agent 管理:内置多种浏览器 UA,支持自定义 UA
- ✅ 变量替换:支持在 URL 和 POST 数据中使用动态变量
- ✅ 实时统计:显示成功/失败数、响应时间、成功率等统计信息
- ✅ JSON/表单数据:自动识别 JSON 和表单格式的 POST 数据
- Windows 操作系统
- .NET 8.0 或更高版本
- Visual Studio 2022 或更高版本(用于编译)
- WodToolKit (版本 1.0.0.2) - 用于 HTTP 请求处理
- 打开
HttpConcurrencyTester.sln解决方案文件 - 还原 NuGet 包
- 按
F5运行项目
# 还原依赖
dotnet restore
# 编译项目
dotnet build
# 运行项目
dotnet run- URL:输入要测试的 API 地址
- 并发数:设置同时发送的请求数量(1-1000)
- 总请求数:设置总共要发送的请求数量(1-10000)
- 请求方法:选择 GET 或 POST
- User-Agent:从下拉列表选择预设 UA 或自定义 UA
- POST 数据:当选择 POST 方法时,填写请求数据
在 URL 和 POST 数据中可以使用以下变量:
| 变量 | 说明 | 示例 |
|---|---|---|
{randphone} |
随机手机号 | 13812345678 |
{timestamp} |
Unix 时间戳(秒) | 1704067200 |
{timestampms} |
Unix 时间戳(毫秒) | 1704067200000 |
{datetime} |
日期时间 | 2024-01-01 12:00:00 |
{date} |
日期 | 2024-01-01 |
{time} |
时间 | 12:00:00 |
{random} |
随机整数 | 123456789 |
{random:min:max} |
指定范围的随机数 | {random:1:100} |
{randstr:length} |
指定长度的随机字符串 | {randstr:10} |
{uuid} |
UUID | 550e8400-e29b-41d4-a716-446655440000 |
URL: https://api.example.com/user?id={random:1:1000}
并发数: 10
总请求数: 100
URL: https://api.example.com/login
请求方法: POST
POST数据: username=user{random}&password=pass{randstr:8}×tamp={timestamp}
URL: https://api.example.com/api/data
请求方法: POST
POST数据: {"phone":"{randphone}","timestamp":{timestampms},"id":"{uuid}"}
工具内置了以下 User-Agent:
- Chrome Windows
- Chrome Mac
- Firefox Windows
- Firefox Mac
- Safari Mac
- Edge Windows
- Opera Windows
- 移动端 Chrome
- 移动端 Safari
测试完成后会显示以下统计信息:
- 成功数:状态码 200-299 的请求数量
- 失败数:其他状态码或异常的请求数量
- 成功率:成功请求占总请求的百分比
- 总耗时:完成所有请求的总时间
- 平均响应时间:每个请求的平均响应时间
- 详细日志:每个请求的状态码和响应时间
HttpConcurrencyTester/
├── Models/ # 数据模型
│ ├── HttpRequestResult.cs # HTTP 请求结果模型
│ └── TestStatistics.cs # 测试统计信息模型
├── Services/ # 业务服务层
│ ├── UserAgentManager.cs # User-Agent 管理器
│ ├── RandomDataGenerator.cs # 随机数据生成器
│ ├── VariableReplacer.cs # 变量替换器
│ ├── FormDataParser.cs # 表单数据解析器
│ └── HttpTestService.cs # HTTP 测试服务
├── Form1.cs # 主窗体(UI 逻辑)
├── Form1.Designer.cs # 窗体设计器代码
├── Form1.resx # 窗体资源文件
├── Program.cs # 程序入口
└── HttpConcurrencyTester.csproj # 项目文件
- .NET 8.0 - 开发框架
- Windows Forms - UI 框架
- WodToolKit - HTTP 请求库
- C# - 编程语言
项目采用分层架构设计,将业务逻辑与 UI 逻辑分离:
- Models 层:定义数据模型,包括请求结果和统计信息
- Services 层:封装业务逻辑,包括 HTTP 请求处理、变量替换、数据生成等
- UI 层:
Form1.cs仅负责用户界面交互和显示逻辑
这种设计使得代码结构清晰,易于维护和扩展,同时便于单元测试。
- 请合理设置并发数,过高的并发可能导致目标服务器压力过大
- 确保有权限对目标 URL 进行测试
- POST 数据支持 JSON 和表单格式,工具会自动识别
- 变量替换不区分大小写
- 测试过程中请勿重复点击"开始测试"按钮
本项目仅供学习和测试使用。
- 🔄 代码重构:采用分层架构,将业务逻辑与 UI 逻辑分离
- ✨ 新增 Models 层:定义数据模型(HttpRequestResult、TestStatistics)
- ✨ 新增 Services 层:封装业务服务(UserAgentManager、RandomDataGenerator、VariableReplacer、FormDataParser、HttpTestService)
- 🎯 代码优化:提高代码可读性和可维护性
- 🔒 线程安全:使用线程安全的统计计数机制
- 初始版本
- 支持 GET/POST 请求
- 支持并发控制
- 支持变量替换
- 支持自定义 User-Agent
- 实时显示测试结果