Every QA interview asks the difference. Most candidates blur the lines. Smoke is “is the build alive?” Sanity is “did the targeted fix work?” Regression is “did anything else break?” They run at different points in the release cycle and have different scope.
Quick comparison
| Smoke | Sanity | Regression | |
|---|---|---|---|
| Answers | Is the build stable enough to test? | Did the targeted fix actually work? | Did anything else break? |
| Scope | Wide, shallow | Narrow, shallow | Wide, deep |
| When | Immediately after every deploy | After every targeted bug fix | Every commit and every release |
| Duration | 1-5 minutes | 5-15 minutes | Hours (or a full nightly run) |
| Automated? | Always | Often manual | Always automated for a mature suite |
| Owned by | CI pipeline | QA, post-fix | QA automation team |
Smoke testing in one paragraph
A smoke test answers one question: does the build work at all? It is the first test that runs after a deploy, takes 60 seconds, and either green-lights the rest of the test cycle or sends the build back. The name comes from hardware: power on the device; if smoke comes out, do not bother running the full diagnostic.
Example. A UPI app smoke pack: the app opens, login works, balance loads, and one rupee can be sent to a saved contact. If any of those four steps fail, the entire QA team stops and asks for a new build.
Sanity testing in one paragraph
A sanity test is narrow and focused. A bug was fixed in the coupon engine. The sanity test exercises the specific scenarios the fix targeted, plus a few obvious sibling cases. Shallow and quick. If it fails, the fix is rejected and goes back to the developer.
Example. Swiggy fixes a bug where the FRESH50 coupon was applying to non-eligible categories. The sanity pack runs FRESH50 on eligible items (works), on non-eligible items (rejected), and on items at the boundary like promotional combos. Five minutes; you ship or you do not.
Regression testing in one paragraph
Regression testing makes sure today's code did not break yesterday's features. It is the test suite that runs on every commit, every nightly build, every release candidate. The bigger the product, the bigger the regression pack. Always automated past a certain product size; the same humans who would otherwise run it are better spent writing new tests or doing exploratory sessions.
Example.IRCTC's Tatkal flow is the highest-stakes regression target on the site. A 0.3-second regression in the payment step is catastrophic at 10:00 a.m. on a Friday. So the regression pack rehearses the full flow: search, select train, fill passenger details, hit payment, receive confirmation, get PNR. Every release.
A decision rule you can actually use
At any point in a release, ask three questions in order:
Common mistakes
Teams confuse the three in three predictable ways:
- Calling regression “sanity” to rationalise running a smaller pack. If you are running 40 tests against the whole product, that is mini-regression, not sanity. Sanity is bug-fix-shaped.
- Skipping smoke because “CI will catch it”. CI usually does, but the four minutes you save when smoke fails fast is the four hours you would otherwise spend chasing failures in environment setup.
- Treating regression as a single big test pass instead of a continuously-running suite. Modern regression runs on every commit, not once before release.
Closing
The three test types are not optional alternatives to each other. A mature release cycle runs all three, at different cadences, with different owners. For a deeper read on every testing type with Indian-context examples, see our companion article on types of software testing. For the 14 rules that keep a regression suite green for years, see test automation best practices.
References
- ISTQB definition: smoke testing · The authoritative one-line definition.
- ISTQB definition: sanity testing
- ISTQB definition: regression testing