Files
ops/docs/P1测试计划.md
2026-06-21 17:50:24 +08:00

115 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 数据库替代真实数据库行为。