Differences between Smoke testing and Sanity Testing
Overview
Let’s learn the differences between Smoke and Sanity testing in this tutorial. Let’s define each term.
Smoke Testing
The origin of the smoke test is from the hardware industry where you turn on a new piece of hardware for the first time and make sure it does not end up catching fire and smoke.
Smoke testing verifies the major functionality at a high level in order to determine if further testing is possible. The Smoke test scenarios should emphasize breadth more than depth.
The smoke testcases are designed to touch every part of the application in a cursory way. All components should be touched, and every major feature should be tested briefly. If the test fails, the build is returned to developers un-tested. In Smoke testing, you check the major functions of the application without getting too deep.
It should be ideally performed on each build with a predefined set of scripts. On average it should not take more than an hour or so as it is shallow and wide.
If the smoke test fails, you can’t do the sanity test. It usually happens when an application program has many external dependencies, smoke testing may find problems with it (such as missing libraries).
More information:
http://en.wikipedia.org/wiki/Smoke_testing
Sanity Testing
Sanity testing is the testing effort to determine if a new software version is performing well enough to be accepted for a major testing effort. For example, if the new software is crashing frequently, bogging down systems to a crawl, or destroying resources, the software may not be in a ‘sane’ enough condition to warrant further testing in its current state.
Once the application passes the smoke test you need to perform the sanity test on the build. Sanity testing is cursory testing; it is performed whenever cursory testing is sufficient to prove the application is functioning according to specifications. This level of testing is a subset of regression testing. A Sanity test is usually unscripted. So you have your best-experienced tester who would check the major functions of the application and certify the application is ready to move to the next level (such as UAT or Production etc)
More information:
http://en.wikipedia.org/wiki/Sanity_testing
http://en.wikipedia.org/wiki/Smoke_testing