Smoke Testing vs Sanity Testing vs Regression Testing

Smoke Testing
Definition: Smoke testing is a quick check that the basic and critical functions of an application work after a new build or deployment. It answers: “Is the build stable enough for deeper testing?”
Key Points
- Executed immediately after a new build is deployed.
- Covers core paths only — broad but shallow.
- If it fails, the build is rejected; no further testing proceeds.
- Often automated in CI/CD; sometimes run by developers or QA.
Analogy
Like turning on a new appliance: if you see smoke, you don’t test every feature.
Example (E-commerce)
- App starts and homepage loads.
- User can log in / sign up.
- Search returns results.
- Item can be added to cart.
- Checkout can be initiated.
Smoke vs. Sanity vs. Regression Testing
Sanity Testing
Purpose: Verify a specific fix or small change works.
- Narrow and deep; focuses only on affected area.
- Run after a bug fix or minor enhancement.
- If it fails, the build isn’t ready for broader testing.
- Example: After fixing a “checkout button” bug, validate the checkout flow only.
Regression Testing
Purpose: Ensure new changes haven’t broken existing features.
- Broad and deep; covers old and new functionality.
- Run after builds, fixes, and enhancements; commonly automated suites.
- Example: After adding PayPal, re-test credit card, wallet, login, search, etc.
Quick Comparison
Feature | Smoke | Sanity | Regression |
---|---|---|---|
Purpose | Basic build stability | Specific fix/enhancement works | No old features broken |
Scope | Broad, shallow | Narrow, deep | Broad & deep |
When | Right after new build | After minor changes | After changes/releases |
Performed by | QA/Dev (often CI) | QA | QA (often automated) |
Decision | Is build testable? | Is area stable? | Is product release-ready? |
Effort | Low | Medium | High |
TL;DR
Smoke → “Can we test this build?”
Sanity → “Did that specific change work?”
Regression → “Did anything else break?”
Tip: In CI/CD, keep smoke checks fast (minutes), run sanity on targeted areas per change, and maintain a robust automated regression suite for confidence before release.