数字能量小程序测试策略评估报告
日期: 2026-05-31
评估人: 数字能量小程序测试工程师
1. 现有测试资产总览
1.1 后端测试(10个JUnit类,共 2,683 行)
| 测试类 |
被测模块 |
行数 |
覆盖程度 |
质量评估 |
CalculatorServiceTest |
命盘计算引擎 |
401 |
⭐⭐⭐ 高 |
7位置+16位置+卓越数+30位置方案文档 |
UserServiceTest |
用户/登录/配额 |
369 |
⭐⭐⭐ 高 |
注册、推广码、VIP、额度、跨天重置 |
OrderServiceTest |
订单/支付回调 |
365 |
⭐⭐⭐ 高 |
幂等、B端固定佣金、C端比例佣金、多级 |
ChartServiceTest |
命盘CRUD/咨询 |
287 |
⭐⭐⭐ 高 |
创建/配额/Dify降级/查重/删除权限 |
ControllerIntegrationTest |
控制器集成 |
683 |
⭐⭐⭐ 高 |
Auth/Chart/Chat/Pay/Admin/Profile/Commission |
ChatServiceTest |
AI问答 |
166 |
⭐⭐⭐ 高 |
消息保存/配额/权限/Dify降级/顺序验证 |
ConfigServiceTest |
系统配置 |
155 |
⭐⭐⭐ 高 |
缓存/CRUD/类型转换/缺省值 |
CommissionServiceTest |
佣金查询 |
147 |
⭐⭐ 中 |
基础查询覆盖,状态流转测试 @Disabled |
WithdrawServiceTest |
提现管理 |
125 |
⭐⭐ 中 |
Phase 2功能,基础覆盖 |
DifyServiceTest |
AI调用 |
83 |
⭐⭐ 中 |
成功/异常/空响应,工具类覆盖有限 |
1.2 测试资产分布
后端总代码量: ~2,897 行(12 services + 10 controllers)
后端测试代码: ~2,683 行(含 ControllerIntegrationTest)
测试/代码比: ~92%(仅看有测试的模块)
1.3 前端测试
| 类型 |
状态 |
| 单元测试框架 |
❌ 未安装 |
| 组件测试 |
❌ 无 |
| Store 测试 |
❌ 无 |
| E2E 测试 |
❌ 无 |
| 真机测试方案 |
❌ 无 |
2. 覆盖缺口矩阵
2.1 后端完全未覆盖
| 服务 |
行数 |
风险等级 |
说明 |
| WxPayService |
189 行 |
🔴 高 |
微信支付统一下单、回调验证、签名。支付是资金核心 |
| WeChatService |
67 行 |
🟡 中 |
codeToOpenid、消息模板等 |
| AnnotationService |
64 行 |
🟢 低 |
标注/标签CRUD,逻辑简单 |
2.2 控制器分层覆盖
ControllerIntegrationTest 覆盖了 API 层级的集成,但缺少:
- 逐控制器粒度测试(不依赖MockMvc的场景测试)
- AdminController 的配置管理具体功能验证(仅测了 token 拦截)
- ProfileController updateProfile 的字段级验证
| 位置 |
问题 |
影响 |
CommissionServiceTest.testCommissionStatusFlow_pendingToSettled |
pending→settled 状态流转断链 |
佣金状态显示可能不正确 |
CommissionServiceTest.testCommissionStatusFlow_settledToAvailable |
settled→available 自动流转未实现 |
提现管理 Phase 2 依赖此功能 |
CalculatorServiceTest.testExternalPosition_Formulas_Documented |
外部位置独立公式待实现 |
P-X 位置计算可能沿用旧方案 |
CalculatorServiceTest.testExternalPosition_30PositionNaming |
30位置命名方案待实现 |
A-H input层命名不完整 |
2.4 前端测试缺口
| 模块 |
风险 |
理由 |
| TriangleChart.vue (930行) |
🔴 高 |
复杂Canvas/position定位/交互/批注/Tag。视觉呈现无自动化保障 |
| calculator.js (172行) |
🔴 高 |
前端保留计算逻辑,需与后端CalculatorService一致性验证 |
| stores/user.js (132行) |
🟡 中 |
登录、状态管理、配额、分销数据的state变动 |
| stores/chart.js (72行) |
🟡 中 |
咨询流程状态管理 |
| API层 utils/api.js |
🟡 中 |
请求拦截、错误处理、token刷新 |
| 10个页面 |
🟢→🟡 |
页面间导航、参数传递、生命周期 |
3. 分层测试策略建议
3.1 优先级 P0 — 阻塞级(立刻行动)
| # |
测试项 |
类型 |
预估工作量 |
| 1 |
WxPayService 单元测试 |
后端 |
0.5天 |
| 2 |
calculator.js 与 CalculatorService 一致性验证 |
前端+后端 |
0.5天 |
| 3 |
前端单元测试框架搭建 (vitest + @vue/test-utils) |
基础设施 |
0.5天 |
3.2 优先级 P1 — 关键级(当前 Phase 1)
| # |
测试项 |
类型 |
预估工作量 |
| 4 |
TriangleChart.vue 组件测试(渲染+交互) |
前端 |
1天 |
| 5 |
stores/user.js Pinia store 测试 |
前端 |
0.5天 |
| 6 |
stores/chart.js 咨询流程测试 |
前端 |
0.5天 |
| 7 |
WeChatService 单元测试 |
后端 |
0.25天 |
| 8 |
CommissionService 状态流转修复验证 |
后端 |
0.25天 |
| 9 |
AnnotationService 单元测试 |
后端 |
0.25天 |
| 10 |
分销链路E2E测试(推广码→绑定→付费→佣金→面板) |
集成 |
1天 |
3.3 优先级 P2 — 重要级
| # |
测试项 |
类型 |
预估工作量 |
| 11 |
AdminController 管理后台API测试 |
后端 |
0.5天 |
| 12 |
ProfileController 资料更新字段级验证 |
后端 |
0.25天 |
| 13 |
页面导航流测试(首页→登录→命盘→支付→记录→个人) |
前端集成 |
0.5天 |
| 14 |
真机兼容测试矩阵(Top 10设备 + iOS/Android) |
真机 |
1天 |
| 15 |
Canvas截图比对回归方案 |
视觉 |
1天 |
3.4 优先级 P3 — 增强级
| # |
测试项 |
类型 |
预估工作量 |
| 16 |
额度控制边界测试(0/1/3/999 边界) |
后端 |
0.25天 |
| 17 |
API错误码全覆盖验证(每个controller的异常路径) |
后端 |
0.5天 |
| 18 |
云函数冷启动性能测试 |
性能 |
0.5天 |
| 19 |
分销多级(3+层)佣金结算准确性 |
后端 |
0.5天 |
| 20 |
微信审核合规检查自动化 |
合规 |
0.5天 |
4. 测试架构建议
4.1 前端测试技术选型
单元测试: vitest + @vue/test-utils(与 Vite 生态兼容)
组件测试: vitest + @vue/test-utils(渲染 + 交互 + Emits)
Store测试: pinia 测试助手(isolate store from component)
E2E: Playwright(web版)/ 小程序自动化SDK(真机)
覆盖率: c8/istanbul(vitest内置)
4.2 后端测试增强
现有体系: JUnit 5 + Mockito + SpringBootTest + MockMvc
建议补充:
- WxPayService: Mock RestTemplate, 验证签名/参数/回调
- WeChatService: Mock HttpClient, 验证codeToOpenid异常
- AnnotationService: 与已存在的ControllerIntegrationTest互补
- 参数化测试: @ParameterizedTest 覆盖更多生日边界
4.3 calculator.js 一致性验证方案
使用 数据驱动参数化测试,取 N=50+ 组生日分别在前端和后端计算,对比结果:
// 前端数据生成(Node环境运行calculator.js)
const result = calculateTriangle(1990, 6, 15)
// 输出: {I:6, J:6, K:1, L:9, M:3, N:1, O:4, P:9, ...}
// 后端验证(JUnit ParameterizedTest)
@CsvSource({
"1990,6,15,6,6,1,9,3,1,4,9,9,9,2,1,3,7,5,3",
"2009,5,26,5,8,2,9,4,11,6,4,3,7,3,2,5,1,8,9"
})
void testConsistency(int y, int m, int d, ...int expected) {
assertEquals(expected, calculatorService.calculateFullTriangle(y, m, d));
}
4.4 可视化测试方案
TriangleChart 组件验证分为三层:
Layer 1: 数据层 — chart prop 传入不同数据,验证matrix computed正确
Layer 2: 渲染层 — vitest + jsdom 验证 DOM 结构(数字位置、CSS class)
Layer 3: 视觉层 — Playwright 截图比对(需web版),或真机手动
5. 风险矩阵
| 风险 |
概率 |
影响 |
缓解措施 |
| 支付接口Mock与实际微信行为不一致 |
中 |
高 |
沙箱验证+手工回归+日志审计 |
| 小程序Canvas在真机和模拟器渲染差异 |
高 |
中 |
截面对比+真机抽查清单 |
| calculator.js与后端计算逻辑不同步 |
中 |
高 |
一致性参数化测试+CI门禁 |
| 分销佣金计算出现精度问题 |
低 |
高 |
大数据量随机测试+边界验证 |
| 微信审核政策变更导致下线 |
低 |
极高 |
合规检查清单+审核预检流程 |
| AI解读降级策略未被触发 |
中 |
中 |
Dify异常注入测试+Dify健康监控 |
6. 量化目标
| 指标 |
当前 |
目标 (Phase 1) |
| 后端Service测试覆盖率 |
~75% (9/12) |
100% (12/12) |
| 后端Controller测试覆盖率 |
~100% (1集成) |
逐控制器+集成 |
| 前端单元测试覆盖率 |
0% |
>60% (关键模块) |
| 前端组件测试 |
0 |
至少3个 (TriangleChart + 2 stores) |
| E2E链路覆盖 |
0 |
3条核心链路 (咨询+支付+分销) |
| 已知@Disabled测试 |
4个 |
全部修复或明确理由 |
| 真机兼容测试 |
未执行 |
Top 10设备每版本 |
7. 后续行动建议
- 本周: 修复 CommissionService 状态流转、启动 WxPayService 测试
- 下周: 搭建前端测试框架 + calculator.js 一致性验证
- Phase 1 过半: TriangleChart 组件测试 + 分销E2E
- Phase 1 末: 真机兼容矩阵 + 灰度发布前全回归