Smoke testing

I seem to have found myself arguing with testers and developers about exactly what smoke testing is, so Google and I compiled these definitions.

From Wikipedia

Smoke testing is a term used in plumbing, woodwind repair, electronics, computer software development, infectious disease control, and the entertainment industry. It refers to the first test made after repairs or first assembly to provide some assurance that the system under test will not catastrophically fail. After a smoke test proves that “the pipes will not leak, the keys seal properly, the circuit will not burn, or the software will not crash outright,” the assembly is ready for more stressful testing…. In computer programming and software testing, smoke testing is a preliminary to further testing, which should reveal simple failures severe enough to reject a prospective software release. In this case, the smoke is metaphorical.

From Microsoft ala MSDN

In software, the term smoke testing describes the process of validating code changes before the changes are checked into the product’s source tree. After code reviews, smoke testing is the most cost effective method for identifying and fixing defects in software. Smoke tests are designed to confirm that changes in the code function as expected and do not destabilize an entire build. Note:  The term smoke testing originated in the hardware industry. The term derived from this practice: After a piece of hardware or a hardware component was changed or repaired, the equipment was simply powered up. If there was no smoke, the component passed the test.

From Steve McConnell writing under the IEEE banner (Steve wrote the seminal software books Code Complete, Rapid Development, Software Project Survival Guide, Software Estimation, and Professional Software Development)…

[The smoke test is] a relatively simple check to see whether the product “smokes” when it runs… The smoke test should exercise the entire system from end to end. It does not have to be exhaustive, but it should be capable of exposing major problems. The smoke test should be thorough enough that if the build passes, you can assume that it is stable enough to be tested more thoroughly.


Smoke testing is non-exhaustive software testing, ascertaining that the most crucial functions of a program work, but not bothering with finer details. The term comes to software testing from a similarly basic type of hardware testing, in which the device passed the test if it didn’t catch fire the first time it was turned on. A daily build and smoke test is among industry best practices advocated by the IEEE (Institute of Electrical and Electronics Engineers).