Smoke Testing is a preliminary testing performed over initial build of the software to verify the stability & readiness of that build to face-off further testing process & activities without getting badly broken or failed.
It is termed as a build verification testing, as it is primarily used to reject software build(s) and declare it unstable for further testing, at first sight. Basically, it is a non-exhaustive type of testing that does not involve any in-depth testing, rather it considers and evaluates the basic functionalities, such as if it is able to install and run, proper navigation between different pages, responsiveness of GUI features and many similar basic operations.
However, before moving ahead, it is crucial for us to have a small overview of build or software builds to make the concept of smoke testing easy and comprehensible.
Before moving forward, let's have a small overview of build or software builds to make smoke testing concept more easy and clear.
Build is a version of a software application which is still under testing. It may be seen as the bundled integration of programming codes in an executable format which is passed over to the testing team, in order to evaluate the corresponding functionalities of the software under development (SUT).
In simple words, build is a piece of software application developed from the integration of executable code and is accountable for a particular feature(s) and functionalities in a software product.
The basic idea behind smoke testing is to examine the functioning of recommendable essential features of the software build. On examination, if build is not found in working condition to deliver even basic features, its further testing gets discontinued by the testing team until the product passes the smoke test. This pressurizes the development team to ensure the stability and readiness of the build to avoid the wastage of time and efforts of testing team.
Since its inception, smoke testing has had various theories and studies associated to it that define the concept behind its nomenclature. However, out of these only two seem to appropriately define its origin.
Primarily used in the field of hardware industry, smoke testing found its vogue from a similar hardware testing, wherein a hardware device passed testing successfully if it did not catch fire or smoke the first time it was used/turned on. Similarly, in the software testing, when a component of the software application or build fails to pass the smoke test, it is considered inappropriate to bear the further testing activities.
Another story which may be seen closer to the naming of smoke testing is the testing of ventilation system, where smoke is pumped in these interconnected pipes to check the possibility of leaks in the ventilation system (if any).
Smoke testing comprises of various important features, which help differentiate it from other types of testing. Hence, to get a better insight into its process, it is important for us to understand its various features, some of which are mentioned below:
Note: Smoke Tests are used to either accept or reject builds for further testing based on their stability, where each build is subjected to positive scenarios and conditions along with the valid input data as desired for its functioning. No negative scenarios and invalid data are being used in smoke testing.
Performed whenever a new functionality is introduced or implemented in the software build, smoke testing uses non-exhaustive set of tests to ensure their quality and accuracy, which makes it extremely vital for us to understand its requirements for implementation. The implementation of smoke test requires:
Although, used interchangeably by novice software testers Sanity Testing and Smoke Testing are two different testing techniques used in computer programming and software testing.
Sanity testing is possible only after the initial build successfully passes through smoke testing. Once, declared stable for further testing, build is scanned through the system and/or regression testing. It is after going through multiple regression tests, that these builds become relatively more stable.
It is at this point that the need for sanity testing arises, wherein the test passes and ensures that all previous bugs are fixed and any added or deleted functionalities, do not hinder the desired functioning of the software. However, the result of the sanity test fails is similar to that of smoke i.e. rejection of the build.
Although, Smoke and Sanity tests are both used to test builds, there are still various differences between these two testing techniques. So, check our article on Smoke testing vs Sanity testing and remove your confusion.
You can also find differences between smoke testing and regression testing, here.
Being a subset of the test cases that verify and validate the quality as well as the effectiveness of the most important functionalities of the product, smoke testing offer various advantages to the team of testers and allows them to effectively evaluate various aspects of the software. Some of these advantages of smoke testing are:
As Smoke testing covers only the basic functionalities and no detailed testing of the build is performed along with the limited number of test cases, it might be possible that some of the critical and essential testing aspects get overlooked or untouched, which may have negative impact on the product.
While performing the process of smoke testing the team needs to consider various aspects and adopt best practices that improve the process of testing and enhance the quality of the product effectively. Some of these aspects considered by the team are:
To further ensure that the process of smoke testing is performed successfully prepare a smoke testing checklist and enhance the quality of your testing.
Software testers perform smoke tests to either accept or reject builds for further testing based on their stability, where each build is subjected to positive scenarios and conditions along with the valid input data as desired for its functioning. No negative scenarios and invalid data are being used in smoke testing. Moreover, it is used to decide whether or not the code is ready for more advanced testing.
In short, by performing this testing you can not only guarantee the quality of the product, but also ensure its proper functioning.