94 lines
2.5 KiB
Markdown
94 lines
2.5 KiB
Markdown
|
|
# 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 或日报
|