epic-005-server-test-migration.md 3.6 KB

Server测试迁移优化 - Brownfield Epic

Epic Goal

将当前web目录中对packages/server的测试迁移到packages/server目录中,实现更好的代码组织和测试架构,使packages/server成为一个真正独立的、可测试的库包。

Epic Description

现有系统上下文

  • 当前测试结构:所有测试集中在web/tests目录下,包括对packages/server的单元测试和集成测试
  • packages/server现状:纯库包,没有任何测试配置和测试文件
  • 技术栈:Node.js + TypeScript + Hono + TypeORM + PostgreSQL + Vitest
  • 集成点:数据库连接、服务层、工具类、API路由

迁移详情

  • 迁移内容:将web/tests中针对packages/server的单元测试和部分集成测试迁移到packages/server目录
  • 保留内容:前端组件测试、E2E测试、需要web特定环境的集成测试
  • 目标架构
    • packages/server成为独立的可测试库包
    • web目录专注于前端和端到端测试
    • 测试工具类在适当位置共享

迁移优先级

  1. 高优先级:服务层单元测试(UserService、FileService、MinioService等)
  2. 中优先级:工具类单元测试(backup、restore、jwt等)
  3. 低优先级:集成测试(需要评估依赖关系)

Stories

  1. Story 005.001: 为packages/server配置测试环境

    • 在packages/server/package.json中添加测试脚本
    • 创建packages/server/vitest.config.ts配置文件
    • 建立packages/server/tests目录结构
    • 配置测试依赖和工具
  2. Story 005.002: 迁移服务层单元测试

    • 迁移UserService相关测试
    • 迁移FileService相关测试
    • 迁移MinioService相关测试
    • 迁移AuthService相关测试
    • 验证迁移后测试正常运行
  3. Story 005.003: 迁移工具类单元测试

    • 迁移backup工具测试
    • 迁移restore工具测试
    • 迁移jwt工具测试
    • 迁移其他工具类测试
    • 验证迁移后测试正常运行
  4. Story 005.004: 评估和迁移集成测试

    • 分析集成测试对web环境的依赖
    • 迁移适合的集成测试到packages/server
    • 更新测试工具类的共享使用
    • 验证集成测试正常运行
  5. Story 005.005: 清理和优化

    • 清理web目录中已迁移的测试文件
    • 更新CI/CD配置支持新的测试结构
    • 更新文档说明新的测试架构
    • 验证整体测试覆盖率

兼容性要求

  • 现有API保持不变
  • 测试功能对等(迁移前后测试覆盖相同功能)
  • 现有测试继续正常工作
  • 性能影响最小
  • CI/CD流水线支持新的测试结构

风险缓解

  • 主要风险:测试迁移导致测试失败或遗漏
  • 缓解措施:逐步迁移,保持新旧测试并行运行一段时间
  • 次要风险:测试工具类依赖关系复杂
  • 缓解措施:仔细分析依赖,创建适当的共享机制
  • 回滚计划:恢复原有测试文件,删除packages/server中的测试配置

完成定义

  • Story 005.001完成且验收标准满足
  • 服务层单元测试成功迁移
  • 工具类单元测试成功迁移
  • 集成测试评估完成
  • 测试通过率100%
  • CI/CD流水线支持新的测试结构

验证检查清单

范围验证

  • Epic目标清晰可实现
  • 故事范围适当
  • 迁移策略合理
  • 集成复杂度可控

风险评估

  • 对现有系统风险低
  • 回滚计划可行
  • 测试覆盖无遗漏
  • 团队具备迁移知识

完整性检查

  • Epic目标清晰可实现
  • 故事范围适当
  • 成功标准可衡量
  • 依赖项已识别