Files
everything-is-suitable/docs/plans/v1.0.0-RELEASE-TEST-PLAN.md
T
zhangxiang 7d93c13b18 chore: 完成v1.0.0最终验收,更新测试报告与文档
新增CSP安全配置与对应测试用例,补充并发负载测试,更新README进度与统计数据,新增最终验收报告与测试计划文档,修复已知测试问题
2026-08-13 09:31:11 +08:00

18 KiB
Raw Blame History

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

版本: v1.0.0 创建日期: 2026-08-13 测试负责人: AI 自动化测试 状态: 已完成


一、测试范围与目标

1.1 测试目标

对万事宜 v1.0.0 进行系统性、全面性的封版测试与验收,确保:

  1. 功能完整性 — 所有核心功能模块正确运行,无 P0/P1 缺陷
  2. 性能稳定性 — 算法执行时间、页面加载时间、长时间运行稳定性达标
  3. 兼容性适配 — 主流浏览器、设备、操作系统适配正常
  4. 安全性验证 — 无 XSS 等安全漏洞,数据存储安全
  5. 用户体验 — 国际化完整、UI 一致性、异常处理友好

1.2 测试范围

模块 子模块 测试重点
算法层 紫微斗数排盘、黄历计算、运势推演、三方四正、真太阳时 算法正确性(交叉验证)、边界条件、异常输入
服务层 紫微服务、黄历服务、运势服务、搜索服务、模板服务 业务逻辑正确性、数据流完整性
工具层 存储、缓存、导出、错误处理、性能监控、搜索优化 功能正确性、边界条件、异常处理
组件层 搜索面板、结果卡片、历史面板、导出面板、空状态等 渲染正确性、交互行为、状态管理
页面层 黄历搜索、紫微斗数排盘、运势分析、订阅管理 页面渲染、用户交互、导航流程
国际化 9 种语言 键值完整性、翻译一致性、UI 适配
构建部署 H5 构建、Docker 部署 构建成功、静态资源正确

1.3 排除范围

项目 原因
微信小程序构建 @dcloudio/vite-plugin-uni v3 alpha 兼容性限制,已知问题
Firefox E2E 测试 沙箱环境兼容性限制,建议在 CI 标准环境中运行
真机 App 测试 当前测试环境仅支持模拟器/H5
后端服务测试 纯客户端架构,零后端依赖

二、测试架构

2.1 测试分层

┌─────────────────────────────────────────────┐
│           E2E 测试 (Playwright)              │
│  ┌─────────┐ ┌──────────┐ ┌──────────────┐ │
│  │ Chromium│ │ WebKit   │ │ Mobile Chrome │ │
│  │ Desktop │ │ Safari   │ │ Pixel 5      │ │
│  └─────────┘ └──────────┘ └──────────────┘ │
│  ┌──────────┐                               │
│  │Mobile    │                               │
│  │Safari    │                               │
│  │iPhone 13 │                               │
│  └──────────┘                               │
├─────────────────────────────────────────────┤
│         专项测试 (Vitest)                     │
│  ┌──────────┐ ┌───────┐ ┌────────────────┐ │
│  │ 性能测试  │ │安全测试│ │ 国际化完整性测试 │ │
│  └──────────┘ └───────┘ └────────────────┘ │
│  ┌──────────┐ ┌───────┐                    │
│  │ 稳定性测试│ │兼容性 │                    │
│  └──────────┘ └───────┘                    │
├─────────────────────────────────────────────┤
│         单元测试 (Vitest + jsdom)            │
│  ┌──────────┐ ┌────────┐ ┌──────────────┐ │
│  │ 算法层    │ │ 服务层  │ │ 工具层       │ │
│  │ 22个文件  │ │ 5个文件 │ │ 6个文件      │ │
│  └──────────┘ └────────┘ └──────────────┘ │
│  ┌──────────┐ ┌────────┐                    │
│  │ 组件层    │ │ 页面层  │                    │
│  │ 6个文件   │ │ 3个文件 │                    │
│  └──────────┘ └────────┘                    │
└─────────────────────────────────────────────┘

2.2 测试工具链

工具 用途 版本
Vitest 单元测试 + 专项测试 v4.0.18
Playwright E2E 测试 v1.57.0
jsdom DOM 模拟环境 v29.1.0
@vue/test-utils Vue 组件测试 v2.4.9
@vitest/coverage-v8 覆盖率报告 v4.0.18

三、测试环境配置

3.1 执行环境

项目 配置
操作系统 macOS (arm64) — 已验证
操作系统 Windows (x64) — ⏸️ 待 CI 验证
操作系统 Linux (x64) — ⏸️ 待 CI 验证
Node.js ≥ 20.0.0
npm ≥ 9.0.0
内存 ≥ 8GB
磁盘 ≥ 10GB 可用空间

多 OS 说明: 本应用为纯客户端 UniApp 应用,核心算法逻辑与操作系统无关,H5 构建产物为纯静态资源。E2E 测试已在 4 种浏览器上验证通过。建议在 CI 流水线中增加 Linux (Ubuntu) 构建与测试步骤。

3.2 浏览器矩阵

浏览器 类型 设备模拟 是否启用
Chromium Desktop 桌面 Chrome
WebKit Desktop 桌面 Safari
Mobile Chrome Mobile Pixel 5
Mobile Safari Mobile iPhone 13
Firefox Desktop 桌面 Firefox ⏸️ (沙箱限制)

3.3 H5 构建环境

项目 配置
构建命令 npm run build:h5
输出目录 dist/build/h5
部署方式 Docker + Nginx 静态部署
开发服务器 npm run dev:h5 (端口 5173)

四、测试用例设计

4.1 单元测试 (共 35 文件,~685 用例)

4.1.1 算法层 (22 文件)

测试文件 当前用例数 测试重点
almanac.test.ts 24 黄历基础计算、宜忌判断
calendar.test.ts 22 公历/农历转换、节气计算
enums.test.ts 32 枚举定义完整性、映射关系
fortune.test.ts 15 运势生成逻辑、多维评分
fortuneStrategy.test.ts 28 运势策略模式、不同策略输出
sanFangSiZheng.test.ts 9 三方四正分析、星曜关系
types.test.ts 17 类型定义、类型守卫
ziweiAlgorithm.test.ts 32 紫微斗数排盘、安星法
solarTime.test.ts 28 真太阳时计算
almanac-cross-validation.test.ts 68 黄历算法交叉验证
ziwei-cross-validation.test.ts 46 紫微算法交叉验证
performance.test.ts 7 算法执行性能基准
security.test.ts 8 安全验证
stress.test.ts 4 长时间使用稳定性
i18n-completeness.test.ts 32 国际化完整性
小计 ~372

4.1.2 服务层 (5 文件)

测试文件 当前用例数 测试重点
almanacService.test.ts 8 黄历服务业务逻辑
fortuneService.test.ts 12 运势服务组合逻辑
searchService.test.ts 6 搜索服务、条件过滤
templateService.test.ts 10 模板服务、模板管理
ziweiService.test.ts 7 紫微服务编排
小计 ~43

4.1.3 工具层 (6 文件)

测试文件 当前用例数 测试重点
errorHandler.test.ts 错误处理、异常捕获
exportImport.test.ts 6 导出导入功能
lruCache.test.ts 缓存策略、LRU 逻辑
performanceMonitor.test.ts 27 性能监控、指标收集
searchOptimizer.test.ts 搜索优化、防抖
storage.test.ts 14 本地存储读写
小计 ~47

4.1.4 组件层 (6 文件)

测试文件 测试重点
EmptyState/index.test.ts 空状态渲染
ExportPanel/index.test.ts 导出面板交互
SearchConditionPanel/index.test.ts 条件面板交互
SearchHistoryPanel/index.test.ts 历史面板交互
SearchResultCard/index.test.ts 结果卡片渲染
SearchResultList/index.test.ts 结果列表渲染

4.1.5 页面层 (3 文件)

测试文件 测试重点
ziwei/index.test.ts 紫微斗数页面渲染与交互
fortune/index.test.ts 运势分析页面渲染与交互
push-subscription/index.test.ts 推送订阅页面交互

4.2 专项测试

4.2.1 性能测试 (TC-PERF)

用例 ID 场景 阈值 优先级
TC-PERF-001 紫微排盘算法 100 次迭代 < 500ms P0
TC-PERF-002 黄历计算 50 次迭代均耗时 < 200ms/次 P0
TC-PERF-002b 批量计算一年黄历 (365天) < 5000ms P1
TC-PERF-003 日运生成 50 次迭代均耗时 < 200ms/次 P0
TC-PERF-003b 月运生成 12 个月 < 200ms P1
TC-PERF-003c 年运生成 5 年 < 200ms P1
TC-PERF-005 紫微排盘 100 次重复稳定性 退化率 < 20% P1
TC-PERF-005b 黄历计算 100 次重复稳定性 退化率 < 20% P1
TC-PERF-005c 运势生成 100 次重复稳定性 退化率 < 20% P1
TC-PERF-005d 混合场景 50 次组合调用稳定性 平均耗时 < 1000ms P1
TC-PERF-006-001 并发 10 次紫微排盘 全部成功且 < 2000ms P1
TC-PERF-006-002 并发 20 次黄历计算 全部成功且 < 2000ms P1
TC-PERF-006-003 混合并发 5 组排盘+黄历+运势 全部成功且 < 3000ms P1
TC-PERF-006-004 高负载 20 次并发运势计算 全部成功且无数据错误 P1
TC-PERF-E2E-001 黄历搜索页面加载 < 3s P0
TC-PERF-E2E-002 紫微斗数页面加载 < 3s P0
TC-PERF-E2E-003 运势分析页面加载 < 3s P0
TC-PERF-E2E-004 移动端 375px 加载 < 3s P1
TC-PERF-004b 平板 768px 加载 < 3s P1

4.2.2 安全测试 (TC-SEC)

用例 ID 场景 验证点 优先级
TC-SEC-001 网络权限安全 INTERNET 权限为 false P0
TC-SEC-001b 版本号验证 versionName = 1.0.0 P0
TC-SEC-002 隐私政策配置 配置隐私政策模板 P1
TC-SEC-003 XSS 注入防护 HTML 特殊字符转义 P0
TC-SEC-003b XSS 多种攻击向量 3 种 XSS 载荷均被转义 P0
TC-SEC-004 存储键名安全 使用命名空间前缀 P1
TC-SEC-004b 敏感信息防护 无密码/token 等敏感词 P1
TC-SEC-005 iOS 隐私配置 NSPrivacyTracking = false P1
TC-SEC-E2E-001 E2E XSS 注入验证 XSS 脚本不执行 P0
TC-SEC-E2E-002 页面内容安全 无外部脚本引用 P1
TC-SEC-E2E-002b Content-Type 验证 响应为 text/html P1
TC-SEC-E2E-003 localStorage 安全 无敏感信息存储 P1

4.2.3 国际化验证 (TC-I18N)

语言 代码 验证点 优先级
简体中文 zh-CN 基准语言,键值完整 P0
繁体中文 zh-TW 与基准一致,无缺失/多余 P0
英文 en 与基准一致,无缺失/多余 P0
日文 ja 与基准一致,无缺失/多余 P1
韩文 ko 与基准一致,无缺失/多余 P1
德文 de 与基准一致,无缺失/多余 P1
法文 fr 与基准一致,无缺失/多余 P1
西班牙文 es 与基准一致,无缺失/多余 P1
葡萄牙文 pt 与基准一致,无缺失/多余 P1

4.3 E2E 测试 (共 39 用例 × 4 浏览器 = 156)

测试套件 用例数 覆盖范围
黄历搜索功能 E2E 6 日期选择、宜忌展示、条件搜索
运势分析功能 E2E 10 日/月/年运、多维运势、幸运信息
紫微排盘功能 E2E 9 排盘输入、宫位展示、星曜信息
关键词搜索功能 E2E 3 搜索输入、结果展示、无结果处理
页面加载性能 E2E 5 各页面加载时间、响应式布局
安全验证 E2E 4 XSS 注入、内容安全、存储安全
Web 平台兼容性 3 响应式布局、移动端适配

五、测试执行流程

5.1 执行顺序

阶段一:单元测试回归
  └─ 运行全部单元测试 (685 用例)
  └─ 生成覆盖率报告
  └─ 验证阈值达标

阶段二:专项测试执行
  ├─ 性能测试 (15 用例)
  ├─ 安全测试 (12 用例)
  ├─ 国际化完整性验证 (9 语言)
  └─ 稳定性测试 (4 用例)

阶段三:E2E 测试执行
  ├─ Chromium (39 用例)
  ├─ WebKit Safari (39 用例)
  ├─ Mobile Chrome (39 用例)
  └─ Mobile Safari (39 用例)

阶段四:构建验证
  └─ H5 构建测试
  └─ 构建产物完整性检查

阶段五:缺陷管理与修复
  └─ 缺陷分类与优先级排序
  └─ P0/P1 缺陷修复
  └─ 修复验证

阶段六:验收报告生成
  └─ 测试结果汇总
  └─ 验收标准对照
  └─ 正式验收结论

5.2 执行命令

# 1. 单元测试 + 覆盖率
cd everything-is-suitable-uniapp
npm run test:coverage

# 2. 专项测试(性能、安全、国际化、稳定性)
npx vitest --run src/algorithms/__tests__/performance.test.ts
npx vitest --run src/algorithms/__tests__/security.test.ts
npx vitest --run src/algorithms/__tests__/i18n-completeness.test.ts
npx vitest --run src/algorithms/__tests__/stress.test.ts

# 3. E2E 测试
npm run test:e2e

# 4. H5 构建验证
npm run build:h5

六、验收标准

6.1 硬性标准(必须全部满足)

标准 阈值 验证方式
单元测试通过率 ≥ 90% npm run test:coverage
代码覆盖率 (指令) ≥ 70% vitest 覆盖率报告
代码覆盖率 (函数) ≥ 70% vitest 覆盖率报告
代码覆盖率 (分支) ≥ 60% vitest 覆盖率报告
E2E 核心流程通过率 ≥ 80% npm run test:e2e
算法交叉验证 100% 交叉验证测试套件
算法执行时间 < 500ms 性能测试套件
页面加载时间 < 3s E2E 性能测试
国际化覆盖 9/9 语言完整 i18n 完整性套件
浏览器兼容性 ≥ 4/5 浏览器 E2E 多浏览器测试
安全验证 全部通过 安全测试套件
无 P0 缺陷 0 缺陷清单

6.2 验收决策矩阵

类别 允许 不允许
P0 缺陷 0 ≥ 1 → 阻塞发版
P1 缺陷 ≤ 3 且无功能阻塞 ≥ 4 或功能阻塞 → 建议修复后发版
P2 缺陷 无数量限制 不阻塞发版
覆盖率 指令 ≥ 70% 指令 < 70% → 需补充测试
性能退化 单次 < 20% 单次 ≥ 20% → 需定位优化

七、缺陷管理机制

7.1 缺陷分级

级别 定义 响应要求
P0 核心功能不可用、数据丢失、安全漏洞 立即终止测试,修复后重新回归
P1 功能异常但可绕过、性能严重退化 24 小时内修复,修复后重新回归
P2 非核心功能异常、UI 小问题 可接受,记录到后续迭代
P3 体验优化、文档问题 记录到后续迭代

7.2 缺陷生命周期

发现 → 记录 → 评估 → 修复 → 验证 → 关闭
  ↑                                  |
  └────────── 回归不通过 ────────────┘

7.3 缺陷记录模板

| ID | 模块 | 级别 | 描述 | 复现步骤 | 预期结果 | 实际结果 | 状态 |
|----|------|------|------|---------|---------|---------|------|

八、测试报告输出

8.1 报告内容

测试报告应包含以下内容:

  1. 测试结果汇总 — 总体通过率、各类型测试结果
  2. 代码覆盖率 — 各模块覆盖率数据
  3. 性能测试结果 — 各场景性能数据
  4. 安全验证结果 — 安全测试通过情况
  5. 国际化验证结果 — 各语言验证结果
  6. E2E 测试结果 — 各浏览器通过情况
  7. 缺陷清单 — 已修复/已知缺陷
  8. 验收标准对照 — 标准达成情况
  9. 验收结论 — 通过/不通过/有条件通过
  10. 附录 — 运行命令、测试环境

8.2 报告格式

  • 文档格式: Markdown
  • 文件命名: RELEASE_TEST_REPORT_YYYY-MM-DD.md
  • 存储路径: docs/reports/

九、风险与缓解措施

风险 影响 概率 缓解措施
覆盖率下降 验收不通过 补充测试用例
性能退化 验收不通过 代码优化或调整阈值
E2E 测试 flaky 误报失败 失败重试、人工确认
新引入缺陷 发版延迟 严格回归测试
环境问题 测试阻塞 多环境备选方案

十、附录

10.1 参考文档

10.2 测试验证清单

  • 单元测试全部通过
  • 代码覆盖率阈值达标
  • 性能测试全部通过
  • 安全测试全部通过
  • 国际化验证全部通过
  • E2E 测试全部通过
  • H5 构建成功
  • 无 P0 缺陷
  • 验收报告生成
  • README 进度更新