The primary objective of any software project is to get a high-quality output while reducing the cost and the time required for completing the project.
To achieve that, the company defined a test strategy with different levels and types of tests and each software test type has its purpose and is performed in different builds. In this article, we will define two test types; the smoke test and the sanity test and the key differences between them.
First of all, let’s define what is a software build?
A build is a process of converting all source code that makes up an application and compelling into a standalone software artifact that can be run on a computer.
To make it easier In a programming context a build is a version of a program pre-released and it’s ready to be handed over to the QA team for testing. Each time developers fix anything in the code or add new functionality it goes in the same process.
There’s always a risk that the build doesn’t work correctly due to several issues like environmental issues, code issues and configuration issues.
Especially for the initial builds, it’s mandatory to confirm that the preliminary stage builds are stable.
So it’s subjected to basic testing before it’s sent to other levels of testing and this is called smoke testing.
It’s also known as build verification testing which is a test suite that covers the critical functionalities of a system to determine whether it works properly before planned testing begins.
“The phrase smoke test comes from electronic hardware testing. You plug in a new board and turn on the power. If you see smoke coming from the board, turn off the power. You don’t have to do any more testing“
Lessons Learned in Software Testing(Cem Kaner, James Bach, Brett Pettichord)
Let’s consider that you were given a simple chat application to test, the critical functionalities to test are:
login, sending messages, receiving messages …
So if there are any issues with these basic features it has no sense to go further with testing then the build is rejected.
- not exhaustive testing
- automation or manual testing
- performed by developers/testers
- build verification testing
Performed after receiving a software build, (with minor changes in code, or functionality) and it’s carried out to check whether the functionalities are still holding the same way before any regression was implemented.
Considering the same chat application, in advanced stages, they decided to add the possibility of chat groups. Here the sanity test is performed to check that there’s no impact on the module sending and receiving messages.
- a limited number of test cases
- no documentation is required
- performed by testers
- a sub-set of regression testing
|Smoke test||Sanity test|
|Performed to verify the critical functionalities||Performed to verify new functionalities/bugs|
|Done in initial levels||Done when the build is stable|
|Executed by developers/testers||Executed by testers|
|A subset of acceptance testing||A subset of regression testing|
|Documented tests||Not documented tests|