Skip to content
Bugwise
Menu
Tutorials

Regression and Smoke Suites

Build a fast smoke suite that tells you if a build is testable and a regression suite that protects what already works, then learn to pick the right subset for each change, keep suites healthy and decide what to automate.

intermediate Mobile & web
Short on time? Switch to the quick version.

It’s Tuesday, 9:40. A new buildBuildA specific compiled version of the app or website that is ready to be installed or tested.Open in glossary → of the food delivery app QuickBite 3.8.0 has just landed on stagingStagingA pre-release environment that mirrors production as closely as possible.Open in glossary →. Your lead posts in the team chat: “Can you smoke it before stand-up? And we release Thursday, so plan the regression too. The payment SDK was updated in this one.”

That message contains two very different jobs. The first takes 15 minutes and answers one question: is this build even worth testing? The second takes a day or two and answers another: did any of the new work break something that used to work? Both are run from a ready-made list of tests called a suiteTest suiteA group of related test cases that are run together.Open in glossary →, and building good suites is one of the most valuable things a tester does.

Two suites, two questions

Smoke suiteRegression suite
QuestionIs this build testable at all?Did the change break anything that worked before?
SizeAbout 10-20 checksDozens to hundreds of checks
TimeMinutesHours to days (less if automated)
DepthWide and shallow: the main path onlyWide and deep: negative cases, edge cases, platforms
If it failsReject the build, testing stopsReport bugs, decide if the release can go

The essentials

Smoke suite

Smoke testingSmoke testingA quick check of the most important features to decide if a build is stable enough to test further.Open in glossary → is a quick pass over the critical user journeys of a new build: the app starts, you can sign in, find a restaurant, add to cart, pay and see the order. 10-20 checks, a few minutes each, happy path only. If any of them fails, the build goes back to the developers and deeper testing waits. Running a big regression suite on a build where sign-in is broken just wastes everyone’s day.

Regression suite

Regression testingRegression testingRe-running tests to check that new changes didn't break things that used to work.Open in glossary → re-runs existing tests to make sure new changes didn’t break old features. It is not the same as retestingRetestingRunning the same test again to confirm that a reported bug is really fixed.Open in glossary →, which checks that one specific bug is fixed. The suite is built from:

  • Critical user journeys: what customers do most and what earns money.
  • Risk: payments, personal data, anything legal or hard to undo.
  • Bug history: every serious bug that escaped once gets a test so it can’t sneak back.
  • Usage analytics: the screens, devices and OS versions real users actually have.

Prioritize in tiers

TierWhat’s in itWhen it runs
P1Critical journeys and money pathsEvery release, no exceptions
P2Important features, main negative casesMost releases, or when the area changed
P3Rare paths, cosmetic checksBefore big releases, or when time allows

Pick a subset for each change

You rarely have time to run everything. Ask “what did this change touch?” That’s impact analysis. A payment SDK update means the whole checkout and payment area (P1 to P3), a quick pass on things connected to it (promo codes, order creation), and the smoke suite on top. Unrelated areas like ratings can wait.

Keep the suites healthy

Remove tests for features that no longer exist, update tests when the app changes, merge duplicates, and never ignore a flaky testFlaky testA test that sometimes passes and sometimes fails without any change to the code.Open in glossary →: fix it or take it out until it’s fixed. A suite nobody trusts is a suite nobody runs.

Switch to Detailed for the full method: building each suite step by step, a worked smoke suite for QuickBite, impact analysis in depth, manual vs automated regression, how often to run what, and test management tools.

The smoke suite: is this build testable?

Smoke testingSmoke testingA quick check of the most important features to decide if a build is stable enough to test further.Open in glossary → gets its name from hardware: plug in a new circuit board, and if smoke comes out, there’s no point testing further. In software, a smoke suite is a short list of checks covering the critical user journeys of the app, run on every new build before anything else.

A good smoke suite is:

  • Small: around 10-20 checks. If it grows to 60, it’s a mini regression suite.
  • Fast: 10-30 minutes manually, a few minutes automated.
  • Wide and shallow: it touches every critical journey once, on the happy path. No negative cases, no edge cases.
  • Stable: the same checks every time, so a failure means something.
  • Decisive: it ends with a clear yes or no. “Build 409 smoke: passed, testing can start” or “Build 409 rejected: sign-in fails with error 500.”

Smoke checks are also a common entry criterionEntry and exit criteriaConditions that must be met before a test activity can start (entry) or before it counts as done (exit).Open in glossary →: “testing of a build starts only after the smoke suite passes.” That one rule saves teams huge amounts of wasted effort.

The regression suite: did we break what used to work?

A regression is a feature that worked before and stops working after a change. It happens all the time, because code is connected in ways nobody fully sees: a developer changes how prices are rounded for a new currency, and suddenly promo codes give the wrong discount.

Regression testingRegression testingRe-running tests to check that new changes didn't break things that used to work.Open in glossary → means re-running existing tests after a change to catch these side effects. The regression suite is the collection of those tests, usually organized by feature area: Sign in, Address, Search, Cart, Checkout, Tracking, Profile and so on.

Where the tests come from

Don’t build a regression suite by writing a test for every button. Build it from four sources, in this order:

  1. Critical user journeys. The end-to-end paths that matter most: for QuickBite, open app → sign in → choose address → find restaurant → add to cart → pay → track order. If any of these break, the business stops. Write these first; they are the backbone of both suites.
  2. Risk. Where would a bug hurt most? Money (payments, refunds, promo codes, prices), personal data (addresses, cards, passwords), legal duties (age checks for alcohol, consent), and anything hard to undo (canceling a paid order). See severity vs priority for how impact is judged.
  3. Bug history. Every serious bug that reached users, or nearly did, gets a regression test. If the cart badge once showed 0 after restarting the app, there’s now a test for it. Areas that broke before tend to break again.
  4. Usage analytics. Ask the product team for real data: which screens are used most, which payment methods, which devices and OS versions, which languages. If 70% of orders use Apple Pay or Google Pay, those deserve P1 tests. If nobody uses the fax-receipt option, it’s P3 at most.

Prioritizing: P1, P2, P3

A regression suite grows over time. Without tiers, you end up with “run everything” (impossible) or “run whatever we feel like” (risky). Most teams use three tiers:

TierWhat belongs hereQuickBite examples
P1: criticalCritical journeys, money, data, escaped serious bugsPay with saved card · Declined card creates no order · Order appears in tracking
P2: importantMain features and their main negative casesPromo codes · Edit address · Search filters · Push notifications
P3: nice to haveRare paths, cosmetic and low-impact checksDark mode on Settings · Rate the courier · About screen

Building a suite, step by step

  1. List the critical journeys. Write them as short user goals: “sign in”, “set delivery address”, “find food”, “build a cart”, “pay”, “track order”. Ask the product owner whether you missed one.
  2. Pick one fast happy-path check per journey for smoke. The cheapest check that proves the journey works end to end. Aim for 10-20 checks and under 30 minutes.
  3. Expand each area for regression. Add negative cases, edge cases, other platforms and payment methods, accessibility basics. Reuse your existing test casesTest caseA written set of steps, data and an expected result used to check one specific behavior.Open in glossary → (see How to Write Test Cases).
  4. Add tests from bug history. Go through the last few months of serious bugs and make sure each has a test.
  5. Tag every test with a tier and an area. For example P1 · Checkout. Tags make it easy to select subsets later.
  6. Estimate time. Note roughly how long each test takes. Then you can tell your lead “P1 + P2 for Checkout is about 3 hours” instead of guessing.
  7. Review with the team. Developers know which parts of the code are fragile; product knows what matters to customers. Ten minutes of review catches big gaps.

Worked example: a smoke suite for QuickBite 3.8.0

Here’s a complete smoke suite for a food delivery app release. Nine checks, about 16 minutes, run on one Android and one iOS device on staging.

#CheckPasses whenMin
S1Cold startApp opens to Home, no crash1
S2Sign inEmail + password lands on Home, signed in2
S3Choose saved addressAddress shows in the header2
S4Restaurant listRestaurants near the address appear1
S5Search“pizza” returns pizza places2
S6MenuA restaurant opens with items and prices1
S7Add to cartCart badge shows 1, cart shows the item2
S8PayOrder placed with saved test cardTest cardA card number published by a payment provider to simulate payments in test mode.Open in glossary →3
S9TrackingNew order shows status “Preparing”2

The result goes in the team chat in one line:

Smoke 3.8.0 (409), Pixel 8 / Android 15 + iPhone 15 / iOS 18, staging: 9/9 passed + Google Pay OK. Ready for testing.

or, on a bad day:

Smoke 3.8.0 (409): FAILED at S8, Pay returns "Payment unavailable" on both devices (SHOP-161). Build rejected, regression on hold.

Choosing a regression subset: impact analysis

Before each release, you’ll rarely run the full suite. Instead you choose a subset with impact analysis: working out which areas a change could affect. Ask:

  1. What changed? Read the release notes, the tickets in the release and, if you can, the list of changed files or the pull request titles. Ask the developer: “what else uses this code?”
  2. What does it touch directly? That area gets its full P1 and P2 tests, sometimes P3 too.
  3. What is connected to it? Data flows: an address feeds the restaurant list, the order and the courier map. Those areas get a quick pass of their P1 tests.
  4. What is risky no matter what? Payment and sign-in P1 checks run in almost every release, because a silent break there is too expensive.
  5. What can wait? Areas with no connection to the change, covered by the smoke suite anyway.
ChangeTest fullyQuick pass
Payment provider SDK updatedCheckout and payment (all methods, declined, 3-D Secure)Promo codes, order creation
Translation strings changedLanguages, text truncationTruncationText that gets cut off because it doesn't fit its space.Open in glossary → on every screenCheckout buttons, push texts
New address autocompleteAutocompleteSuggestions shown under a field while typing, which the user can pick to finish the input.Open in glossary →Address screenRestaurant list, order address, courier map

Manual or automated regression?

Regression suites are the classic candidate for automation: the same checks, over and over, on every release. But not everything is worth automating.

Worth automatingBetter kept manual
Stable, repeated checks (sign in, add to cart, pay)Features that change every sprint
Many data combinations (prices, currencies, tax)Look and feel, layout, animations
API-level checks of the backendOne-off checks for a rare release
Smoke suite on every buildExploratory testing of new features
Checks that are slow or boring for humansThings that need real devices, cameras, real payments

How often to run each

WhatWhenTypical owner
Smoke suiteEvery new build that reaches QAAutomated in CI, or the tester on duty
P1 regressionNightly (automated) and on every release candidateRelease candidateA build believed ready to ship, pending final testing.Open in glossary →Automation + QA
Change-based subsetWhen a feature or fix landsThe tester of that area
Full regression (P1-P3)Before major releases, after big refactorsWhole QA team
Sanity checkAfter a hotfixHotfixAn urgent fix released outside the normal release schedule.Open in glossary → or small fixTester who verifies the fix

Keeping suites healthy

Suites rot. Features change, screens get redesigned, tests get copied. A rotten suite wastes time and, worse, gives false confidence. Keep it healthy with a few habits:

  • Remove obsolete tests. If the “Pay by invoice” option was removed, delete its tests (or archive them). Running tests for features that don’t exist teaches people to ignore failures.
  • Update tests right after a change. When a story changes a flow, updating the affected regression tests is part of the story’s work, not “later”.
  • Avoid duplication. If three people wrote “sign in with email” three times, merge them into one. Duplicates cost time on every run and drift apart.
  • Handle flaky tests. A flaky testFlaky testA test that sometimes passes and sometimes fails without any change to the code.Open in glossary → passes and fails without any code change (timing, test data, network). Never just re-run until green. Investigate, fix the cause, and if that takes time, move it out of the suite into a “quarantine” list so it doesn’t hide real failures.
  • Review the suite every few releases. Ask: which tests never fail and cost a lot? Which areas had escaped bugs but few tests? Rebalance.

A healthy smoke check

S8 · P1 · Checkout. Place an order with the saved test card Visa 4242. Passes when: the confirmation screen shows an order number and the order appears in Orders with status “Preparing”. (3 min)

A check that doesn't belong

Smoke 23. Check all payment methods, promo codes and error messages work correctly on all devices.

The bad one is vague, enormous and can’t be finished in a smoke run. It’s at least ten regression tests hiding in one line.

Tracking suites in a test management tool

Small teams can live with a spreadsheet. As suites grow, most teams move to a test management tool, which stores test cases, groups them into suites, and records each test run (which tests ran on which build, by whom, with what result).

Whatever the tool, the ideas are the same: tag tests with tier and area, create a run for each build or release, mark each test Passed / Failed / Blocked, link failures to bug tickets, and share the run report. That report is the backbone of a test summary reportTest summary reportA report at the end of testing that summarizes what was tested, results, open bugs, risks and a recommendation.Open in glossary → and lets you show test coverageTest coverageHow much of the product, requirements or risks your tests actually check.Open in glossary →: which requirements were tested and which weren’t. See Working with Jira for the Jira side.

Common mistakes

A template you can copy

Suite: QuickBite Smoke           Version/build: 3.8.0 (409)
Environment: Staging             Devices: Pixel 8 / Android 15, iPhone 15 / iOS 18
Tester: ______                   Date: ______

| ID | Area     | Tier | Check                         | Passes when                    | Min | Result |
|----|----------|------|-------------------------------|--------------------------------|-----|--------|
| S1 | Launch   | P1   | Cold start                    | Home opens, no crash           | 1   |        |
| S2 | Sign in  | P1   | Sign in with email + password | Home shows "Hi, <name>"        | 2   |        |
| …  |          |      |                               |                                |     |        |

Verdict: PASS / FAIL (build rejected)     Bugs: ______
Extra checks for this build (risky changes): ______

Practice: build the smoke suite

QuickBite 3.8.0 is on staging. Pick the checks that tell you, as quickly as possible, whether the build is testable. Then press Check my suite to see how you did.

Build the smoke suite

QuickBite 3.8.0 just landed on staging. Pick at most 10 checks that fit in 25 minutes and answer: is this build testable?

Time budget

0 / 25 min · 0 / 10 checks

Critical journeys

  • App starts
  • Sign in
  • Delivery address
  • Find food
  • Build a cart
  • Pay and place order
  • Track the order

Practice: what did this change touch?

Four changes are going into the next release. For each one, choose the regression areas you’d retest, then check your picks.

Impact analysis: what did this change touch?

Read the change, pick the regression areas you would test again, then check your answer.

Change 1 of 4

Payment provider SDK updated

The developers upgraded the payment provider SDK from version 4 to version 5. No visible UI changes are planned.

Before you plan a regression run

Before you plan a regression run

0 of 9 checked

Check your understanding

Quick quiz

0/6 answered · 0 correct

  1. 1.A new build arrives and sign-in fails with an error for every user. What should happen?

  2. 2.Which check belongs in a smoke suite for a food delivery app?

  3. 3.What is the difference between retesting and regression testing?

  4. 4.The developers updated the payment provider SDK. No UI changed. What's the best regression plan?

  5. 5.A regression test passes and fails randomly without any code change. What should you do?

  6. 6.Which of these is usually the best candidate for automation?

Key takeaways

  • A smoke suite is 10-20 fast, happy-path checks of the critical journeys that answer “is this build testable?”. If it fails, the build is rejected.
  • A regression suite protects existing features. Build it from critical journeys, risk, bug history and usage analytics.
  • Tag every test with a tier (P1/P2/P3) and an area, so you can plan time-boxed runs.
  • For each change, do impact analysis: full tests for what it touches, a quick pass on what’s connected, smoke on top.
  • Keep suites healthy: delete obsolete tests, update after changes, merge duplicates, fix or quarantine flaky tests.
  • Automate stable, repetitive checks; keep humans on new features, visuals and exploration.

Finished this page?Nice work, this page is complete!

Mark it as done to track your progress. It's saved in this browser, no account needed.

Its review cards are now in Bites ⚡
Esc

Type to search the whole site.