首页/开发/软件测试速查/冒烟测试(Smoke Test)
测试基础与分层67 条

冒烟测试(Smoke Test)

对构建产物做快速的基础验证:关键功能可用、服务能启动、核心接口返回正常;失败即拒绝进入后续测试阶段。

软件测试速查开发更新于 2026-10-13

冒烟测试是什么

冒烟测试是对构建产物做快速的基础验证:服务能启动、健康检查通过、核心接口返回正常、关键页面可打开。它用少量最稳定的用例回答一个问题——「这次构建值得深入测试吗」。失败即拒绝进入后续测试阶段,把明显不可用的版本第一时间退回,避免测试资源浪费在跑不起来的包上。

基本信息

目标用少量用例快速判断构建是否值得深入测试
时机部署完成后、回归开始前;回滚后也要重跑
时长预期分钟级,能并行就并行
范围进程存活、健康检查、核心接口、关键页面
失败处置直接退回并通知,不进入完整回归

接口冒烟示例

接口冒烟示例
curl -fsS -o /dev/null https://api.example.com/healthz && echo 'healthz OK'
curl -fsS https://api.example.com/api/v1/version
# -f 让非 2xx 直接失败;-s 静默进度;-S 保留错误输出
# 核心读接口也应纳入:curl -fsS https://api.example.com/api/v1/ping

典型使用场景

  • 部署验证:新版本拉起后先跑冒烟,确认基础可用再开回归。
  • CI 流水线入口:冒烟不过直接终止流水线,节约后续资源。
  • 回滚确认:回滚后重跑冒烟,确认旧版本恢复健康。
  • 环境巡检:定时对测试与预发环境跑一遍,发现沉默故障。
  • 发布前最终检查:上线窗口前对目标环境做一次全面基础验证。
  • 大版本升级后:中间件或依赖升级后快速确认核心链路。

检查项与失败含义

检查项典型断言失败含义
进程与端口端口监听、进程存活启动即失败,部署或配置问题
健康检查healthz 返回 200依赖未就绪或启动未完成
核心接口关键读接口返回结构与状态码正确服务可用但业务逻辑异常
登录链路测试账号能登录拿到凭证鉴权或数据初始化问题
关键页面首页与核心页面可打开网关或静态资源问题
冒烟集合宜小而稳定:只保留部署后必须成立的检查,避免把冒烟做成小回归。
冒烟用例也要有明确断言:只看进程存活不看接口响应,服务半可用时会被放过。
冒烟失败先复跑一次排除环境抖动,但仍失败必须退回:带着红灯进入回归,后面所有失败都无法归因。

易错点

  • 冒烟用例越加越多:从分钟级拖成半小时,失去快速反馈的意义。
  • 只检查进程存活不检查核心接口:容器反复重启时无法及时发现。
  • 冒烟失败仍继续跑回归:大量用例失败分不清是版本问题还是环境问题。
  • 冒烟只在新部署时跑:回滚、配置变更、扩容后无人验证,状态脱节。
  • 用生产环境做破坏性冒烟:基础检查应无副作用,写操作类检查需专用测试数据。

数据来源与参考

  • ISTQB 术语表(smoke test)
  • Google SRE Workbook(发布验证实践)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌