There are two test types which by nature are of very short duration and are normally designed in such a way as to find major problems much earlier in the cycle. These two test types are:
- Sanity Testing
- Smoke Testing
It seems the word smoke testing comes from the Industrial Equipment Testing. The smoke testing was considered to be a safe testing procedure by blowing smoke into parts of the sewer and drain lines to detect sources of unwanted leaks and sources of sewer odors.
Sanity testing is a cursory testing; it is performed whenever a cursory testing is sufficient to prove the application is functioning according to specifications. This level of testing is a subset of regression testing. It normally includes a set of core tests of basic GUI functionality to demonstrate connectivity to the database, application servers, printers, etc.
However in the Software field this Smoke Testing is a very important testing aspect. I have often seem the case where both the words have been used interchangeably. I will focus on the Smoke Testing aspect in this article.
Smoke Testing is applicable when new components gets added and they are integrated with the existing code. It ensures that the build is not broken. The product in its existing state is smoke tested daily. It just ensures that the build is not broken and is ready for further thorough testing. Once an engineer certifies the smoke test is successful, the testing team can come into action for further deep testing.
Typical characteristics of Smoke Testing:
- It exercises the entire system from end-to-end.
- It is not exhaustive but should be capable of exposing major problems.
- It ensures that the major functionality is working and the build is stable enough for further testing thoroughly.
Advantages of Smoke Testing:
- Reduced Integration Risk : Since smoke testing is carried out the integration problems are uncovered at a much earlier stage than late in the cycle.
- Finds Major Problems: A good designed smoke test can increase the probability of finding a major problem when a software is built early in the cycle. Thus you catch bugs earlier in the cycle.
- Can save time and cost – If a major problem is detected at the stage when the software is ready built, it can save huge time and cost if the same error was discovered late in the cycle.