Smoke testing (software)
In computer programming and software testing, smoke testing (also confidence testing, sanity testing) is preliminary testing to reveal simple failures severe enough to (for example) reject a prospective software release. A smoke tester will select and run a subset of test cases that cover the most important functionality of a component or system, to ascertain if crucial functions of the software work correctly.:37 When used to determine if a computer program should be subjected to further, more fine-grained testing, a smoke test may be called an intake test.:25
For example, a smoke test may address basic questions like "Does the program run?", "Does it open a window?", or "Does clicking the main button do anything?" The process of smoke testing aims to determine whether the application is so badly broken as to make further immediate testing unnecessary. As the book Lessons Learned in Software Testing  puts it, "smoke tests broadly cover product features in a limited time ... if key features don't work or if key bugs haven't yet been fixed, your team won't waste further time installing or testing".
Smoke tests frequently run quickly, often in the order of a few minutes, giving the benefit of quicker feedback and faster turnaround than the running of full test suites, which can take hours – or even days.
A daily build and smoke test is among industry best practices.[need quotation to verify] Smoke testing is also done by testers before accepting a build for further testing. Microsoft claims that after code reviews, "smoke testing is the most cost-effective method for identifying and fixing defects in software".
Smoke tests can be broadly categorized[by whom?] as functional tests or as unit tests. Functional tests exercise the complete program with various inputs. Unit tests exercise individual functions, subroutines, or object methods. Functional tests may comprise a scripted series of program inputs, possibly even with an automated mechanism for controlling mouse movements. Unit tests can be implemented either as separate functions within the code itself, or else as a driver layer that links to the code without altering the code being tested.
The term "smoke test" refers to powering on a device simply to make sure it does not start smoking (indicating a major problem). It originated in the testing of electronic hardware.
- Standard Glossary of Terms used in Software Testing, Version 2.4 (Report). International Software Testing Qualifications Board. 2014.
- Standard Glossary of Terms Used in Software Testing, Standard Glossary of Terms Used in Software Testing International Software Testing Qualification Board.
- Dustin, Rashka, Paul. "Automated Software Testing -Introduction, Management, and Performance". Addison-Wesley 1999, p. 43-44. ISBN 0-201-43287-0.
- Cem Kaner, James Bach, Bret Pettichord, Lessons learned in software testing: a context-driven approach. Wiley, 2001
- Kaner, Bach, and Pettichord. "Lessons Learned in Software Testing". Wiley Computer Publishing, 2002, p. 95. ISBN 0-471-08112-4
- "How to: Configure and Run Build Verification Tests (BVTs)". MSDN Library for Visual Studio 2005. Retrieved 2010-11-20.
- McConnell, Steve. "Rapid Development". Microsoft Press, p. 405
- "Guidelines for Smoke Testing". MSDN Library for Visual Studio 2005. Retrieved 2010-11-20.