发布与运行期验证

把 smoke、canary、shadow、synthetic checks、rollback verification 和生产反馈回流放进同一个发布后质量体系里理解。

#type / synthesis #status / growing #tech / dev / test

[!info] related notes

发布与运行期验证

范围

这篇笔记讨论的是系统发布后、运行中仍然需要进行的质量验证。

为什么要把这些内容放在一起理解

很多团队默认认为“测试在发布前结束”,结果会遗漏一整类真实风险:

  • 环境配置错误
  • 部署链路错误
  • 真实流量下的行为漂移
  • 回滚脚本无效
  • 监控和告警根本抓不到事故

这类问题往往不是单元测试或集成测试能提前完全覆盖的。

smoke test

smoke 的目标不是重新验证全部业务,而是确认关键功能和关键依赖至少还能活着。

它更像:

  • 最小可用性检查
  • 环境是否基本正确
  • 发布是否明显破坏系统

canary

canary 的价值是把风险限制在小流量里,而不是一次性把新版本推给全量用户。

它适合回答:

  • 新版本在真实环境下是否稳定
  • 是否出现特定用户群或流量类型的问题
  • 是否值得继续扩大发布范围

shadow

shadow 更适合不想直接影响用户决策、但想比较新旧行为的场景。

对 agent 和 ranking 类系统尤其有价值,因为很多变化不是 crash,而是行为偏移。

synthetic checks

synthetic monitor 的价值是持续、定时地从外部视角检查关键路径。

它和 E2E 的区别在于:

  • E2E 更多用于开发和回归
  • synthetic checks 更多用于运行中持续看活性和可用性

rollback verification

回滚流程如果从来没验证过,真正出事故时通常不可靠。

所以成熟团队不会只验证“能部署”,还会验证:

  • 能不能回滚
  • 回滚后配置是否正确
  • 数据兼容性是否仍成立
  • 告警是否恢复正常

生产反馈为什么是测试体系的一部分

真实事故、线上 bug、工单和用户反馈,不是测试体系的失败证明,而是测试体系最宝贵的输入源之一。

更成熟的闭环是:

incident / feedback -> defect report -> regression test / eval sample -> process improvement

也就是说,生产环境不是测试的对立面,而是测试体系的延伸。

agent 场景下要额外关注什么

对 agent 来说,发布后的验证还要额外补:

  • prompt / model diff eval
  • shadow traffic
  • 小流量行为对比
  • 非确定性案例回流

因为 agent 的很多风险不会表现成“程序挂了”,而是输出质量漂移。

最短记忆方式

发布不是测试的终点;真正闭环的测试体系,必须把运行期验证和生产反馈接回来。

参考资料

创建于 2026/4/23 更新于 2026/5/27