Smoke testing is done iteratively whenever new developments are made in the project. It is done to check if the build received is ready to be tested or not. Whenever a new functionality is added, it is tested by the QA engineers using non-exhaustive test cases. All the critical functions are tested and if the build passes through these tests, it is passed on to further phases of testing. If the build does not pass the smoke test, it is rejected and the build has to go back to the development phase again. Smoke testing is done to ensure stability whenever the build configuration changes.