A key difference between sanity testing vs smoke testing is the depth of the testing objectives:
Sanity testing has a bigger scope than smoke testing. However, sanity testing's scope is smaller than regression testing.
Smoke testing |
Sanity testing |
Executed on initial/unstable builds |
Performed on stable builds |
Verifies the very basic features |
Verifies that the bugs have been fixed in the received build and no further issues are introduced |
Verify if the software works at all |
Verify several specific modules, or the modules impacted by code change |
Can be carried out by both testers and developers |
Carried out by testers |
A subset of acceptance testing |
A subset of regression testing |
Done when there is a new build |
Done after several changes have been made to the previous build |
Smoke testing, also known as build verification testing or build acceptance testing, is a non-exhaustive testing type that ensures the proper function of basic components of a single build.
For example, smoke tests on a calculator should only involve checking if 1 + 1 = 2. It is the most basic feature of any calculator.
If the result is 3, there is no need for further testing, since its most basic features are not even working properly. The solution is to send it back to the development team for troubleshooting instead of trying to test if the quadratic formula works.
The term “smoke testing” is believed to have originated from the plumbing industry, where plumbers would blow smoke into the water pipes to identify cracks in the pipe before fixing.
The term is then carried into the software testing world, and it has a similar meaning. In this sense, smoke testing is done to make sure that the very basic functionality of the product works, if at all. If those very basic features do not work, there is no point in continuing testing or building.
Smoke testing leaves little room for major errors to ripple through and become harder to fix down the line.
Commonly takes place after code reviews, if the initial build passes the smoke tests, it is qualified for further functional testing. If the smoke tests fail, the build is rejected and handed back to the development team.
The standard process is illustrated below.
To achieve the best results when executing smoke testing, we should follow these common practices:
Sanity testing verifies critical functionality after changes like bug fixes or enhancements. It ensures the application works as expected before further testing proceeds.
There are also many similarities between sanity testing and regression testing. They are all performed to check if the system still works well after updates.
The biggest difference is their scope: sanity testing only targets specific fixes, while regression testing ensures overall application stability after updates. Sanity is quick; regression is comprehensive.
Here is a simple comparison table for you:
Regression testing is a software testing practice rather than a testing in itself. It contains multiple types of tests, with sanity tests being a checkpoint in the process to decide if the build can proceed with the next level of testing.
Basically, sanity testing works just as regression testing but deals with a smaller test suite. This subset contains critical test cases that are run first before the examination of the whole package of regression tests.
The relationship between sanity testing, smoke testing, and regression testing can be seen in the graph below.
Yes, regression testing is performed after executing sanity tests of any modified or added functionality. It ensures an application still works as expected after any code changes, updates, or improvements. It determines whether or not the software is eligible for further functional validation.
Smoke testing is executed first in the early stages of the SDLC to set out a foundation of bug-free and reliable core functionalities. Once passed smoke testing, the build moves onto sanity testing to ensure its stability and flawless integration with the existing features.
It is the best practice that the testing team start with smoke testing, followed by sanity and then regression tests, based on the project’s timeline and requirements.
Katalon accompanies your QA team throughout the entire software testing life cycle.
With Katalon, you can write tests in 3 modes (no-code, low-code, full-code), manage tests in a centralized dashboard, schedule test runs, execute tests across environments, and generate detailed reports.
And all of that can be done for web testing, API testing, and mobile application testing. In other words, Katalon is a centralized platform for all of your testing activities.
Let's take a look at Katalon in action:
Feature highlights:
Automatic test maintenance
Website: Katalon
Price: Free and flexible paid plans