Competencies

Sanity testing and smoke testing are the most misunderstood topics in Software Testing. In this article, we will try to clarify the meaning of these tests.

What is Sanity Testing?

Sanity testing is a very brief run-through of the functionalities of the software build to assure that part of the system works roughly as expected. This is often prior to a more exhaustive round of testing.

Sanity testing is normally performed in later part of the software development life-cycle when the builds are relative stable after multiple rounds of testing. After receiving a software build, with minor changes in code, or functionality, sanity testing is performed to ensure that the bugs have been fixed and no further issues breaking any previously working functionalities.If sanity test fails, the build is rejected to save the time and effort of QA team in a more rigorous testing.

The objectiveof Sanity testing  is "not" to verify thoroughly the new functionalities, but to determine that the developers have applied some rationality (sanity) while producing the software.

When choosing test cases for sanity test, please note that:

  • Sanity testing focuses on very narrow and deep testing of some limited features.
  • Sanity testing is a sub-set of regression testing.
  • Sanity testing is cursory testing to prove software application is working as mention in the specification documents & meets the user needs.

What is Smoke Test?

Smoke Testing is a testing technique that is inspired from hardware testing, which checks for the smoke from the hardware components once the power is turned on. Similarly in software development context, the smoke testing refers to testing the basic functionality of the software build. Smoke Testing is performed after software build to make sure that the critical functionalities of the program is working fine.The purpose of smoke testing is to reject a broken build, so that the QA team does not waste the time installing and testing the application.Smoke testing is normally performed in initial builds of the software development life-cycle when the builds are still relatively unstable. Smoke test sometimes also called quick-and-dirty test.

When choosing test cases for smoke test, please note that:

  • the test cases are chosen to cover the most important functionalities or components of the software to ensure they are working fine. The objective is not to perform exhaustive testing.
  • Smoke test can be manual or automation test.
  • Smoke test is build acceptance test. Thus, sometimes we can say sanity is a subset of acceptance testing.

Comparison of Sanity Test and Smoke Test

Smoke test vs. sanity test

Sanity Test

Smoke Test

Sanity Testing is carried out to check that the new functionalities are working or bugs have been fixed

Smoke Testing is carried out to ensure that the critical functionalities of the software are working fine

The objective of the sanity testing is to verify the "rationality" of the system in order to proceed with more rigorous testing

The objective of smoke testing is to verify the "stability" of the system in order to proceed with more rigorous testing

Sanity testing is usually performed by testers

This testing is performed by the developers or testers

Sanity testing can be manual or automated

Smoke testing can be manual or automated

Sanity testing exercises only the particular component of the entire system

Smoke testing exercises the entire system from end to end

Subset of regression test

Subset of acceptance test

Sanity Testing is like specialized health check up

Smoke testing is like general health check up