冒烟验证是什么
冒烟验证是发布门禁里的最小验证集:发布完成后对关键路径(登录、下单、支付等 3-5 条主干流程)跑一组自动断言,全部通过才继续放量或宣布发布成功,失败立即停止并进入回退判断。它与健康检查的区别:健康检查只说明进程与端口活着,冒烟走真实业务路径,能发现「服务活着但业务坏了」;它与回归测试的区别:范围刻意压小、只求快速稳定,不追求功能覆盖。用例要稳定、快速、可重复,结果附到发布记录里作为审计与复盘材料。
基本信息
| 范围 | 少量关键路径(3-5 条) |
|---|---|
| 执行 | CI 作业或发布脚本自动运行 |
| 判据 | 断言失败即发布失败 |
| 记录 | 结果附到发布记录 |
| 时点 | 发布后、放量前与切换后 |
典型使用场景
- 蓝绿切换后验证新环境:切流量前先在新环境跑冒烟,通过再切。
- 金丝雀第一批发量后校验:小流量阶段发现问题成本最低。
- 回滚后反向验证:确认旧版本恢复可用,避免二次事故。
- 外部拨测:从用户视角定期拨测主干路径,补充内部观测盲区。
- 多区域发布:逐个区域跑冒烟,未通过的区域停止推进。
- 发布审计:结果留档记录谁、何时、什么版本、是否通过。
冒烟命令
冒烟命令
set -e # 任何一步失败即退出
curl -fsS https://web.example.com/healthz # 进程健康
curl -fsS -X POST https://web.example.com/api/login \
-d '{"u":"smoke"}' | grep -q token # 登录主干
curl -fsS https://web.example.com/api/orders/smoke | grep -q ok # 关键读路径验证层次对比
| 层次 | 回答的问题 | 失败动作 |
|---|---|---|
| 健康检查 | 进程活着吗 | 摘流量或重启 |
| 冒烟验证 | 主干业务可用吗 | 停止放量、评估回退 |
| 回归测试 | 功能都正常吗 | 发布前阻断合入 |
冒烟用例宁少勿滥:每次发布都跑,超过几分钟就没人愿意等;主干之外的场景交给回归测试。
用例要幂等且自给数据:依赖人工预置数据的冒烟会在夜间与节假日误报,把团队耐心消耗光。
不稳定的冒烟比没有更糟:假警报会训练团队忽视结果;不稳定用例先修复再上岗。