A software development project is bound with the limitations of time & cost. With the shortening of software development & release cycle, it becomes necessary to execute each and every action and activities with utmost care and attention so as to avoid the occurrence of any sort of issues which may negatively affect the project in the terms of both time & cost. Testing a software application extensively requires good amount of time & efforts. As such, it would be preferred to carry out the testing of a stable module or product, capable of undergoing through various and rigorous testing activities without getting broken so as to avoid the precious time and efforts of testing team.
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 broken or failed.
This testing technique is primarily being used to reject software build(s) and declare it unstable for further testing, at first sight. Basically, a non-exhaustive type of testing that does not involves any in-depth testing rather considers and evaluates basic functionalities like such as if it is able to install and run, proper navigation between different pages, responsiveness of GUI features and many similar basic operations.
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 being passed over to the testing team in order to evaluate the corresponding functionalities of the software application under development. 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.
Numerous theories, studies and logics are available behind the nomenclature of the term "Smoke Testing", out of which only two of these seems to be valid and appropriate for the usage of word 'Smoke' in the said testing methodology.
The term smoke test is primarily seen & used in the hardware industry, where hardware or its component is being tested by plugging it into an electrical source. If smoke comes out of the hardware, then it said to be failed otherwise passed the smoke test. 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).
Last but not the least; smoke occurs when there is a fire and fire means destructive and danger.
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.
Implementation of smoke test requires:
No, they are not same. Sanity testing is possible only after successful passing of the initial builds through smoke testing. Once, declared stable for further testing, build is scanned through system and/or regression testing. After going through multiple regressions, these builds become relatively more stable. At this point of time, need of sanity testing, arises, to ensure that all previous bugs are fixed and any added or deleted functionalities, does not hinders the desired functioning of the software. However, a fail in sanity testing has same result as that of smoke i.e. rejection of the build.
Although, Smoke and Sanity tests are used to test builds, still these two techniques are quite different. Check our new article that clears the air on Smoke testing vs Sanity testing.
As Smoke testing covers only 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 or issues at later stages. Thus, preparing and following smoke testing checklist seems to be a better approach to successfully carry out the smoke testing of the builds.