Files
everything-is-suitable/everything-is-suitable-uniapp/docs/RELEASE_TEST_PLAN.md
T
zhangxiang 69da92b58b test: 修复所有已知问题并全面提高测试覆盖率至 90%
KNOWN-007: solarTime.ts 单元测试
KNOWN-008: 消除生产代码中 as any 类型断言
KNOWN-002: 工具层测试覆盖
KNOWN-003: lruCache 边界测试
KNOWN-004: templateService 分支覆盖(100%)
KNOWN-001: 6个业务组件测试
额外修复: searchOptimizer memoize bug, templateService 常量修改 bug

测试覆盖率: 75.71% -> 90.22%, 测试用例: 412 -> 671
2026-08-13 00:09:46 +08:00

12 KiB
Raw Blame History

万事宜 v1.0.0 封版测试计划

版本: 1.0.0 创建日期: 2026-08-12 测试类型: 封版全面测试与验收


一、测试范围与策略

1.1 测试目标

维度 说明 验收标准
功能完整性 所有核心功能模块正常运行 单元测试通过率 ≥ 90%,E2E 核心流程通过率 ≥ 80%
性能稳定性 算法执行效率、页面加载速度 算法执行 < 1s,页面加载 < 3s
兼容性适配 多浏览器/多设备/多平台 主流浏览器正常渲染,无功能性差异
安全性验证 纯客户端数据安全 无 XSS 注入风险,本地存储加密
用户体验 交互流程、国际化、异常处理 9 种语言完整覆盖,异常场景有提示

1.2 测试范围

模块 优先级 测试类型
黄历搜索 (almanac-search) P0 单元测试 + E2E
紫微斗数排盘 (ziwei) P0 单元测试 + E2E + 交叉验证
运势分析 (fortune) P0 单元测试 + E2E
核心算法 (algorithms) P0 单元测试 + 交叉验证
业务服务 (services) P1 单元测试
工具函数 (utils) P1 单元测试
通用组件 (components) P1 单元测试
国际化 (locales) P1 手动验证
页面结构 (pages) P1 单元测试 + E2E

二、测试环境配置

2.1 单元测试环境 (Vitest)

配置项 值
框架 Vitest v4.0.18
环境 jsdom
覆盖率阈值 Lines: 70%, Functions: 70%, Branches: 60%
测试文件匹配 src/**/*.{test,spec}.{js,ts}

2.2 E2E 测试环境 (Playwright)

配置项 值
框架 Playwright v1.57.0
基础 URL http://localhost:5173
浏览器 Chromium (Desktop), Mobile Chrome (Pixel 5), Mobile Safari (iPhone 13)
截图策略 仅失败时截图
Trace 策略 首次重试时记录

2.3 兼容性测试矩阵

浏览器 桌面端 移动端
Chrome ✅ 1440×900 ✅ 375×667 (Pixel 5)
Safari ✅ 1440×900 ✅ 390×844 (iPhone 13)
Firefox ✅ 1440×900 ❌ (未配置)
Edge ✅ 1440×900 ❌ (未配置)

三、测试用例设计

3.1 功能测试用例

3.1.1 黄历搜索模块

编号 测试场景 前置条件 验证点
TC-ALM-001 页面加载 导航到 almanac-search 页 页面标题、搜索面板、模板面板正常渲染
TC-ALM-002 添加搜索条件 进入搜索页面 可添加宜忌条件,条件数量正确递增
TC-ALM-003 删除搜索条件 已添加条件 条件可删除,数量正确递减
TC-ALM-004 执行搜索 至少添加一个条件 调用 searchService,显示结果或空状态
TC-ALM-005 搜索结果排序 有搜索结果 可按日期/匹配度排序,可切换升序/降序
TC-ALM-006 模板选择 选择预置模板 自动填充条件并执行搜索
TC-ALM-007 空状态显示 无搜索条件 显示 EmptyState 组件
TC-ALM-008 错误处理 搜索失败 显示错误信息和重试按钮
TC-ALM-009 关键词搜索 从 URL 携带 keyword 参数 自动执行关键词搜索
TC-ALM-010 加载状态 搜索进行中 显示 LoadingIndicator

3.1.2 紫微斗数排盘模块

编号 测试场景 前置条件 验证点
TC-ZW-001 页面加载 导航到 ziwei 页 显示出生信息表单
TC-ZW-002 日期选择 点击日期选择器 可正确选择出生日期
TC-ZW-003 时辰选择 点击时辰选择器 12 个时辰选项完整
TC-ZW-004 性别切换 点击性别选项 可切换男/女,选中状态高亮
TC-ZW-005 排盘计算 选择日期、时辰、性别 调用 ziweiService.generateChart
TC-ZW-006 宫位展示 排盘完成 12 宫位卡片正确渲染
TC-ZW-007 三方四正分析 排盘完成 三方四正评分正确显示
TC-ZW-008 综合评断 排盘完成 显示整体运势评断文字
TC-ZW-009 空输入验证 未选择日期 排盘按钮不执行计算
TC-ZW-010 算法正确性 已知输入 与已知案例交叉验证(46 项测试)

3.1.3 运势分析模块

编号 测试场景 前置条件 验证点
TC-FT-001 页面加载 导航到 fortune 页 显示日运/月运标签页
TC-FT-002 标签切换 默认日运 可切换到月运标签
TC-FT-003 默认日运选中 首次加载 日运标签默认高亮
TC-FT-004 无排盘数据 未排盘 显示提示信息
TC-FT-005 日期选择器 日运页面 可弹出日期选择器
TC-FT-006 月份选择器 月运页面 可弹出月份选择器
TC-FT-007 四维度建议 有排盘数据 显示事业/财运/感情/健康建议
TC-FT-008 幸运信息 有排盘数据 显示幸运色/数字/方位

3.2 算法交叉验证用例

编号 测试场景 验证点 状态
TC-ALGO-001 黄历宜忌一致性 同一建除日期的宜忌交集 ✅ 68 项测试通过
TC-ALGO-002 紫微斗数交叉验证 已知生辰的排盘结果一致性 ✅ 46 项测试通过
TC-ALGO-003 紫微算法单元测试 32 个排盘算法函数 ✅ 全部通过
TC-ALGO-004 运势策略测试 28 个运势策略场景 ✅ 全部通过
TC-ALGO-005 三方四正测试 9 个三方四正分析场景 ✅ 全部通过

3.3 性能测试用例

编号 测试场景 预期指标 测试方法
TC-PERF-001 紫微排盘算法执行时间 < 500ms 单元测试计时
TC-PERF-002 黄历计算算法执行时间 < 200ms 单元测试计时
TC-PERF-003 页面首次加载时间 < 3s E2E 页面加载计时
TC-PERF-004 搜索结果渲染 < 1s (100 条) 手动测试
TC-PERF-005 长时间使用稳定性 无内存泄漏 手动操作 30 分钟

3.4 国际化验证用例

编号 语言 验证点
TC-I18N-001 简体中文 (zh-CN) 完整翻译
TC-I18N-002 繁体中文 (zh-TW) 完整翻译
TC-I18N-003 英文 (en) 完整翻译
TC-I18N-004 日文 (ja) 完整翻译
TC-I18N-005 韩文 (ko) 完整翻译
TC-I18N-006 法文 (fr) 完整翻译
TC-I18N-007 德文 (de) 完整翻译
TC-I18N-008 西班牙文 (es) 完整翻译
TC-I18N-009 葡萄牙文 (pt) 完整翻译

3.5 安全验证用例

编号 测试场景 验证点
TC-SEC-001 XSS 注入 搜索关键词含 XSS 脚本不执行
TC-SEC-002 本地存储安全 敏感数据不泄露
TC-SEC-003 网络权限 manifest.json 中 INTERNET 权限为 false
TC-SEC-004 隐私政策 首次启动显示隐私政策

四、测试执行流程

4.1 执行顺序

Phase 1: 基线建立
  ├── 运行单元测试套件 (npm run test)
  ├── 运行覆盖率测试 (npm run test:coverage)
  └── 运行 E2E 测试 (npm run test:e2e)

Phase 2: 缺陷修复
  ├── 修复测试失败
  ├── 补充缺失测试用例
  └── 回归验证

Phase 3: 专项测试
  ├── 性能测试
  ├── 兼容性测试
  ├── 安全验证
  └── 国际化验证

Phase 4: 验收报告
  ├── 汇总测试结果
  ├── 缺陷清单与修复建议
  └── 验收结论

4.2 测试命令

# 单元测试
npm run test                    # 运行所有单元测试
npm run test:coverage           # 运行测试并生成覆盖率报告

# E2E 测试
npm run test:e2e                # 运行所有 E2E 测试
npm run test:e2e:ui             # 带 UI 界面的 E2E 测试

# 单文件测试
npx vitest --run src/algorithms/__tests__/almanac.test.ts
npx playwright test e2e/ziwei-chart.spec.ts

五、缺陷管理机制

5.1 缺陷分级

级别 定义 处理要求
P0 (阻断) 核心功能不可用,数据丢失 立即修复,必须在封版前解决
P1 (严重) 功能偏离预期,但可绕过 当日修复
P2 (一般) 界面问题,非核心功能 在封版前解决
P3 (建议) 体验优化建议 记录,后续迭代

5.2 缺陷生命周期

发现 → 记录 → 确认 → 分配 → 修复 → 验证 → 关闭
                                    ↻ 回归测试

5.3 缺陷记录格式

---
ID: BUG-001
模块: almanac-search
级别: P1
描述: 搜索条件为空时点击搜索,错误提示未显示
环境: H5 / Chrome 143
步骤: 1. 进入搜索页 2. 不添加条件 3. 点击搜索按钮
预期: 显示"请添加搜索条件"提示
实际: 无任何反应
状态: 待修复
---

六、当前测试基线 (2026-08-12 更新)

6.1 单元测试

指标 当前值 目标 状态
测试文件数 23 ≥ 19 ✅
测试用例数 412 ≥ 350 ✅
通过率 100% ≥ 90% ✅
执行时间 4.24s < 5s ✅

6.2 覆盖率

模块 指令覆盖率 分支覆盖率 函数覆盖率 状态
整体 75.71% 67.21% 74.07% ⚠️
算法层 91.07% 79.96% 96.22% ✅
服务层 82.65% 64.37% 82.19% ⚠️
工具层 41.73% 45.59% 33.33% ❌
组件层 0% 0% 0% ❌

6.3 E2E 测试

项目 当前值 目标 状态
浏览器 4/5 (Chromium/WebKit/Mobile Chrome/Mobile Safari) 已安装 ✅
测试结果 156/156 通过 全部通过 ✅

七、验收标准

7.1 必须达标项

标准 阈值 验证方式
单元测试通过率 ≥ 90% npm run test
覆盖率 (指令) ≥ 70% npm run test:coverage
覆盖率 (函数) ≥ 70% npm run test:coverage
覆盖率 (分支) ≥ 60% npm run test:coverage
E2E 核心流程通过率 ≥ 80% npm run test:e2e
算法交叉验证 100% 专项测试
无 P0 缺陷 0 缺陷清单

7.2 推荐达标项

标准 阈值 验证方式
算法执行时间 < 1s 性能测试
页面加载时间 < 3s E2E 计时
国际化覆盖 9/9 语言 手动验证
兼容性覆盖 3+ 浏览器 Playwright 矩阵

八、风险与缓解措施

风险 影响 概率 缓解措施
E2E 测试与当前 UI 不匹配 高 高 重写 E2E 测试以匹配当前 UI
组件覆盖率严重不足 中 高 优先补充核心组件测试
国际化 key 缺失 中 中 扫描 i18n 使用情况,补充缺失 key
纯客户端架构安全风险低 低 低 基础安全验证即可
性能瓶颈在算法层 低 低 算法已通过 114 项交叉验证测试

九、测试报告模板

9.1 最终测试报告结构

1. 测试概述
   - 测试范围、时间、环境
   - 总体通过率

2. 测试结果汇总
   - 单元测试:通过/总数
   - E2E 测试:通过/总数
   - 覆盖率:指令/分支/函数

3. 缺陷清单
   - 按严重级别分类
   - 每个缺陷的状态

4. 专项测试结果
   - 性能测试
   - 兼容性测试
   - 安全验证
   - 国际化验证

5. 修复建议
   - 封版前必须修复项
   - 后续迭代建议项

6. 验收结论
   - 是否达到交付标准
   - 签署确认