Smoke testing (also confidence testing, sanity testing, build verification test (BVT), and build acceptance test) is preliminary testing to reveal simple failures severe enough to, for example, reject a prospective software release.
Smoke tests are a subset of test cases that cover the most important functionality of a component or system, used to aid โ๏ธ assessment of whether the main functions of the software appear to work correctly.
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.
Alternatively, it is a set of tests run on each new build of a product to verify โ that the build is testable before the build is released into the hands of the test team.
In the DevOps paradigm, the use of a BVT step is one hallmark of the continuous integration maturity stage.
For example, a smoke test may address basic questions likeย
๐ "does the program run?",ย
๐ "does the user interface open?", 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 are typically run rapidly ๐, resulting in speedier feedback, as opposed to performing more complete test suites, which would naturally take considerably longer.
The results of this testing are used to determine whether or not a build is stable enough to proceed with additional testing.