Tuesday, May 8, 2012

Smoke and Sanity Testing



Usually we perform Smoke/Sanity testing once we got any new build for testing. Both sanity tests and smoke tests are ways to avoid wasting time/ effort by quickly determining whether an application is too flawed to merit any rigorous testing.

Smoke Testing:

Reason for this name: In electronics and electrical engineering once we create an electronic circuit they connect to power, which will sometimes produce actual smoke if a design or wiring mistake has been made.

Objective of smoke testing: Smoke Testing is performed after software build to ascertain that the critical functionalities of the program is working fine. It is executed "before" any detailed functional or regression tests are executed on the software build. The purpose is to reject a badly broken application, so that the QA team does not waste time installing and testing the software application.

In Smoke Testing, the test cases chosen cover the most important functionality or component of the system. The objective is not to perform exhaustive testing, but to verify that the critical functionalities of the system is working fine.

For Example a typical smoke test would be – Verify that the application launches successfully, Check whether all the GUI field are present in the application ... etc.


Sanity Testing:

Reason for this name: No idea on how they derived this name J

Objective of sanity testing: After receiving a software build, with minor changes in code, or functionality, Sanity testing is performed to ascertain that the bugs have been fixed and no further issues are introduced due to these changes. The goal is to determine that the proposed functionality works roughly as expected. If sanity test fails, the build is rejected to save the time and costs involved in a more rigorous testing.

The objective is "not" to verify thoroughly the new functionality, but to determine that the developer has applied some rationality (sanity) while producing the software.

For Example, the Hello world programs often used as a sanity test for a development environment. If Hello World fails to compile the basic environment has a configuration problem.



DIFFERENCE BETWEEN SMOKE AND SANITY TESTING:


S.No
Smoke Testing
Sanity Testing
1
Smoke Testing is performed to ascertain that the critical functionalities of the program is working fine
Sanity Testing is done to check the new functionality / bugs have been fixed
2
The objective of this testing is to verify the "stability" of the system in order to proceed with more rigorous testing
The objective of the testing is to verify the "rationality" of the system in order to proceed with more rigorous testing
3
This testing is performed by the developers or testers
Sanity testing is usually performed by testers
4
Smoke testing is usually documented or scripted
Sanity testing is usually not documented and is unscripted
5
Smoke testing is a subset of Regression testing
Sanity testing is a subset of Acceptance testing
6
Smoke testing exercises the entire system from end to end. Smoke test is designed to touch every part of the application in a cursory way.
Sanity testing is used to determine a small section of the application is still working after a minor change.
7
Smoke testing is a breadth first Approach
Sanity testing is a depth first Approach.
8

Smoke testing performed on a particular build is also known as a build verification test.
Sanity Testing is also called tester acceptance testing.
9
Smoke testing is like General Health Check Up
Sanity Testing is like specialized health check up



1 comment: