Smoke vs sanity vs regression testing
Smoke testing is a short set of checks on a new build that decides whether the build is worth testing at all. Regression testing checks that a change broke nothing that used to work. Sanity testing has no single meaning: some teams use it as another name for smoke, others mean a quick check of the core functions on a stable build close to release. Retesting, the one most often confused with regression, re-checks a single fixed defect. Teams use these names differently, so on a new team, ask what each one covers there.
- 4 terms
- smoke, sanity, regression, retest
- Smoke first
- if it fails, testing stops
- 1 question
- to ask on a new team
How to test a new build, step by step
- Step 1
Read what changed
Start from the release notes or the list of fixes in the build: which defects were fixed, which features are new, which parts of the product were touched.
- Step 2
Run the smoke set
Check that the core of the whole product works: the path a typical user takes every day. If a key function fails, stop and return the build with a report.
- Step 3
Retest the fixed defects
Run the tests that failed because of each defect. If time is short, at least repeat the steps that reproduced the failure, and look around the fixed area for a few minutes.
- Step 4
Choose the regression set
Work out what the change could affect. Take the tests of the changed area and its neighbors, the high-priority tests, and the tests of areas where defects have clustered.
- Step 5
Run regression and report
Run the set, file what failed, and say what was checked, what failed and what is still open before release.
The four terms in one line each
Each term answers a different question about a build. Smoke asks whether the build is fit to test at all. Retest asks whether one fixed defect is really gone. Regression asks whether the change broke something else. Sanity is the one whose question depends on who is asking.
Smoke testing
A short set of checks on every new build that decides whether it is worth testing. Also called an intake test or a build verification test.
Sanity testing
Either another name for smoke, or the same core checks run on a stable build close to release. Ask which one your team means.
Regression testing
Checking that a change broke nothing that used to work, in the changed area, in other parts, or in connected systems.
Retesting (confirmation testing)
Checking that a fixed defect's failure no longer happens. It comes before regression and never replaces it.
Why the definitions online disagree
Search for "smoke vs sanity" and you find tables that contradict each other. Some articles put sanity inside regression, others make it a separate step, and each presents its version as the rule. The disagreement is real, and it comes from practice, not from anyone being careless.
A widely used international glossary of testing terms has entries for smoke testing, build verification test, regression testing and confirmation testing. When checked in October 2026, it had no entry for sanity testing at all. The word comes from how teams talk, and teams talk differently.
Two meanings of sanity are common. In the first, sanity and smoke are the same thing. In the second, smoke runs on unstable early builds and sanity runs the same core checks on a stable build close to release. Both are in use, and an interviewer may mean either. Give both and say which one you would expect, and you have answered the question better than any single table.
Smoke and regression are more settled. The glossaries and the common articles agree that smoke is short and decides whether to go on, and that regression looks for side effects of a change.
How to ask on a new team
On your first days on a team, find out what the names mean there before you use them. Ask the questions below, then look at how the suites are named in the team's test management tool. The answers tell you more about the team's process than any definition.
"What is in the smoke set here, and when is it run?"
On every build, on every deployment to the test server, or only before a release.
"When someone here says sanity, what do they mean?"
The smoke set under another name, a pass on the release build, or a quick look at one fix.
"Who chooses the regression set, and from what?"
A fixed suite, a choice made for each change, or both.
"What happens when smoke fails?"
The usual rule is that the build goes back with a report. Find out who makes that call.
"Which of these are automated?"
Smoke and regression are the usual candidates. Know what runs by itself and what is yours.
An example: one change in a practice shop
Shelf is the practice shop the courses use. A customer adds products to the cart, checks out, and pays with a test card; an order is "Awaiting payment" until it is paid. The card 4242 4242 4242 4242 succeeds, and 4000 0000 0000 0002 is declined with "The card was declined. Try another test card."
Suppose a new build arrives with this change note, invented for this guide: "Fix: a declined card now shows its message on the payment page." Here is how the four kinds of testing divide the work. Note that the regression set is chosen from what the change can reach, not from the whole product.
Change: Fix: a declined card now shows its message on the payment page.
1. Smoke (the core of the whole product):
Sign in. Add Steel kettle 1.7 l to the cart. Check out.
Pay with 4242 4242 4242 4242. The order shows Paid.
If any step fails: stop, return the build with a report.
2. Retest (the fixed defect):
Pay with 4000 0000 0000 0002.
Expected: "The card was declined. Try another test card."
The order stays Awaiting payment.
3. Regression (what the change can reach):
The other refused cards, e.g. 4000 0000 0000 9995:
"The card has insufficient funds. Try another test card."
A successful payment after a declined one.
The orders page shows each order in the right state.
"Cancel order" on an order that is Awaiting payment.
Plus the high-priority cases: sign in and out, add to cart, checkout.
Not in this set: search, catalog filters, the theme switch.Smoke, critical path, extended
Many testers use a three-layer order on a new build, and the author teaches it as a working habit. Smoke comes first: the minimum that shows the build is alive. The critical path comes next: what typical users do every day, plus the new and changed features. Extended testing comes last: everything else, down to rare cases.
Retest and regression are a different axis. They are about a change rather than about depth: after a fix, retest the fix, then run regression around it. On a real build you do both, inside the layers. A full regression run usually happens before a release, often during a code freeze when only critical fixes go in. Running it after every single fix is wasteful; collect fixes into a build and test the build.
Mix-ups that come up in interviews
Interviewers ask about these terms because the mix-ups below are common. Each one has a short, correct answer.
"Retest and regression are the same"
Retest checks the fixed defect. Regression checks everything the fix could have broken.
"Regression means re-running the failed tests"
That is retest. Regression mostly runs tests that passed before.
"Smoke is a quick look at the new feature"
Smoke checks the core of the whole build. The new feature belongs to the critical path.
"If smoke fails, I test the rest anyway"
Testing stops and the build goes back. Results on a broken build are not worth the time.
"After every change, re-run everything"
Exhaustive testing is not possible. Choose the set by what the change can affect.
"The regression set never changes"
It grows and changes with each release, as features and defects are added.
Where to learn this
Questions and answers
What is the difference between smoke and sanity testing?
It depends on the team. In one usage they are the same thing. In the other, smoke checks the core of an unstable early build, and sanity runs the same core checks on a stable build close to release. Ask which one your team means.
Is sanity testing a subset of regression testing?
Some articles say so, others treat it as a separate step, and the common glossaries do not settle it. What is stable is that regression looks for side effects of a change. Whether a quick sanity pass counts as part of it is the team's convention.
What is the difference between retesting and regression testing?
Retesting checks that one fixed defect is gone, by running the test that failed. Regression testing checks that the fix, or any other change, broke nothing else. You retest first, then run regression.
What happens if the smoke test fails?
Testing of that build stops, and the build goes back to the developers with a report of what failed. A build that cannot sign in or take a payment is not worth deeper testing.
Are smoke and regression tests automated?
Often. Both are run again and again, which makes them the usual candidates for automation. A retest of a one-off fix is usually done by hand.
What is a build verification test?
Another name for a smoke test: a short set of checks that decides whether a new build is ready for planned testing. Intake test is a third name for the same thing.
More guides
- Start hereHow to become a software testerWhat a software tester does, what to learn and in what order, and how to practice without a job: six steps from zero to a small portfolio.
- Bug reportsHow to write a bug reportThe fields of a bug report, a template to copy, a complete example from a practice shop, severity and priority with examples, and the mistakes that send a report back to you.
- Test casesHow to write test casesThe parts of a test case, a template, a complete example and its negative cases, the difference between a test case, a test scenario and a checklist, and how to fix a weak case.
- Test designBoundary value analysis and equivalence partitioning, with examplesHow to split inputs into equivalence partitions, pick boundary values with the 2-value and 3-value methods, and choose the step, worked through four fields of a practice shop.
- Bug reportsSeverity vs priority, with examplesWhat severity and priority mean, who sets each, the scales teams use, and all four combinations worked through on one practice shop, with a short answer for interviews.
- Test documentationTest case vs test scenario vs checklistWhat a test scenario, a checklist and a test case are, one shop feature written all three ways, when to use which, and how a scenario turns into checklists and test cases.
- Test designHow to test a login pageTest cases for a login page derived from partitions, a decision table, boundaries and states, plus the security checks every login page needs, worked through on a practice shop.
- API testingAPI testing with Postman: a beginner's guideHow to send your first requests in Postman, read the response, keep addresses and tokens in variables, test 401 and 403, add a status check and run a collection, on a practice shop's API.
- API testingHow to test a REST API manually: a checklistA manual REST API testing checklist without code: reading the OpenAPI documentation, status codes, body, headers, 401 versus 403, negative cases and state, with example requests to a practice shop.
- DatabasesSQL for testers: check what the app savedHow testers use SQL: the queries that check what an online shop saved after an order (order row, items, payments), SELECT, WHERE, GROUP BY and JOIN on a real schema, and the mistakes to avoid.
- Web testingChrome DevTools for testers: how to collect evidence for a bug reportWhich Chrome DevTools panels a tester needs and how to use them to collect the Console error, the request, the server's response and the storage values that make a web bug report reproducible.
- Mobile testingHow to test a mobile appWhat breaks only on a phone, how to choose between an emulator, a simulator and a real device, how to read the app's log and its traffic through a proxy, and a checklist to start from.
See the first course
The full outline of every course is available: you can see each lesson before you start.
