f5dec95a83
refactor: 重构页面导航和滚动逻辑,提升用户体验 test: 更新测试配置和用例,增加覆盖率和稳定性 perf: 优化性能指标和阈值,适应开发环境需求 ci: 添加Lighthouse CI工作流,集成性能测试 docs: 更新API文档和健康检查端点 fix: 修复登录页面和表单提交问题 style: 调整响应式布局和可访问性改进 chore: 更新依赖项和脚本配置
4.8 KiB
4.8 KiB
单元测试覆盖率改进计划
当前状态
测试日期: 2026-03-20
当前覆盖率
| 指标 | 当前值 | 目标值 | 差距 |
|---|---|---|---|
| Lines | 29.36% | 80% | -50.64% |
| Statements | 29.5% | 80% | -50.5% |
| Functions | 30.21% | 80% | -49.79% |
| Branches | 22.66% | 80% | -57.34% |
当前阈值设置
coverageThreshold: {
global: {
branches: 35,
functions: 45,
lines: 45,
statements: 45,
},
}
改进策略
阶段一:快速提升(当前 → 50%)
时间: 2周
目标: 将覆盖率从当前水平提升到50%
重点区域:
-
核心业务逻辑
src/app/(marketing)/contact/actions.ts(当前: 0%)src/app/api/admin/content/route.ts(当前: 0%)src/app/api/admin/users/route.ts(当前: 0%)
-
工具函数
src/lib/sanitize.tssrc/lib/csrf.tssrc/lib/constants.ts
-
Hooks
src/hooks/use-media-query.tssrc/hooks/use-scroll-reveal.tssrc/hooks/use-intersection-observer.ts
行动项:
- 为每个核心函数编写基础测试用例
- 覆盖主要成功路径和常见错误场景
- 使用Mock隔离外部依赖
阶段二:稳步推进(50% → 65%)
时间: 3周
目标: 将覆盖率从50%提升到65%
重点区域:
-
UI组件
src/components/ui/button.tsxsrc/components/ui/input.tsxsrc/components/ui/textarea.tsxsrc/components/ui/toast.tsx
-
页面组件
src/app/(marketing)/about/page.tsxsrc/app/(marketing)/products/page.tsxsrc/app/(marketing)/services/page.tsx
行动项:
- 使用React Testing Library测试组件交互
- 测试用户事件(点击、输入、提交)
- 测试组件状态变化和副作用
阶段三:精细打磨(65% → 80%)
时间: 4周
目标: 将覆盖率从65%提升到80%
重点区域:
-
边界情况
- 错误处理逻辑
- 空值/undefined处理
- 异常输入验证
-
复杂场景
- API集成测试
- 数据库交互测试
- 认证/授权流程
行动项:
- 补充边界测试用例
- 测试错误处理和异常流程
- 使用MSW (Mock Service Worker)测试API调用
- 使用Testcontainers测试数据库交互
执行计划
每周任务分配
Week 1-2: 核心业务逻辑
- 联系表单Server Actions测试
- 内容管理API测试
- 用户管理API测试
- 工具函数测试
Week 3-4: UI组件基础
- 表单组件测试
- 按钮组件测试
- Toast组件测试
- 基础页面组件测试
Week 5-7: 页面组件
- 营销页面测试
- 产品页面测试
- 服务页面测试
- 案例页面测试
Week 8-9: 边界情况
- 错误处理测试
- 边界值测试
- 异常流程测试
工具和资源
测试工具
- Jest: 单元测试框架
- React Testing Library: React组件测试
- MSW: API Mock
- Testcontainers: 数据库集成测试
覆盖率报告
# 生成覆盖率报告
npm run test:coverage
# 查看HTML报告
open coverage/lcov-report/index.html
CI集成
# GitHub Actions示例
- name: Run tests with coverage
run: npm run test:coverage:check
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: ./coverage/coverage-final.json
验收标准
阶段一完成标准
- 核心业务逻辑覆盖率 ≥ 70%
- 工具函数覆盖率 ≥ 80%
- Hooks覆盖率 ≥ 60%
- 总体覆盖率 ≥ 50%
阶段二完成标准
- UI组件覆盖率 ≥ 60%
- 页面组件覆盖率 ≥ 50%
- 总体覆盖率 ≥ 65%
阶段三完成标准
- 所有模块覆盖率 ≥ 75%
- 总体覆盖率 ≥ 80%
- CI中强制执行覆盖率阈值
持续改进
定期审查
- 每周审查覆盖率报告
- 识别低覆盖率模块
- 优先测试高影响区域
新代码要求
- 所有新代码必须包含单元测试
- 新代码覆盖率要求 ≥ 80%
- PR必须通过覆盖率检查
重构支持
- 重构前确保有足够的测试覆盖
- 重构后验证测试仍然通过
- 利用测试作为重构的安全网
注意事项
-
不要为了覆盖率而写测试
- 测试应该验证行为,而不是代码行
- 有意义的测试比高覆盖率更重要
-
关注关键路径
- 优先测试核心业务逻辑
- 确保关键功能有充分的测试覆盖
-
保持测试质量
- 测试代码也需要维护
- 定期清理和重构测试代码
- 避免脆弱的测试
-
平衡投入产出
- 80%覆盖率是目标,不是硬性要求
- 某些代码可能不需要测试(如简单的getter/setter)
- 根据风险和重要性分配测试资源