76 lines
2.9 KiB
Markdown
76 lines
2.9 KiB
Markdown
|
|
# 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 秒内生成审计记录,且字段完整。
|
|||
|
|
- **并发测试**:探针任务与运营人员手动操作的并发场景必须测试,验证乐观锁机制。
|