Quick comparison
| Type | Main question | Typical scope |
|---|---|---|
| Smoke | Is the build stable enough for deeper testing? | Broad and shallow |
| Sanity | Does this specific change appear to work well enough to continue? | Narrow and focused |
| Regression | Did the change break previously working behaviour? | Risk-based, often broad |
Smoke testing
A smoke suite checks essential functions after a build, deployment, or environment change. It should fail quickly if the product is not testable.
Examples: application starts, login works, critical APIs respond, database connections succeed, and a core transaction completes.
Sanity testing
Sanity testing is focused confirmation around a particular change or fix, usually before spending time on broader regression.
Regression testing
Regression testing protects existing behaviour from unintended impact caused by code, configuration, infrastructure, data, dependency, or environment changes.
Regression should be risk-based rather than a blind rerun of every historical case.
How to choose regression scope
- Changed component
- Dependent services
- Critical business paths
- Historically fragile areas
- Shared libraries
- Data transformations
- Security/permission impacts
- High-value automated tests