Files
ai-ops/test/STRATEGY.md
2026-05-12 17:48:22 +08:00

74 lines
2.6 KiB
Markdown
Raw Permalink 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.
# AI-Ops 测试策略
> 版本v1.0 | 状态:初稿
---
## 1. 测试目标
| 目标 | 指标 | 验证方式 |
|------|------|---------|
| 功能正确性 | 所有 AC 通过率 100% | 每个 AC 至少 1 个正向 + 1 个负向测试用例 |
| 性能达标 | 首页加载 <2s查询 <3s告警触发 <30s | 负载测试 + 峰值测试 |
| 安全性 | 无越权、无审计日志缺失 | 渗透测试 + 审计追溯测试 |
| 容灾能力 | 单机故障不影响服务 | 混淆工程测试 |
## 2. 测试层级
```
├── 单元测试 (Unit Test)
│ ├── domain 层逻辑测试
│ ├── service 层业务流程测试
│ └── handler 层输入验证测试
├── 集成测试 (Integration Test)
│ ├── 数据库交互测试
│ ├── Redis 缓存交互测试
│ ├── Prometheus 采集测试
│ └── 外部服务 Mock 测试
├── E2E 测试 (End-to-End Test)
│ ├── API 端到端测试
│ ├── WebSocket 实时推送测试
│ └── 前端流程测试
└── 混淆工程测试 (Chaos Test)
├── 单机故障
├── 网络分区
└── 数据库主从切换
```
## 3. 测试工具
| 层级 | 工具 | 说明 |
|------|------|------|
| 单元测试 | Go testing + testify + mockery | 覆盖率门槛 domain ≥ 70%、service/handler ≥ 80% |
| 数据库测试 | testcontainers-go (PostgreSQL) | 每次测试启动独立容器 |
| 缓存测试 | miniredis | 轻量级 Redis Mock |
| HTTP 测试 | httptest + net/http | 标准库内置测试 |
| E2E 测试 | 自定义 Go E2E 框架 | 启动完整服务 + 数据库 + 缓存 |
| 混淆测试 | chaos-mesh / 自定义脚本 | K8s 环境下使用 chaos-mesh非 K8s 使用自定义脚本 |
## 4. 测试环境
| 环境 | 用途 | 数据 |
|------|------|------|
| 本地开发 | 单元 + 快速集成测试 | 测试数据生成 |
| CI | 自动化单元 + 集成测试 | 测试数据生成 |
| 测试环境 | E2E 测试 + 性能基准 | 模拟生产数据(脱敏) |
| 生产前 | 灾备测试 + 回滚演练 | 生产数据副本(脱敏) |
| 生产环境 | 灰度监控 + 告警验证 | 真实生产数据 |
## 5. 测试数据管理
- 测试数据通过 `test/fixtures/` 下的 SQL 脚本和 JSON 文件管理。
- 每个测试用例自洁,启动前加载固定数据集,结束后清理。
- 数据库测试使用编程式事务,测试结束后自动回滚。
## 6. 自动化与 CI 集成
- PR 提交时自动触发单元测试和集成测试。
- 每日定时触发全量 E2E 测试。
- 每周定时触发混淆测试(若有 K8s 环境)。
- 测试失败时自动通知 TechLead 和 QA。