All All News Products Insights Community

Sanity Testing: What It Is and What to Check After a Fix

Sanity testing: what it checks after a fix, its advantages and limits, and how it differs from regression testing, with the full process.

regression testing
General QA
Hero Banner
Smart Summary

Sanity testing serves as a crucial, focused validation step for ensuring software stability after recent changes or bug fixes, acting as a swift gatekeeping mechanism before more extensive testing can proceed. This targeted approach prevents critical issues from propagating through the development cycle, maintaining application reliability and efficiency.

  • Target Specific Functionalities: Conduct sanity tests to quickly confirm that recent bug fixes or enhancements have not introduced new defects into critical workflows, focusing exclusively on the impacted modules.
  • Understand Its Unique Role: Differentiate sanity testing from smoke and regression testing; it is a narrow, post-fix validation, distinct from smoke's broad initial build check or regression's comprehensive system-wide verification.
  • Implement an Efficient Process: Execute sanity testing by identifying affected features, crafting concise test cases, halting further development upon failure, and automating repetitive checks for speed and consistency.
Good response
Bad response
|
Copied
>
Read more
Blog / Insights /
Sanity Testing: What It Is and What to Check After a Fix

Sanity Testing: What It Is and What to Check After a Fix

Senior Quality Engineer Updated on

Sanity testing is the check you run right after a bug fix or a small change, on a build that has already proven itself stable. It is not a scaled-down version of a bigger test cycle, it is a deliberately narrow one: you look only at what just changed and whatever sits close enough to have been affected by it.

This guide covers what that check actually involves: what it verifies, what its real advantages and limits are, how it differs from regression testing, and the process to run one well.

SANITY TESTING, AT A GLANCE:

• What it is: a quick, targeted check that a recent fix or small change worked, and did not disturb what sits next to it.
• When it runs: after a targeted fix, on a build that has already passed smoke testing.
• How big it is: narrow. The changed area and its immediate neighbors, usually minutes to under an hour.
• If it fails: the fix goes back to the developer. The build itself is usually still fine.
• Not the same as regression testing: regression is broad and scheduled. Sanity is narrow and triggered by one specific change.

 

The rest of this guide walks through what to include, its real advantages and limits, and the process to follow.

What is sanity testing?

Sanity testing is a focused check performed after smoke testing, to confirm that a recent bug fix or small enhancement did what the ticket said it would, without introducing a new problem. It answers a narrow question: did this specific change work?

Also known as surface-level testing, sanity testing runs on a build that has already passed smoke testing, so the core system is known to be stable. You are not re-verifying the whole application, only the area a developer just touched and whatever sits close enough to it to have been affected.

Because it evaluates only part of the system, sanity testing is best understood as a narrow, targeted subset of regression testing, the broader process of confirming that recent changes have not broken existing functionality. Focusing on the fix itself is what lets a sanity check validate a change quickly, without running a full suite.

Sanity testing process: a stable build goes through sanity testing, a pass produces a verified build, and a failure produces a rejected build that is returned to development.
Sanity testing runs on a stable build: a pass moves it forward as verified, a fail sends it back to development.

Characteristics of sanity testing

Targeted validation. A sanity check looks at the exact features touched by a recent update or fix, not the whole system. That narrow focus is what confirms the change works correctly without unintended side effects nearby.

Quick confirmation. The point is fast reassurance. A small number of checks confirm the updated feature is stable enough to move forward, catching obvious issues early without spending time on a deeper cycle.

Post-fix testing. Sanity testing only happens on a stable build carrying minor updates or fixes. Since the build already passed smoke testing, the core system is known to work. The job here is confirming the specific change behaves as expected before broader regression testing begins.

Stopgate mechanism. If a sanity check fails, testing stops immediately rather than continuing. The build is not ready, so it goes back to development with the details, which saves the team from testing further on something already known to be broken.

What sanity testing gets you, and its limits

The advantage is speed with focus. Because a sanity check only touches the modules affected by a specific change, a tester or the developer who made the fix can confirm it in minutes rather than waiting on a full test cycle. That focus also makes it a natural gatekeeper: a passing sanity check is what earns a fix the right to move into a broader regression run, so regression time is not spent on changes nobody has looked at yet.

Scoped this tightly, it typically costs less than running a fuller suite for the same fix, provided the scope stays genuinely narrow rather than becoming a stand-in for skipping regression altogether. And because it looks specifically at the area around a change, sanity testing is well placed to catch a failure mode that is easy to miss elsewhere: a bug that was fixed once and has quietly returned after a later change touched the same code.

The limits come from the same looseness that makes it fast. A sanity check is usually run without a script or documented steps, since its scope changes with every fix, so there is often no record of exactly what was checked once the ticket closes. And because that scoping work happens fresh every time, the real cost is not in any single check, it is in doing it repeatedly: a team running dozens of ad hoc sanity passes a month is spending real, uncounted time re-deciding what to look at, even though each individual pass feels quick.

How sanity testing differs from smoke testing

The two are often mentioned in the same breath, but they answer different questions. Smoke testing asks whether an entire build is stable enough to test at all: broad, shallow, and run on every build. Sanity testing asks whether one specific change worked: narrow, deeper, and run only after a targeted fix on a build that has already passed smoke.

If you need to work out which check a given change actually calls for, our guide to sanity testing vs. smoke testing works through the triggers case by case, with worked examples on the same application.

Sanity testing vs. regression testing

This is the comparison that matters most for this page, because the two are genuinely easy to blur. Both run after a change. The difference is scope: sanity testing targets the specific fix, while regression testing re-verifies the application more broadly to confirm nothing else was disturbed.

Sanity testing is like checking the one button that was just fixed. You look only at the area that changed, to confirm the fix works and did not create an obvious new issue nearby. It is quick, narrow, and meant to build enough confidence to move forward. Regression testing is like checking the whole control panel, because changing one part of a system always carries some chance that an unrelated feature broke without anyone noticing. It looks back across previously working functionality to confirm it still behaves correctly, which makes it broader, slower, and better suited to catching side effects across the full system.

  Sanity testing Regression testing
Objective Validate a specific fix or small enhancement. Confirm previously working features still work after changes.
Scope Narrow. The affected modules and their immediate neighbors. Broad. The application, or a significant portion of it.
Timing Right after a targeted fix, on a build that already passed smoke. After significant changes, releases, or code merges.
Time and effort Minutes to under an hour, a quick and limited check. Hours to days, comprehensive and time-intensive.
Automation Rarely automated. Scope is different every time. Often automated, since the same suite runs repeatedly.

A sanity check is best thought of as a narrow, targeted subset of regression testing rather than a small regression run in its own right. It answers "did this specific fix work," not "is the application still sound overall," which is the question regression testing exists to answer.

The sanity testing process

Five steps, in order, cover most sanity checks:

1. Review what changed. Read the change log, the Jira ticket, or the commit notes so you know exactly what was updated or fixed. This is what keeps the check scoped to the right area instead of drifting into unrelated parts of the application.

2. Confirm the build is stable. Make sure the build has already passed smoke testing. The core system should load properly and nothing should be fundamentally broken before a sanity check begins.

3. Identify the specific scenarios to test. Select a small set of checks that target the updated area directly. If a login button was fixed, that means valid credentials, invalid credentials, and the redirect afterward, and nothing further afield.

4. Run the checks and stop on failure. Execute the selected scenarios and watch the results closely. If a key check fails, stop immediately and send the build back for fixing rather than continuing.

5. Watch for side effects nearby. While testing the updated feature, keep an eye on whatever sits closest to it. This is not a full regression pass, but an unexpected issue turning up right next to the change is exactly what a sanity check is positioned to catch.

What makes sanity testing faster to scope

The slow part of a sanity check is rarely running it, it is deciding what to run. That decision usually comes from memory: whoever is closest to the change guesses at what else the fix could plausibly touch. True Production Insights in Katalon True Platform gives that guess something to stand on, by tracking how the application is actually used in production and surfacing which flows a given change is likely to affect. That turns scoping from a fresh decision every time into a shortlist, without requiring teams to script a sanity check they will only ever run once.

Sanity testing works because it stays narrow. The moment it tries to cover more than the change in front of it, it stops being fast and starts being an undocumented, informal regression run. Keep it scoped to what changed, confirm the build already passed smoke first, and let regression testing own the broader question.

Explain

|

FAQs on Sanity Testing

What is sanity testing?

+

Sanity testing is a quick, targeted check performed after smoke testing to confirm that a recent bug fix or small enhancement worked as intended and did not disturb the functionality sitting next to it.

When should sanity testing be performed?

+

On a stable build that has already passed smoke testing, right after a targeted fix or small change lands and before that fix is trusted to move into a broader regression run.

How is sanity testing different from smoke testing?

+

Smoke testing checks whether an entire build is stable enough to test at all, and it runs broadly and shallowly on every build. Sanity testing checks whether one specific change worked, and it runs narrowly, only after a targeted fix, on a build that has already passed smoke.

How is sanity testing different from regression testing?

+

Sanity testing targets only the specific fix and its immediate surroundings, usually in minutes to under an hour. Regression testing re-verifies the broader application after significant changes, usually in hours to days. A sanity check is best thought of as a narrow, targeted subset of regression testing, not a small regression run in its own right.

What is the sanity testing process?

+

Review what changed in the ticket or commit notes, confirm the build already passed smoke testing, identify the specific scenarios in the affected area, run those checks and stop immediately if one fails, and watch for side effects in whatever sits closest to the change.

Henrik (Minh Huy) Dao
Henrik (Minh Huy) Dao
Senior Quality Engineer
Minh Huy Dao (Henrik) is a Senior Quality Engineer at Katalon, where he has worked since 2023. He has nearly 10 years of experience in QA and test automation, including roles at TMA Solutions, Axon Active and Doctor Anywhere. His work spans automation with Java, JavaScript and WebdriverIO, as well as CI/CD with Jenkins and leading Scrum teams.
Click