测试与交付闭环
如何为各层选择测试依赖?
| 层级 | 验证对象 | 外部依赖 |
|---|---|---|
| Service 单元测试 | 业务规则、错误传播 | fake Repository |
| Handler 单元测试 | IDL 映射、业务错误码 | fake Service 或 Repository |
| RPC 集成测试 | 生成代码、Codec、Server/Client | 本机临时端口 |
| 依赖集成测试 | SQL、缓存、Registry 适配 | 临时真实依赖 |
| 运行态验收 | 配置、健康、观测、退出 | 接近生产环境 |
如何判定服务可以交付?
- 契约兼容: 新 Client 对旧 Server、旧 Client 对新 Server 的关键调用通过;
- 故障路径: 无实例、数据库失败、timeout、限流、熔断和退出均有证据;
- 可观测: 指标、trace、结构化错误日志包含 service 与 method,不泄露敏感数据;
- 运行态: readiness 摘流后无新请求,终止窗口内完成在途请求并释放资源;
go generate ./...
go test ./...
go test -race ./...
go vet ./...