Files
supply-intelligence/test/STRATEGY.md
2026-05-07 10:16:46 +08:00

76 lines
2.9 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.
# Supply-Intelligence 测试策略
> 版本v1.0 | 状态:初稿
---
## 1. 测试目标
| 目标 | 指标 | 验证方式 |
|------|------|---------|
| 功能正确性 | 所有 AC 通过率 100% | 每个 AC 至少 1 正向 + 1 负向测试用例 |
| 状态机正确性 | 状态迁移符合状态图 | 所有状态转换路径覆盖 |
| 安全性 | 无越权、审计日志完整 | 渗透测试 + 审计追溯 |
| 性能 | 探针 P99 < 50ms扫描完成 < 30min | 负载测试 |
## 2. 测试层级
```
├── 单元测试 (Unit Test)
│ ├── 状态机转换逻辑
│ ├── 探针策略逻辑
│ ├── 扫描比对算法
│ └── 准入测试判定逻辑
├── 集成测试 (Integration Test)
│ ├── 数据库交互(状态变更、审计日志)
│ ├── Redis 缓存交互
│ ├── 供应商 API Mock
│ ├── 邮件/短信网关 Mock
│ └── 向量数据库检索
├── E2E 测试 (End-to-End Test)
│ ├── 探针到状态变更整条链路
│ ├── 扫描到候选模型整条链路
│ ├── 准入测试到上架整条链路
│ └── 账号注册整条链路
└── 稳定性测试 (Stability Test)
├── 7 天连续探针运行
└── 高并发扫描/测试
```
## 3. 测试工具
| 层级 | 工具 | 说明 |
|------|------|------|
| 单元测试 | Go testing + testify + mockery | 覆盖率门槛 domain ≥ 70%、service ≥ 80% |
| 数据库测试 | testcontainers-go (PostgreSQL) | 每次测试启动独立容器 |
| 缓存测试 | miniredis | 轻量级 Redis Mock |
| 供应商 Mock | gock / httptest | 模拟供应商 API 响应 |
| E2E 测试 | 自定义 Go E2E 框架 | 启动完整服务 + 数据库 |
| 稳定性测试 | 自定义脚本 | 7 天连续运行监控 |
## 4. 测试环境
| 环境 | 用途 | 数据 |
|------|------|------|
| 本地开发 | 单元 + 快速集成测试 | 测试数据生成 |
| CI | 自动化单元 + 集成测试 | 测试数据生成 |
| 测试环境 | E2E + 性能基准 | 模拟生产数据 |
| 生产前 | 稳定性验证 | 生产数据副本(脱敏) |
| 生产环境 | 灰度监控 | 真实数据 |
## 5. 测试数据管理
- 供应商 API 响应使用 `test/fixtures/supplier_responses/` 下的 JSON 文件管理。
- 测试用例集使用 `test/fixtures/test_cases/` 下的 YAML 文件管理。
- 每个测试用例自洁,启动前加载固定数据集,结束后清理。
## 6. 特殊测试要求
- **探针测试**:必须覆盖 429 、 401 、 403 、 500 、 503 、超时、空响应、DNS 失败、TCP 超时等所有常见异常场景。
- **状态机测试**:必须覆盖所有状态转换路径,特别是 `active``disabled` 的违规路径必须被拒绝。
- **审计测试**:所有自动化操作必须在 5 秒内生成审计记录,且字段完整。
- **并发测试**:探针任务与运营人员手动操作的并发场景必须测试,验证乐观锁机制。