294 字
1 分钟
每个文件都配测试:VSports 的 Go 质量观
测试目录一眼震撼
server/internal/app/ 里 .go 和 _test.go 一一配对:bulk_sync 有测试、football_quota 有测试、sync_lock 有测试、totp 有测试、security 有测试,连 mysql_deadlock 都有专门的测试。这不是“补测试”,这是测试即设计。
配额账本:上游 API 是花钱的
provider_budget_test.go + provider_usage.go + football_quota_test.go:每次向上游请求都记账,超预算就停。职业联赛数据接口按调用量计费,没有配额账本,半夜一个 bug 能把月预算烧光。我的原则:凡是花钱的调用,必须有计数器和熔断。
同步锁与死锁测试
sync_lock_test.go:定时同步 120 秒一轮,多实例部署时不能重复跑,锁先行。mysql_deadlock_test.go:高并发写赛程时死锁怎么解,测试里先演练一遍再上线。fixture_retention_test.go:历史数据保留策略,旧数据按时归档,库不无限膨胀。
缓存策略
football_cache_policy.go + reference_cache.go:球队、联赛这种几乎不变的引用数据缓存起来,实时比分才走库。动静分离,首页 150 场分页才能稳在毫秒级。
测试覆盖率不是 KPI,是睡眠质量。下篇聊聊后台和 TOTP 登录。