首页/开发/软件测试速查/健全性测试(Sanity Test)
测试基础与分层67 条

健全性测试(Sanity Test)

在冒烟通过后对变更相关的核心功能做窄而深的验证,判断本次修改是否值得继续深入测试;范围比冒烟窄,比回归聚焦。

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

Sanity 测试是什么

Sanity 测试是在深度测试前快速判定「这次构建或修复是否值得继续测」:用少量核心用例验证主路径能否走通。它与冒烟测试经常被混用——冒烟侧重「新构建与环境基本可用」,Sanity 侧重「本次变更是否合理、深度测试是否有意义」。两者都追求快,不追求覆盖。

基本信息

规模几分钟量级,几十条用例以内
触发时机新构建产出后、修复单回归后、环境变更后
用例选取核心业务主路径加上本次变更点
通过标准全部通过才进入深度测试阶段
与冒烟的区别对象不同:冒烟看构建可用性,Sanity 看变更合理性
载体自动化用例打标记(如 sanity),作为 CI 首道门禁

标记与执行示例

标记与执行示例
pytest -m sanity            # 只跑核心 Sanity 集
pytest -m "sanity and sms"  # 本次变更涉及短信,再聚焦一点
pytest -m sanity -x         # 首个失败立即停止,快速打回构建

典型使用场景

  • 修复单回归后:先探一条主路径,再投入完整回归
  • 每日构建验证:首轮快速确认构建可测
  • 环境升级后:验证核心链路在新环境可走通
  • 深度回归止损:不通过直接打回,省下数小时无效执行
  • 发布窗口前快检:上线前最后一次核心路径确认
  • 线上健康巡检:核心接口定时快跑一轮,及时发现链路异常

与冒烟、回归的区别

类型目标规模通过后动作
冒烟构建与环境基本可用极小进入正式测试
Sanity变更合理、值得深测小进入深度回归
回归既有功能未被破坏大作为发布依据
Sanity 集要稳定且快:慢用例和爱抖的用例不要放进来,否则它的价值(早、快、准)全部消失。
Sanity 失败要立即阻断并通知:继续往下跑的每一分钟都是在浪费,早发现才有意义。
Sanity 通过不等于质量保证:覆盖极低,它只回答「值不值得继续测」,不回答「能不能发」。

易错点

  • Sanity 集越加越大:从几分钟膨胀到半小时,快速止损功能名存实亡
  • 与冒烟集重复维护两份:内容几乎相同却各自腐化,合并维护
  • 失败后仍跑全量:浪费预算且掩盖第一现场,应中断并通知
  • 把通过当质量结论:Sanity 覆盖极低,发布依据仍要完整回归

数据来源与参考

  • ISTQB 术语表(sanity test 相关条目)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌