mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-10 14:28:43 +02:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
# 测试指南
|
||||
|
||||
CyberStrikeAI 的测试包括 Go 单测、配置验证、API 手测、MCP 工具验证和前端冒烟测试。
|
||||
|
||||
## Go 单测
|
||||
|
||||
运行全部内部测试:
|
||||
|
||||
```bash
|
||||
go test ./internal/...
|
||||
```
|
||||
|
||||
运行指定包:
|
||||
|
||||
```bash
|
||||
go test ./internal/workflow
|
||||
go test ./internal/multiagent
|
||||
go test ./internal/handler
|
||||
```
|
||||
|
||||
常见重点包:
|
||||
|
||||
- `internal/security`
|
||||
- `internal/mcp`
|
||||
- `internal/multiagent`
|
||||
- `internal/workflow`
|
||||
- `internal/knowledge`
|
||||
- `internal/project`
|
||||
- `internal/handler`
|
||||
- `internal/c2`
|
||||
|
||||
## 构建测试
|
||||
|
||||
```bash
|
||||
go build -o cyberstrike-ai ./cmd/server
|
||||
```
|
||||
|
||||
构建通过不代表功能正确,但能发现入口、依赖和静态类型问题。
|
||||
|
||||
## 配置验证
|
||||
|
||||
启动前检查:
|
||||
|
||||
- YAML 缩进。
|
||||
- 模型配置。
|
||||
- 数据库路径可写。
|
||||
- `tools_dir`、`roles_dir`、`skills_dir`、`agents_dir` 是否存在。
|
||||
- HTTPS 证书路径是否正确。
|
||||
|
||||
启动后在 Web 设置页测试:
|
||||
|
||||
- OpenAI 兼容模型。
|
||||
- 视觉模型。
|
||||
- 工具列表。
|
||||
- 外部 MCP 状态。
|
||||
|
||||
## API 手测
|
||||
|
||||
访问:
|
||||
|
||||
```text
|
||||
/api-docs
|
||||
```
|
||||
|
||||
重点验证:
|
||||
|
||||
- 登录。
|
||||
- `/api/eino-agent/stream`。
|
||||
- `/api/config`。
|
||||
- `/api/config/tools`。
|
||||
- `/api/knowledge/search`。
|
||||
- `/api/monitor`。
|
||||
|
||||
流式接口经过反向代理时要验证输出是否实时。
|
||||
|
||||
## 工具测试
|
||||
|
||||
新增或修改 `tools/*.yaml` 后:
|
||||
|
||||
- 在工具列表中确认 schema。
|
||||
- 用低风险参数执行。
|
||||
- 检查错误输出是否可读。
|
||||
- 检查超时是否生效。
|
||||
- 检查 HITL 是否按预期拦截。
|
||||
|
||||
不要用生产目标测试新工具。
|
||||
|
||||
## MCP 测试
|
||||
|
||||
外部 MCP:
|
||||
|
||||
- stdio:先在终端独立运行命令。
|
||||
- HTTP/SSE:用 curl 检查连通性。
|
||||
- Web 页面启动后检查 `/api/external-mcp/stats`。
|
||||
- 在对话中确认工具是否可被 `tool_search` 找到。
|
||||
|
||||
## 知识库测试
|
||||
|
||||
步骤:
|
||||
|
||||
1. 放入小型 Markdown 文档。
|
||||
2. 扫描知识库。
|
||||
3. 重建索引。
|
||||
4. 搜索文档中的关键词和同义表达。
|
||||
5. 查看检索日志。
|
||||
|
||||
如果使用真实 embedding API,注意配额和速率限制。
|
||||
|
||||
## 前端冒烟
|
||||
|
||||
修改前端后至少验证:
|
||||
|
||||
- 登录和退出。
|
||||
- 侧边栏对话列表。
|
||||
- 新建对话和流式回复。
|
||||
- 设置页面保存。
|
||||
- 相关业务页面增删改查。
|
||||
- 中英文切换。
|
||||
- 浏览器控制台无明显错误。
|
||||
|
||||
## 高风险模块测试
|
||||
|
||||
C2、WebShell、终端、批量任务只能在授权测试环境验证。测试前确认:
|
||||
|
||||
- 目标是本机、靶机或演练环境。
|
||||
- 命令无破坏性。
|
||||
- HITL 策略符合预期。
|
||||
- 测试后清理会话、payload、上传文件和任务结果。
|
||||
|
||||
## 测试金字塔
|
||||
|
||||
建议测试分层:
|
||||
|
||||
| 层级 | 目标 | 示例 |
|
||||
| --- | --- | --- |
|
||||
| 单元测试 | 纯逻辑正确 | 表达式、chunk、脱敏、超时格式 |
|
||||
| Handler 测试 | HTTP 行为 | 参数校验、状态码、权限 |
|
||||
| 集成测试 | 多模块协作 | 外部 MCP、知识库索引、HITL |
|
||||
| 冒烟测试 | 用户路径可用 | 登录、对话、工具、设置 |
|
||||
| 授权靶场测试 | 高风险能力安全 | C2、WebShell、终端 |
|
||||
|
||||
不要用端到端手测代替单元测试,也不要用单元测试代替高风险靶场验证。
|
||||
|
||||
## 回归测试重点
|
||||
|
||||
修改这些模块时必须扩大测试范围:
|
||||
|
||||
- `internal/handler/config.go`:测模型、知识库、MCP、C2、机器人配置应用。
|
||||
- `internal/multiagent/`:测流式、工具调用、摘要、重试、HITL。
|
||||
- `internal/security/`:测认证、Shell、超时、无输出。
|
||||
- `internal/database/`:测旧数据兼容。
|
||||
- `web/static/js/chat.js`:测对话、过程详情、攻击链、分组。
|
||||
|
||||
## 测试数据管理
|
||||
|
||||
不要用真实客户数据做测试。建议准备:
|
||||
|
||||
- 小型 Markdown 知识库样例。
|
||||
- 本地假 MCP Server。
|
||||
- 本地可控 HTTP 目标。
|
||||
- 无害 WebShell 模拟端。
|
||||
- 临时 SQLite 数据库。
|
||||
|
||||
测试完成后删除临时数据库和上传文件,避免污染开发环境。
|
||||
|
||||
## 失败用例比成功用例更重要
|
||||
|
||||
至少覆盖:
|
||||
|
||||
- 模型 API 401/429/500。
|
||||
- MCP 进程启动失败。
|
||||
- 工具超时。
|
||||
- HITL 拒绝。
|
||||
- 知识库索引中断。
|
||||
- 数据库不可写。
|
||||
- WebShell 目标返回非 200。
|
||||
- C2 关闭时访问接口。
|
||||
|
||||
这些才是用户真实会遇到的问题。
|
||||
|
||||
## 源码锚点
|
||||
|
||||
已有测试集中在:
|
||||
|
||||
- `internal/handler/*_test.go`
|
||||
- `internal/multiagent/*_test.go`
|
||||
- `internal/workflow/*_test.go`
|
||||
- `internal/knowledge/*_test.go`
|
||||
- `internal/security/*_test.go`
|
||||
- `internal/mcp/*_test.go`
|
||||
- `internal/c2/*_test.go`
|
||||
Reference in New Issue
Block a user