# 企业级网盘同步工具测试套件设计
## 1. 测试策略概述
### 核心原则
1. **分层测试**:单元测试 (Unit) -> 集成测试 (Integration) -> 系统测试 (System) -> 端到端测试 (E2E)
2. **真实场景**:模拟多文件、大文件、深层目录、网络抖动等真实环境。
3. **故障注入**:通过中间件或装饰器模式模拟网络延迟、丢包、权限拒绝等。
4. **性能基线**:建立基准 (Baseline),持续监控吞吐量与资源消耗。
5. **安全合规**:覆盖认证、加密、日志审计。
6. **可重复性**:使用 Docker 和 Mock 服务确保环境一致性。
---
## 2. 详细测试场景
### 2.1 文件一致性验证 (Consistency)
| CONS-001 | 基础同步 | 单文件、小文件(<1MB)、大文件(>1GB) | MD5/SHA256 一致,元数据保留 |
| CONS-002 | 批量同步 | 1000+ 小文件、深层目录(10层+) | 文件数量、结构一致,无遗漏 |
| CONS-003 | 变更检测 | 内容追加、重命名、移动、属性修改 | 增量同步正确,不触发全量重传 |
| CONS-004 | 删除同步 | 源端删除、目标端删除 | 同步策略 (Mirror/Backup) 正确执行 |
| CONS-005 | 冲突处理 | 双端同时修改同一文件 | 生成冲突副本或按策略覆盖 |
### 2.2 多租户与隔离 (Multi-tenancy)
| MT-001 | 资源隔离 | 用户 A/B 并发同步 | 互不干扰,数据不串流 |
| MT-002 | 权限控制 | 只读账户尝试写入 | 操作被拒绝,系统不崩溃 |
### 2.3 网络故障模拟 (Resilience)
| RES-001 | 网络中断 | 同步中途断网,随后恢复 | 自动重试,最终一致,无损坏 |
| RES-002 | 网络抖动 | 高延迟 (500ms+)、随机丢包 | 吞吐量下降但任务成功 |
| RES-003 | 服务限流 | 模拟 429 Too Many Requests | 指数退避重试生效 |
| RES-004 | 服务端错误 | 模拟 500/503 错误 | 错误报告准确,任务不卡死 |
### 2.4 性能基准 (Performance)
| PERF-001 | 小文件吞吐 | 10,000 个 1KB 文件 | 文件/秒 (TPS) |
| PERF-002 | 大文件带宽 | 10 个 1GB 文件 | MB/秒 (Bandwidth) |
| PERF-003 | 内存占用 | 长时间运行 (24h) | 内存无泄漏 |
| PERF-004 | CPU 占用 | 高并发计算哈希 | CPU 使用率峰值 |
### 2.5 安全与合规 (Security)
| SEC-001 | 传输加密 | 抓包分析 | 全程 TLS,无明文传输 |
| SEC-002 | 静态加密 | 检查本地缓存/临时文件 | 敏感数据加密存储 |
| SEC-003 | 审计日志 | 关键操作 (删除/覆盖) | 日志记录时间、用户、动作 |
### 2.6 CLI 用户体验 (UX)
| UX-001 | 工作流 | 配置 -> 任务 -> 运行 -> 报告 | 流程顺畅,提示清晰 |
| UX-002 | 错误提示 | 密码错误、路径不存在 | 提示具可操作性 (Actionable) |
---
## 3. 测试基础设施实现计划
### 3.1 故障注入层 (`FaultInjectionProvider`)
实现一个包装器 (Wrapper),拦截 `StorageProvider` 的调用:
- **Latency**: 随机增加 `sleep`。
- **Failure**: 随机返回 `SyncError`。
- **Throttling**: 模拟速率限制。
### 3.2 性能测试工具 (`Benchmarker`)
- 自动化生成测试数据集 (使用 `rand` 生成可压缩/不可压缩数据)。
- 嵌入式打点计时,输出 CSV 格式性能报告。
### 3.3 模拟环境
- **WebDAV Mock**: 基于 `warp` 扩展,支持故障注入指令。
- **Docker Compose**: 集成 OpenList 等真实服务。