Skip to content

thiswod/HttpConcurrencyTester

Repository files navigation

HTTP并发测试工具

一个基于 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 请求处理

编译和运行

使用 Visual Studio

  1. 打开 HttpConcurrencyTester.sln 解决方案文件
  2. 还原 NuGet 包
  3. F5 运行项目

使用命令行

# 还原依赖
dotnet restore

# 编译项目
dotnet build

# 运行项目
dotnet run

使用说明

基本配置

  1. URL:输入要测试的 API 地址
  2. 并发数:设置同时发送的请求数量(1-1000)
  3. 总请求数:设置总共要发送的请求数量(1-10000)
  4. 请求方法:选择 GET 或 POST
  5. User-Agent:从下拉列表选择预设 UA 或自定义 UA
  6. 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

使用示例

GET 请求示例

URL: https://api.example.com/user?id={random:1:1000}
并发数: 10
总请求数: 100

POST 请求示例(表单格式)

URL: https://api.example.com/login
请求方法: POST
POST数据: username=user{random}&password=pass{randstr:8}&timestamp={timestamp}

POST 请求示例(JSON 格式)

URL: https://api.example.com/api/data
请求方法: POST
POST数据: {"phone":"{randphone}","timestamp":{timestampms},"id":"{uuid}"}

内置 User-Agent

工具内置了以下 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 仅负责用户界面交互和显示逻辑

这种设计使得代码结构清晰,易于维护和扩展,同时便于单元测试。

注意事项

  1. 请合理设置并发数,过高的并发可能导致目标服务器压力过大
  2. 确保有权限对目标 URL 进行测试
  3. POST 数据支持 JSON 和表单格式,工具会自动识别
  4. 变量替换不区分大小写
  5. 测试过程中请勿重复点击"开始测试"按钮

许可证

本项目仅供学习和测试使用。

更新日志

v1.1.0

  • 🔄 代码重构:采用分层架构,将业务逻辑与 UI 逻辑分离
  • 新增 Models 层:定义数据模型(HttpRequestResult、TestStatistics)
  • 新增 Services 层:封装业务服务(UserAgentManager、RandomDataGenerator、VariableReplacer、FormDataParser、HttpTestService)
  • 🎯 代码优化:提高代码可读性和可维护性
  • 🔒 线程安全:使用线程安全的统计计数机制

v1.0.0

  • 初始版本
  • 支持 GET/POST 请求
  • 支持并发控制
  • 支持变量替换
  • 支持自定义 User-Agent
  • 实时显示测试结果

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published