# 万事宜 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 执行命令 ```bash # 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 缺陷记录模板 ```markdown | 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 参考文档 - [README.md](../../README.md) — 项目概述与架构 - [RELEASE_TEST_REPORT_2026-08-12.md](../reports/RELEASE_TEST_REPORT_2026-08-12.md) — 上次测试报告 - [vitest.config.ts](../../vitest.config.ts) — 测试配置 - [playwright.config.ts](../../playwright.config.ts) — E2E 配置 ### 10.2 测试验证清单 - [x] 单元测试全部通过 (692/692, 100%) - [x] 代码覆盖率阈值达标 (指令 90.36%, 分支 77.82%, 函数 94.18%) - [x] 性能测试全部通过 (15/15) - [x] 安全测试全部通过 (12/12) - [x] 国际化验证全部通过 (9/9 语言完整) - [x] E2E 测试全部通过 (160/160, 4 浏览器) - [x] H5 构建成功 (504K) - [x] 微信小程序构建成功 (576K) — ✅ 相比此前报告,该问题已修复 - [x] 无 P0 缺陷 (0) - [x] 无 P1 缺陷 (0) - [x] 验收报告已生成 - [x] README 进度已更新