# OPS 第 1 阶段测试计划 ## 1. 文档目标 本文定义 OPS 第 1 阶段后端、前端和端到端测试范围。当前仓库尚未保留实际 `server/`、`web/` 工程;本文作为编码和联调前测试规格,后续实现必须按本文补齐测试。 ## 2. 测试分层 | 层级 | 目标 | 工具建议 | 数据要求 | | --- | --- | --- | --- | | 后端单元测试 | 验证状态机、规则匹配、错误救援、权限判断 | Go `testing` | 不访问外部服务 | | 后端接口测试 | 验证 REST API、统一响应、鉴权、审计 | Go `httptest` | SQLite 内存库或任务指定测试库 | | 后端集成测试 | 验证 PostgreSQL 事务语义、时序库适配、通知适配 | Go 测试套件 | 真实 SQLite 内存库或真实测试服务,不 mock 数据库 | | 前端类型检查 | 验证 TypeScript、API 类型和状态分支 | `pnpm type:check` | 不依赖真实后端 | | 前端组件/页面测试 | 验证 loading、empty、error、success、partial、forbidden 状态 | 项目模板现有测试工具 | 可使用固定响应夹具 | | 端到端测试 | 验证资源到告警、通知、工单、报表闭环 | Playwright 或等价工具 | 连接真实后端 API | 开发期 mock 只能用于前端独立调试。联调、验收和端到端测试必须连接真实后端 API。 ## 3. 后端测试矩阵 | 能力域 | 必测场景 | 测试类型 | 通过标准 | | --- | --- | --- | --- | | 统一响应 | 成功、业务错误、权限错误、系统错误 | 接口测试 | 响应包含 `code`、`message`、`traceId`,错误含建议动作。 | | 资源模型 | 创建、编辑、停用、退役、非法状态恢复 | 单元 + 接口 | 状态机合法,非法流转拒绝并写审计。 | | 采集任务 | 成功、部分成功、超时、凭据错误、连续失败 | 单元 + 集成 | 失败原因可见,连续失败生成内部事件。 | | 时序适配 | 批量写入、范围查询、聚合、降采样、保留策略 | 集成 | 可按 `resource_id + metric_code + 时间范围` 查询。 | | Trap/Syslog | 解析成功、未解析、补规则重放、屏蔽策略 | 接口 + 集成 | 未解析事件保留原文,重放后状态正确。 | | 告警规则 | 阈值触发、恢复、去重、压缩、抑制、升级 | 单元 + 接口 | 告警状态机合法,策略命中可追踪。 | | 通知 | 站内消息、短信、邮件成功和失败 | 集成 | 通知失败不阻塞告警和工单,记录失败原因。 | | 工单 | 创建、接单、转交、挂起、重启、关闭、并发关闭 | 单元 + 接口 | 非法流转拒绝,并发冲突返回当前状态。 | | 权限 | 功能权限、数据权限、越权访问 | 接口 | 越权返回 forbidden,不泄露敏感数据。 | | 报表 | 空范围、大范围、导出、无权限 | 接口 + 集成 | 大范围查询受控,导出写审计。 | ## 4. 前端测试矩阵 | 页面 | 状态覆盖 | 必测动作 | | --- | --- | --- | | 首页总览 | loading、empty、error、success、partial、forbidden、stale | 模块配置保存、局部组件失败、无权限模块隐藏。 | | 综合监控 | loading、empty、error、success、partial、forbidden、stale | 资源筛选、查看详情、采集失败提示、手动刷新。 | | 告警中心 | loading、empty、error、success、partial、forbidden、operating、operation_failed | 确认、忽略、派单、筛选、导出、查看通知记录。 | | 策略与模板 | empty、error、success、forbidden、operation_failed | 创建规则、字段校验、禁用策略、模板变量校验。 | | 通知中心 | loading、empty、error、success、partial、operation_failed | 查看三类渠道记录、失败重发。 | | 工单管理 | loading、empty、error、success、partial、forbidden、operation_failed | 接单、转交、挂起、重启、关闭、并发冲突提示。 | | 报表管理 | loading、empty、error、success、partial、forbidden、stale | 生成、导出、空范围、大范围失败提示。 | | 可视化大屏 | loading、empty、error、success、partial、forbidden、stale | 轮播配置、组件局部失败、刷新时间展示。 | | 权限管理 | empty、error、success、forbidden、operation_failed | 角色授权、数据权限、越权验证。 | ## 5. 端到端验收测试 ### 5.1 主闭环脚本 1. 创建或导入主机、H3C/华三网络设备、数据库、URL/API 样例资源。 2. 配置采集任务和指标阈值。 3. 写入或触发一条可控异常。 4. 在原始事件池查看接收、解析、规则命中记录。 5. 在告警中心确认告警生成、去重、级别和业务上下文。 6. 验证站内消息、短信、邮件三类通知记录。 7. 对告警执行确认并派单。 8. 工单完成接单、处理、关闭。 9. 回到告警详情查看关联工单、处理记录和审计日志。 10. 在首页、大屏、报表查看该故障的统计证据。 ### 5.2 失败救援脚本 | 脚本 | 操作 | 通过标准 | | --- | --- | --- | | 采集失败 | 使用错误凭据触发采集 | 资源详情显示失败原因,写 `collector_runs` 和审计。 | | 未解析 Trap | 投递未知 OID 样例 | `raw_events` 状态为 `unparsed`,补规则后可重放。 | | 通知失败 | 配置不可用短信或邮件测试通道 | 告警可继续处理,通知记录失败,可重试。 | | 自动派单失败 | 创建无匹配处理人的派单规则 | 告警停留待分派,不创建重复工单。 | | 权限拒绝 | 普通账号尝试关闭无权工单 | 返回 forbidden,页面不乐观更新。 | ## 6. 本地验证命令 后端至少运行: ```powershell Set-Location .\server go test ./... go vet ./... ``` 前端初始化后至少运行: ```powershell Set-Location .\web pnpm type:check pnpm lint pnpm build ``` 如果因为私有依赖、网络、凭据或环境限制无法运行,需要在交付说明中记录原因、影响范围和替代验证证据。 ## 7. 测试数据要求 | 数据 | 最小要求 | | --- | --- | | 资源 | 主机、H3C/华三网络设备、数据库、虚拟化、URL/API 各至少 1 类样例。 | | 指标 | CPU、内存、磁盘、接口状态、接口流量、URL 可用性、响应时间。 | | Trap/Syslog | 至少 1 条可解析样例、1 条未解析样例、1 条恢复样例。 | | 告警 | 不同级别至少 3 条,覆盖触发、确认、忽略、恢复、派单。 | | 通知 | 站内消息、短信、邮件成功和失败各至少 1 条记录。 | | 工单 | 创建、接单、转交、挂起、重启、关闭全路径样例。 | | 权限 | 管理员、值班人员、普通只读用户各 1 个。 | ## 8. 质量门禁 - 后端核心状态机和规则逻辑必须有单元测试。 - 所有核心接口必须覆盖成功、失败、无权限、非法状态。 - 前端核心页面必须覆盖 `docs/首期UI状态覆盖.md` 中列出的状态。 - 端到端测试必须能证明主闭环,不得只校验静态页面存在。 - 测试不能使用 mock 数据库替代真实数据库行为。