cloud-disk-sync 0.1.0

a cloud disk sync tool
Documentation
# 企业级网盘同步工具测试套件设计


## 1. 测试策略概述


### 核心原则


1. **分层测试**:单元测试 (Unit) -> 集成测试 (Integration) -> 系统测试 (System) -> 端到端测试 (E2E)
2. **真实场景**:模拟多文件、大文件、深层目录、网络抖动等真实环境。
3. **故障注入**:通过中间件或装饰器模式模拟网络延迟、丢包、权限拒绝等。
4. **性能基线**:建立基准 (Baseline),持续监控吞吐量与资源消耗。
5. **安全合规**:覆盖认证、加密、日志审计。
6. **可重复性**:使用 Docker 和 Mock 服务确保环境一致性。

---

## 2. 详细测试场景


### 2.1 文件一致性验证 (Consistency)


| ID       | 场景   | 描述                      | 验证点                       |
|:---------|:-----|:------------------------|:--------------------------|
| CONS-001 | 基础同步 | 单文件、小文件(<1MB)、大文件(>1GB) | MD5/SHA256 一致,元数据保留       |
| CONS-002 | 批量同步 | 1000+ 小文件、深层目录(10层+)    | 文件数量、结构一致,无遗漏             |
| CONS-003 | 变更检测 | 内容追加、重命名、移动、属性修改        | 增量同步正确,不触发全量重传            |
| CONS-004 | 删除同步 | 源端删除、目标端删除              | 同步策略 (Mirror/Backup) 正确执行 |
| CONS-005 | 冲突处理 | 双端同时修改同一文件              | 生成冲突副本或按策略覆盖              |

### 2.2 多租户与隔离 (Multi-tenancy)


| ID     | 场景   | 描述          | 验证点         |
|:-------|:-----|:------------|:------------|
| MT-001 | 资源隔离 | 用户 A/B 并发同步 | 互不干扰,数据不串流  |
| MT-002 | 权限控制 | 只读账户尝试写入    | 操作被拒绝,系统不崩溃 |

### 2.3 网络故障模拟 (Resilience)


| ID      | 场景    | 描述                       | 验证点           |
|:--------|:------|:-------------------------|:--------------|
| RES-001 | 网络中断  | 同步中途断网,随后恢复              | 自动重试,最终一致,无损坏 |
| RES-002 | 网络抖动  | 高延迟 (500ms+)、随机丢包        | 吞吐量下降但任务成功    |
| RES-003 | 服务限流  | 模拟 429 Too Many Requests | 指数退避重试生效      |
| RES-004 | 服务端错误 | 模拟 500/503 错误            | 错误报告准确,任务不卡死  |

### 2.4 性能基准 (Performance)


| ID       | 场景     | 数据集             | 指标               |
|:---------|:-------|:----------------|:-----------------|
| PERF-001 | 小文件吞吐  | 10,000 个 1KB 文件 | 文件/秒 (TPS)       |
| PERF-002 | 大文件带宽  | 10 个 1GB 文件     | MB/秒 (Bandwidth) |
| PERF-003 | 内存占用   | 长时间运行 (24h)     | 内存无泄漏            |
| PERF-004 | CPU 占用 | 高并发计算哈希         | CPU 使用率峰值        |

### 2.5 安全与合规 (Security)


| ID      | 场景   | 描述           | 验证点          |
|:--------|:-----|:-------------|:-------------|
| SEC-001 | 传输加密 | 抓包分析         | 全程 TLS,无明文传输 |
| SEC-002 | 静态加密 | 检查本地缓存/临时文件  | 敏感数据加密存储     |
| SEC-003 | 审计日志 | 关键操作 (删除/覆盖) | 日志记录时间、用户、动作 |

### 2.6 CLI 用户体验 (UX)


| ID     | 场景   | 描述                   | 验证点                  |
|:-------|:-----|:---------------------|:---------------------|
| 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 等真实服务。