From construction to software, the principle behind the usefulness of the smoke test is the same: identify flaws before suffering serious or even catastrophic damage. And it is precisely from the construction sector that the term is born. The smoke test is the one put in place by construction workers. The water pipes cannot have leaks, otherwise it may cause damage and flooding. That is why workers sometimes pass smoke through water pipes before exposing them to water. If the smoke comes out of the pipes somewhere, except at the ends, then that’s where the leaks are.
The same is true in the world of software developers. As specified and made famous by Cem Kaner, James Bach, and Brett Pettichord, authors of the book “ In Lessons Learned in Software Testing”The concept of smoke test derives from tests on electronic hardware. “A new card is inserted and the machine is turned on. If you see smoke coming from the card, it will go out. There is no need to do other tests “. Behind this simple sentence reveals the importance of the smoke test in computer science: software development is difficult. In addition to creating a functional product, you have to deal with bugs that can create problems. If they are not identified and eliminated immediately, the entire development process may crash. Hence the importance of the “smoke test” which has to do with the functionality of the systems and with the possibility that a software or an app will be successful or not.
What is the smoke test
The smoke test is the preliminary check of the software after a compilation and before a release. It helps software developers understand if the program is working as it should, and if it is ready to move on to the next stage of testing. In other words, smoke tests allow you to verify the validity of the builds ( a term that indicates the process of transforming the source code into an executable artifact) that they have created. By activating the “smoke test” before other formal tests, they can ensure that no time and resources are wasted during subsequent testing phases.
Without smoke tests, you run the risk of wasting time and money in developing otherwise ineffective programs. Without it, the most important problems escape and have the opportunity to stay longer: thus, thanks to this test, bugs can be identified and eliminated.
Also, it’s important because it paves the way for other types of testing, and running multiple tests on builds improves their overall quality.
What it is not: the difference with the sanity tests
Sometimes smoke test is confused with sanity test . The latter is a subset of the regression test, which in turn is a type of test in which you can verify that changes made in the codebase do not impact existing software.
Regression testing is the comprehensive feature test – it is performed after checking some features with the sanity test, which in turn is performed to ensure that the code changes you make are working correctly.
Hence the difference: smoke tests are performed to make sure that the program’s features are working properly. The sanity test is done to check that bugs have been fixed after compilation.
How the smoke test is performed
Quality Assurance testers run the smoke test after developers deliver each new build of an application. If the code passes, the software build moves on to more rigorous tests, such as unit and integration tests. If the smoke test fails, then the testers have discovered a major flaw that blocks all other tests and stages. The QA team then asks the developers to submit another build. Speaking of how to perform smoke tests, the three most common are hybrid tests, manual tests and automatic tests.
Manual testing is done by human testers. To understand how this works, let’s take the development of a mobile app as an example. In the case of testing, testers can be run through a test run on a variety of devices.
It is the most time-consuming mode (even half a day), but it has the advantage of putting the app to the test more truthfully: the testers can be considered as the first users, once placed on the market. The outcome, therefore, will be more indicative of the effectiveness and functionality of the app.
In the case of self-testing instead, testers are tools. The advantage is the saving of time and resources to perform the test, conducted more quickly by a machine. The disadvantage is that the human element is not considered: in some cases it can be decisive.
The hybrid test includes both methods described. It therefore involves the use of an automation component in the smoke testing process, while also relying on some degree of manual human work to test the software. The advantage of the hybrid is precisely to combine the merits of the two types of tests, human and automatic, with greater guarantees of the feasibility of the builds.
What are the benefits of the smoke test
There are many advantages offered by the smoke test. First of all, being able to reliably verify from the start that builds are stable is a guarantee for subsequent system stability . Everyone involved in the early and later stages of the testing process will be able to work with the knowledge – and peace of mind – of not having to worry about finding significant bugs within the code, causing serious problems.
One of the biggest advantages of smoke tests is their ease of execution . Thanks to their simplicity, smoke tests are compatible with almost all test methodologies with which one can think of combining them.
Another good thing is that it can quickly spot bugs . In the world of information technology, many are aware of the damage that these anomalies can cause. The story of the Knight Capital computer bug, which cost the company $ 440 million, makes it one of the most expensive software errors in history. By doing the smoke test often, you can make sure that your software is relatively bug-free when it is distributed.
The smoke test has the undeniable advantage of saving time and money . It allows, in fact, to identify possible problems quickly and efficiently allowing – as mentioned – not to waste resources.