Smoke testing

The term is supposed to have originated from the electrical engineering domain. When a new circuit being developed was attached to a power source any major issue with the circuit would cause smoke to emanate. No further testing would need to be performed on this circuit.

In the Software Engineering world, smoke testing is usually a smaller subset of your regression test suite. The tests are automated and test the important high level functionality to make sure these operate correctly. The idea is to verify the breadth of an application's functionality rather than testing in-depth. Smoke tests are run against each build. When a build completes, the automated smoke test suite is executed against this new build. The process would involve setting up the application and components, verifying that all components have been installed, perform any needed initializations, make necessary configurations and verify critical functionality.

Since smoke testing happens after unit testing has completed, it may appear that smoke testing is a duplication of effort. Unit testing is normally executed in isolation and on the developers' desktops / in the development environment. Smoke testing is a high-level integration test effort whose primary aim is to verify that the system's basic functions/features do what they are intended to do after the software system build is installed in the system test environment. A smoke test must be performed for each new build that is turned over to the test group. Successful smoke testing should be regarded as part of the entrance criteria for beginning the testing phase for the build.