Smoke testing is a term used in plumbing, woodwind repair, electronics, computer software development, 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.
Non-toxic smoke is used to find leaks in plumbing and sanitary sewer systems. Artificially created smoke is forced into the pipe or container. Plumes of smoke form where there are defects. It is particularly useful where completely sealing the system is not practical such as ventilated sanitary sewer systems.
When smoke testing a sanitary sewer system it is helpful to partially block off the section of sewer to be tested. This can be done by using a sand bag on the end of a rope. The sand bag is lowered into the manhole and swung into position to partially block lines. Completely blocking the line can cause water to back up and prevent smoke from escaping through defects. Smoke testing may not be done after rain or when ground water is unusually high as this may also prevent detection of defects.
Large downdraft fans, usually powered by gasoline engines, are placed on top of open manholes at either end of the section to be tested. If possible all lines in the manholes except for the line between the manholes are partially blocked. Smoke is created using either a smoke bomb or liquid smoke. Smoke bombs are lit and placed on a grate or in a holder on top of each fan or the liquid smoke is injected into the fan via a heating chamber. The fans create a pressure differential that forces the artificial smoke into the sewer at a pressure just above atmospheric. With properly installed plumbing, the traps will prevent the smoke from entering the house and redirect it out the plumbing vents.
Defective plumbing systems or dry traps will allow smoke to enter the inside of the house.
The area around the section being tested is searched for smoke plumes. Plumes coming from plumbing vents or the interface between the fan shroud and manhole rim are normal; however, smoke plumes outside of the manhole rim are not. Plumes are marked, usually with flags, and defects are noted using measurements from stationary landmarks like the corners of houses. The plumes or markers may also be photographed.
In the same way that plumbing and woodwind instruments are tested, the vacuum systems of automobiles may be tested in order to locate difficult-to-find vacuum leaks. Artificial smoke is deliberately introduced into the system-under-test under slight pressure and any leaks are indicated by the escaping smoke.
An electrical smoke test may be done before all the work is complete, just to ensure that there are no major flaws that would make further work pointless. For power above about 30 watts, circuit failure at first power-on sometimes literally produces smoke, most often from burning resistors, which produce a unique smell familiar to many technicians. For certain circuits, overheating and burning due to circuitry that is still not properly operating can be avoided by slowly turning up the input voltage to the unit under test by using a variable autotransformer and watching the electric current consumption. As a poor-man's "autotransformer", a properly-sized incandescent light bulb in series with the power feed can provide a similar benefit: if the unit under test has a short circuit or other overload, the bulb will light up and provide a high resistance, limiting or preventing further damage to the unit being tested.
Overloaded integrated circuits typically produce "blue smoke" (or magic smoke). "Blue smoke" is the subject of jokes among technicians who refer to it as if it were a genie in the circuit: It's the blue smoke that makes it work—let out the blue smoke and it won't do anything.
In software engineering, a smoke test generally consists of a collection of tests that can be applied to a newly created or repaired computer program. Sometimes the tests are performed by the automated system that builds the final software. In this sense a smoke test is the process of validating code changes before the changes are checked into the larger product’s official source code collection.
In software testing, a smoke test is a collection of written tests that are performed on a system prior to being accepted for further testing. This is also known as a build verification test. This is a "shallow and wide" approach to the application. The tester "touches" all areas of the application without getting too deep, looking for answers to basic questions like, "Can I launch the test item at all?", "Does it open to a window?", "Do the buttons on the window do things?". The purpose is to determine whether or not the application is so badly broken that testing functionality in a more detailed way is unnecessary. These written tests can either be performed manually or using an automated tool. When automated tools are used, the tests are often initiated by the same process that generates the build itself. This is sometimes referred to as "rattle" testing - as in "if I shake it does it rattle?"
To smoke test a venue, the venue is filled to capacity with smoke to see if there are any smoke detectors still live in the venue, or if there are any leaks of smoke from the venue sufficient to set off detectors in other parts of the venue being tested.