Files
CyberStrikeAI/docs/zh-CN/testing.md
T
2026-07-07 14:04:18 +08:00

4.3 KiB
Raw Permalink Blame History

测试指南

CyberStrikeAI 的测试包括 Go 单测、配置验证、API 手测、MCP 工具验证和前端冒烟测试。

Go 单测

运行全部内部测试:

go test ./internal/...

运行指定包:

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

构建测试

go build -o cyberstrike-ai ./cmd/server

构建通过不代表功能正确,但能发现入口、依赖和静态类型问题。

配置验证

启动前检查:

  • YAML 缩进。
  • 模型配置。
  • 数据库路径可写。
  • tools_dirroles_dirskills_diragents_dir 是否存在。
  • HTTPS 证书路径是否正确。

启动后在 Web 设置页测试:

  • OpenAI 兼容模型。
  • 视觉模型。
  • 工具列表。
  • 外部 MCP 状态。

API 手测

访问:

/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