Years ago, one of the new terms I heard when I started working at Microsoft as a software test engineer was "smoke test". A smoke test is a quick-and-dirty test designed to determine if the software program/system under test has any major functionality bugs. Or put slightly differently, a smoke test is an ad hoc test, usually performed manually, intended to uncover only serious, high severity bugs. A smoke test is most often performed right after a developer adds new code to the system under test, and before the new code is checked into the main code base in the source control system. You can think of smoke tests as an informal type of DRT (Developer Regression Test).
Over time, I heard several theories about the origin of the term smoke test. After some research, I determined that there are at least four possible origins. In hardware testing, the term smoke test means the process of testing a new piece of hardware simply by plugging it into an electrical source and powering the device up. If the device smokes — actually starts emitting smoke — then this is not a good sign and the device fails the smoke test. If no smoke appears, the device passes the smoke test.
A second possible origin of the term smoke test comes from the field of plumbing. After creating a plumbing or ventilation system by hooking pipes together, a technician pumps smoke into the system and then looks for leaks.
A third possible origin of the term comes from printing. In the days before computer typography, printing was done by stringing together individual pieces of metal with raised impressions — one piece of type for every letter. If you’ve every seen an old typewriter you’ll know exactly what I mean. The pieces of type would be coated with ink and then pressed onto paper. If you think about it for a moment you’ll realize that each piece of metal must have the letter it will print in reversed form. So, the process of creating metal type involved carving letters in reverse. To test how the letter would look when used for printing, the type-maker could light a candle, let smoke coat the metal type piece and then press the piece onto a piece of paper to see the resulting impression.
The fourth possible origin of the term smoke test comes from the old saying, "where there’s smoke, there’s fire." And that term, or close to it, exists in many different languages and has been around as far back as I could research.
Like most word origins, the truth is probably that the term smoke test comes from more than one source. You can see that all four possible origins involve physical smoke, and are tests of some sort. I suspect that multiple people started using the term more or less simultaneously when the first high-level programming languages (Fortran, COBOL, BASIC) appeared in the late 1950s and early 1960s. One thing is for sure though: if you add new code to your program, and then run the program and your computer starts smoking, you’ve written some pretty cool code!
If you enjoyed reading this blog entry, you might enjoy working at Microsoft. My parent company, Volt Information Sciences, is always looking for software engineers. Check out the job listings at http://jobs.volt.com/.