Skip to content
Latchkey

What Is a Smoke Test?

A smoke test is a quick, shallow check that confirms the most important functions of an application work before deeper testing or release.

The term comes from hardware: power on a new device and see if it smokes. In software, a smoke test is the fast first check, "does it even start and do the basics?", that decides whether it is worth running the full suite or proceeding with a deploy.

What it is

A smoke test exercises a handful of critical paths, can the app start, does the home page load, can a user log in, rather than testing everything in depth. It is broad and shallow by design: a small set of must-work checks that catch catastrophic, obvious failures quickly.

How it works

Smoke tests run early, right after a build or immediately after a deploy. If a smoke test fails, the pipeline stops there: there is no point running thousands of detailed tests, or sending traffic to a deploy, when the basics are broken. If smoke tests pass, deeper testing or full rollout proceeds.

An example

After deploying a web app to staging, a smoke test hits the health endpoint, loads the landing page, and performs one login. It finishes in seconds. If any of those fail, the deploy is halted and rolled back before a slow, detailed test suite even starts.

Why it saves time

Running a full test suite or completing a rollout against a fundamentally broken build wastes minutes or causes outages. A smoke test fails fast on the obvious problems, giving quick feedback and protecting both pipeline time and production. It is cheap insurance against deploying something completely broken.

Smoke versus regression tests

A smoke test asks "is it basically working?" while a regression test asks "did we break anything that used to work?". Smoke tests are a small fast subset; regression suites are comprehensive and slower. They complement each other at different points in the pipeline.

Key takeaways

  • A smoke test is a fast, shallow check of critical functionality.
  • It runs early and stops the pipeline if the basics are broken.
  • It saves time by failing fast before deeper testing or rollout.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →