Sanity 测试是什么
Sanity 测试是在深度测试前快速判定「这次构建或修复是否值得继续测」:用少量核心用例验证主路径能否走通。它与冒烟测试经常被混用——冒烟侧重「新构建与环境基本可用」,Sanity 侧重「本次变更是否合理、深度测试是否有意义」。两者都追求快,不追求覆盖。
基本信息
| 规模 | 几分钟量级,几十条用例以内 |
|---|---|
| 触发时机 | 新构建产出后、修复单回归后、环境变更后 |
| 用例选取 | 核心业务主路径加上本次变更点 |
| 通过标准 | 全部通过才进入深度测试阶段 |
| 与冒烟的区别 | 对象不同:冒烟看构建可用性,Sanity 看变更合理性 |
| 载体 | 自动化用例打标记(如 sanity),作为 CI 首道门禁 |
标记与执行示例
标记与执行示例
pytest -m sanity # 只跑核心 Sanity 集
pytest -m "sanity and sms" # 本次变更涉及短信,再聚焦一点
pytest -m sanity -x # 首个失败立即停止,快速打回构建典型使用场景
- 修复单回归后:先探一条主路径,再投入完整回归
- 每日构建验证:首轮快速确认构建可测
- 环境升级后:验证核心链路在新环境可走通
- 深度回归止损:不通过直接打回,省下数小时无效执行
- 发布窗口前快检:上线前最后一次核心路径确认
- 线上健康巡检:核心接口定时快跑一轮,及时发现链路异常
与冒烟、回归的区别
| 类型 | 目标 | 规模 | 通过后动作 |
|---|---|---|---|
| 冒烟 | 构建与环境基本可用 | 极小 | 进入正式测试 |
| Sanity | 变更合理、值得深测 | 小 | 进入深度回归 |
| 回归 | 既有功能未被破坏 | 大 | 作为发布依据 |
Sanity 集要稳定且快:慢用例和爱抖的用例不要放进来,否则它的价值(早、快、准)全部消失。
Sanity 失败要立即阻断并通知:继续往下跑的每一分钟都是在浪费,早发现才有意义。
Sanity 通过不等于质量保证:覆盖极低,它只回答「值不值得继续测」,不回答「能不能发」。