# 2026-05-30 测试能力与质量保障增强 ## 背景 当前仓库虽然已经有: - 单元测试 - SQLite 集成测试 - portal 资产检查 - real-host 验收脚本 但在测试治理上仍有两个明显短板: 1. **缺统一入口** - 质量门禁主要依赖开发者手动记忆若干命令 - 缺少“一键执行 + 汇总结果 + 显式门槛”的脚本化入口 2. **缺覆盖率管理** - 覆盖率门槛写在 `AGENTS.md` - 但没有配置文件和脚本把门槛真正执行出来 - 低覆盖包不够显性,容易在后续迭代中悄悄回落 ## 本次增强 ### 1. 新增统一质量门禁脚本 - [scripts/test/verify_quality_gates.sh](/home/long/project/sub2api-cn-relay-manager/scripts/test/verify_quality_gates.sh) 职责: - 统一执行: - `gofmt -l .` - `go vet ./...` - `go test -cover ./internal/...` - `go test ./tests/integration/... -count=1` - 生成 coverage gate 报告 - 对低覆盖包给出显式 `warn` - 对 core 包低于门槛时直接 `fail` ### 2. 新增覆盖率阈值配置 - [tests/quality/coverage_thresholds.tsv](/home/long/project/sub2api-cn-relay-manager/tests/quality/coverage_thresholds.tsv) 当前策略分两层: - `core` - 当前必须硬门槛通过 - 先覆盖最关键业务包: - `internal/access` - `internal/pack` - `internal/provision` - `watch` - 先做显式非回归治理 - 对已有低覆盖或大体量包给出可见阈值,避免继续恶化 ### 3. 补充脚本自检 - `scripts/test/test_real_host_scripts.sh` 新增了对 `verify_quality_gates.sh` 和阈值配置文件的静态回归 ### 4. 提升低覆盖工具包测试 - [internal/overlay/executor_test.go](/home/long/project/sub2api-cn-relay-manager/internal/overlay/executor_test.go) 新增覆盖: - nested output dir 拒绝 - missing patch 错误路径 - metadata 写入内容 - copyTree 对 `.git` 过滤 - symlink 保留 ## 建议执行方式 后续每次提交前,优先跑: ```bash bash ./scripts/test/verify_quality_gates.sh ``` 如果本次还改了 portal 资产或 real-host 支撑脚本,再补: ```bash bash ./scripts/test/test_tksea_portal_assets.sh bash ./scripts/test/test_real_host_scripts.sh ``` ## 后续建议 下一阶段如果继续增强测试能力,优先做这三件事: 1. 给 `internal/app` 增加不依赖本地监听端口的 handler 级测试,先把 coverage 稳定抬过 `70%` 2. 把 `watch` 包分批提升为 `core` 3. 给 `verify_quality_gates.sh` 增加机器可读输出,例如 JSON 汇总,方便未来接 CI 或日报