safesight-control/docs/unit-test-plan.md

2.0 KiB
Raw Blame History

单元测试开发计划

进度总览

日期 内容 测试数
2026-07-27 P0 全部 + P1 #4 新增 8 个
2026-07-27 清理 9 个静态内容测试 删除 9 个
2026-07-27 修复预存失败 修复 7 个
当前 服务层 13 全过Web 层 103 全过 116 测试0 失败

现有测试评估

现有测试全部集中在 FeatureRegistry.ResolveTemplate(模板选择算法),其他核心函数覆盖率 0%。测试模式存在以下问题:

  1. 依赖实现细节:测试检查具体的模板名(如 std_face_recognition_stream),改配置就失败
  2. 弱断言:部分测试只检查错误,不验证输出正确性
  3. 缺乏端到端:没有测试从输入到输出的完整业务流程
  4. 无数据隔离BuildPipeline 依赖 SQLite、Agent、Registry难以单独测试

测试原则

  • 面向功能行为,不面向实现细节
  • 验证给定输入产生预期输出
  • 测试边界条件(空输入、重复、中文)
  • 测试相互独立,可并行运行

计划

P0 — 直接造成过生产问题的函数

# 函数 测试点 状态
1 deriveSafeInstanceName ASCII名原样返回、中文名生成 hash 前缀
2 cleanSourceNames 去重、去空格、空元素过滤、排序
3 BuildPipeline 创建识别单元、去重、空源保护

P1 — 核心业务流程

# 函数 测试点 状态
4 actionConsoleSave 功能选择+source合并→批量下发
5 actionWizardApply + apiWizardDeviceInfo 设备选择、通道加载
6 injectIntegrationsIntoConfig alarm 注入、storage 注入

P2 — 辅助函数

# 函数 测试点 状态
7 ResolveChannelToSource 通道名→视频源名、_alarm_后缀剥离
8 SaveVideoSourceAsset 新签名 新建、改名、冲突检测