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.