Files
everything-is-suitable/everything-is-suitable-uniapp/docs/RELEASE_TEST_PLAN.md
T
zhangxiang 3a428d8977 test: 补充 Phase 3 专项测试并更新测试报告
新增性能基准测试、安全验证、国际化完整性验证等专项测试;
修复 E2E 测试选择器与当前 UI 不匹配问题;
补充多语言 locale 缺失的 key;
更新 Playwright 配置支持跨浏览器测试;
同步更新测试报告与 README 进度章节。

单元测试 408/408 通过,E2E 测试 39/39 通过(4 种浏览器),
专项测试 47/47 通过,整体覆盖率 77.5%。
2026-08-12 20:10:39 +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 单元测试

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

6.2 覆盖率

模块 指令覆盖率 分支覆盖率 函数覆盖率 状态
整体 77.50% 69.09% 76.20% ⚠️
算法层 93.73% 80.66% 98.07%
服务层 81.12% 63.87% 81.42% ⚠️
工具层 41.58% 45.59% 33.33%
组件层 0% 0% 0%

6.3 E2E 测试

项目 当前值 目标 状态
浏览器 未安装 已安装 安装中
测试结果 待运行 -

七、验收标准

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. 验收结论
   - 是否达到交付标准
   - 签署确认