QA StepsJoin the waitlist

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Test plan for one build
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

See the first course

The full outline of every course is available: you can see each lesson before you start.

All courses