docs: add architecture

This commit is contained in:
lilong.129
2025-05-27 15:28:03 +08:00
parent 3936c0f487
commit 6c60383f70
2 changed files with 260 additions and 1 deletions

259
docs/architecture.md Normal file
View File

@@ -0,0 +1,259 @@
# HttpRunner v5 项目模块功能及依赖关系分析
## 项目概述
HttpRunner v5 是一个开源的通用测试框架,采用 Go 语言编写,支持 API 接口测试、性能测试和 UI 自动化测试。项目融入了大模型技术,支持 Android/iOS/Harmony/Browser 多种系统平台的 UI 自动化测试。
## 核心架构
### 1. 主要模块结构
```
httprunner/
├── cmd/ # 命令行工具入口
├── internal/ # 内部模块
├── pkg/ # 公共包
├── uixt/ # UI 测试扩展模块
├── server/ # HTTP 服务器模块
├── mcphost/ # MCP (Model Context Protocol) 主机模块
├── examples/ # 示例代码
├── tests/ # 测试用例
└── docs/ # 文档
```
## 详细模块分析
### 1. 命令行模块 (cmd/)
**功能**: 提供 `hrp` 命令行工具的各种子命令
**主要文件**:
- `root.go` - 根命令定义和全局配置
- `run.go` - 执行测试用例命令
- `server.go` - 启动 HTTP 服务器命令
- `convert.go` - 格式转换命令
- `build.go` - 插件构建命令
- `pytest.go` - Python pytest 集成命令
- `mcphost.go` - MCP 主机命令
- `scaffold.go` - 脚手架项目创建命令
- `wiki.go` - 文档访问命令
- `adb/` - Android 设备管理工具
- `ios/` - iOS 设备管理工具
**依赖关系**:
- 依赖 `github.com/spf13/cobra` 构建命令行界面
- 调用各个核心模块的功能
### 2. 核心运行器模块
**主要文件**:
- `runner.go` - 核心测试运行器,包含 HRPRunner、CaseRunner、SessionRunner
- `testcase.go` - 测试用例定义和加载
- `step.go` - 测试步骤接口定义
- `step_*.go` - 各种类型的测试步骤实现
**功能**:
- **HRPRunner**: 全局运行器,管理 HTTP 客户端、配置等
- **CaseRunner**: 单个测试用例运行器,处理参数化和解析
- **SessionRunner**: 会话运行器,执行具体的测试步骤
**支持的步骤类型**:
- `step_request.go` - HTTP 请求步骤
- `step_api.go` - API 调用步骤
- `step_testcase.go` - 嵌套测试用例步骤
- `step_websocket.go` - WebSocket 通信步骤
- `step_ui.go` - UI 自动化步骤
- `step_transaction.go` - 事务步骤
- `step_rendezvous.go` - 集合点步骤
- `step_thinktime.go` - 思考时间步骤
- `step_shell.go` - Shell 命令步骤
- `step_function.go` - 自定义函数步骤
### 3. 内部模块 (internal/)
**功能**: 提供内部工具和辅助功能
**主要子模块**:
- `builtin/` - 内置函数和工具
- `config/` - 配置管理
- `json/` - JSON 处理工具
- `sdk/` - SDK 相关功能
- `version/` - 版本信息
- `wiki/` - 文档相关
- `scaffold/` - 脚手架模板
- `httpstat/` - HTTP 统计
- `utf7/` - UTF-7 编码处理
### 4. UI 测试扩展模块 (uixt/)
**功能**: 提供跨平台 UI 自动化测试能力
**核心文件**:
- `driver.go` - 驱动器接口定义
- `device.go` - 设备抽象接口
- `android_*.go` - Android 平台实现
- `ios_*.go` - iOS 平台实现
- `harmony_*.go` - Harmony 平台实现
- `browser_*.go` - 浏览器平台实现
- `mcp_server.go` - MCP 服务器实现
- `cache.go` - 缓存管理
**平台支持**:
- **Android**: 基于 ADB 和 UIAutomator2
- **iOS**: 基于 WebDriverAgent (WDA)
- **Harmony**: 基于 HDC (Harmony Device Connector)
- **Browser**: 基于 WebDriver 协议
**AI 集成**:
- `driver_ext_ai.go` - AI 功能扩展
- `ai/` - AI 相关模块
### 5. 公共包模块 (pkg/)
**功能**: 提供可复用的公共组件
**主要子模块**:
- `gadb/` - Android ADB 工具包装
- `go-ios/` - iOS 设备管理工具
- `ghdc/` - Harmony HDC 工具包装
### 6. HTTP 服务器模块 (server/)
**功能**: 提供 Web 界面和 API 服务
**主要文件**:
- `main.go` - 服务器主入口
- `app.go` - 应用路由和中间件
- `ui.go` - Web UI 处理
- `device.go` - 设备管理 API
- `uixt.go` - UI 测试 API
- `context.go` - 上下文管理
- `model.go` - 数据模型
### 7. MCP 主机模块 (mcphost/)
**功能**: 实现 Model Context Protocol 主机功能,支持大模型集成
**特点**:
- 独立的 Git 仓库子模块
- 提供与大模型的通信接口
- 支持自然语言驱动的测试场景
### 8. 配置和解析模块
**主要文件**:
- `config.go` - 全局配置管理
- `parser.go` - 表达式解析器
- `parameters.go` - 参数化处理
- `loader.go` - 文件加载器
**功能**:
- 支持 YAML/JSON 格式的测试用例
- 变量替换和表达式计算
- 参数化测试支持
### 9. 插件系统
**主要文件**:
- `plugin.go` - 插件管理
- `build.go` - 插件构建
**功能**:
- 支持 Go 插件和 HashiCorp 插件
- 自定义函数扩展
- 动态加载插件
## 依赖关系图
```mermaid
graph TD
A[cmd/] --> B[runner.go]
A --> C[server/]
A --> D[uixt/]
B --> E[testcase.go]
B --> F[step_*.go]
B --> G[parser.go]
B --> H[config.go]
F --> D
F --> I[plugin.go]
D --> J[pkg/gadb]
D --> K[pkg/go-ios]
D --> L[pkg/ghdc]
C --> B
C --> D
M[mcphost/] --> N[AI Models]
D --> M
O[internal/] --> B
O --> C
O --> D
```
## 核心依赖库
### 外部依赖
- **Web 框架**: `github.com/gin-gonic/gin`
- **命令行**: `github.com/spf13/cobra`
- **日志**: `github.com/rs/zerolog`
- **WebSocket**: `github.com/gorilla/websocket`
- **JSON 处理**: `github.com/bytedance/sonic`
- **YAML 处理**: `gopkg.in/yaml.v3`
- **插件系统**: `github.com/hashicorp/go-plugin`
- **设备管理**: `github.com/danielpaulus/go-ios`
- **AI 集成**: `github.com/cloudwego/eino`
- **MCP 协议**: `github.com/mark3labs/mcp-go`
### 内部依赖
- **函数插件**: `github.com/httprunner/funplugin`
## 数据流
1. **测试执行流程**:
```
hrp run → HRPRunner → CaseRunner → SessionRunner → Step执行
```
2. **UI 测试流程**:
```
UI Step → uixt.Driver → 平台特定驱动 → 设备操作
```
3. **配置解析流程**:
```
配置文件 → Loader → Parser → 变量替换 → 执行上下文
```
## 扩展性设计
### 1. 插件系统
- 支持 Go 原生插件和 HashiCorp 插件
- 可扩展自定义函数和验证器
- 动态加载和热更新
### 2. 平台扩展
- 统一的 Driver 接口
- 平台特定的实现
- 易于添加新平台支持
### 3. 步骤类型扩展
- IStep 接口设计
- 可插拔的步骤类型
- 支持自定义步骤实现
## 总结
HttpRunner v5 采用模块化设计,具有以下特点:
1. **高度模块化**: 清晰的模块边界和职责分离
2. **跨平台支持**: 统一 API 支持多种平台
3. **可扩展性**: 插件系统和接口设计支持功能扩展
4. **AI 集成**: 通过 MCP 协议集成大模型能力
5. **丰富的测试类型**: 支持 API、UI、性能等多种测试
6. **现代化技术栈**: 使用 Go 语言和现代化的依赖库
该架构设计使得 HttpRunner 既能满足当前的测试需求,又具备良好的扩展性和维护性。

View File

@@ -1 +1 @@
v5.0.0-beta-2505271342
v5.0.0-beta-2505271528