Loading

Smoke Testing


Professionalqa smoke testing image

What is Smoke Testing?

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.

Smoke Testing

Before moving forward, let's have a small overview of build or software builds to make smoke testing concept more easy and clear.

What is a build?

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.

Software Build

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.

Smoke Testing Term Origin

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.

smoke in hardware

  1. 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.


  2. ventilation system

  3. 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).

  4. Features of Smoke Testing

    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:

    • Also known by the name of Build Verification Test, smoke test is performed over initial software build.
    • Smoke test is performed over initial software build to reveal simple failures in the functionality of the software product.
    • Works as a Gatekeeper to accept or reject the build based on its stability to undergo through further rigorous and in-depth testing activities.
    • As smoke testing decides the path of the build for further testing process, it is also termed as intake test.
    • Only basic functionalities & no in-depth or minute details are covered under this test.
    • Rejection of unstable build saves time and efforts of the QA team.
    • Smoke testing is a subset of regression testing and not its substitute.
    • As, no in-depth testing is needed and only basic working is required to be checked, it may be performed either by developer or tester.
    • Test cases must be chosen in a way, such that they covers all critical functionalities.
    • Smoke tests may be executed either using manual approach or with the help of automation.
    • Requires proper documentation.
    • Useful in revealing integration issues and early detection of major defects.
    • It is, generally applicable to integration testing, system testing and acceptance testing.
    • It can be categorized as functional tests or unit tests.

    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.

    Smoke Test Implementation

    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:

    • Preparation of sets of test cases, that can commonly, work on each build, released by the developer.
    • These sets should cover the major functional areas, and there is no need to consider low-level details of the build.
    • Automation can proves to be efficient and worthy, in smoke test suites. However, combination of both manual and automated may also be considered.
    • For better results, test cases can also be exposed to developers, in advance, so as to make them aware, about the desired qualities.

    Are Smoke Testing and Sanity Testing Same?

    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.

    Smoke testing vs Sanity testing

    Advantages of Smoke Testing:

    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:

    • Useful in detecting bugs in the early stage of development life cycle.
    • Useful in identifying and locating integration issues (if any).
    • Smoke test can be executed within few minutes for a particular build.
    • Ensures that the fixation process or action for the previous build does not any sort of impact on the existing functionalities.
    • Requires limited number of test cases to carry out the smoke testing activity.
    • By implementing smoke testing, the team can validate the functionality of the product as well as various other aspects, like its security, privacy policy, performance, etc.
    • It offers the advantage of getting faster feedbacks as it is frequently run quickly.

    Disadvantages of Smoke Testing:

    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.

    Things to Consider:

    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:

    • Perform smoke testing during the early stages of software development.
    • The test prepared for smoke testing should be short and concise.
    • Team should document all the smoke tests accurately, with necessary & critical details and reports.
    • The process should be automated whenever possible.
    • While performing smoke testing the team should prepare a test case repository.

    To further ensure that the process of smoke testing is performed successfully prepare a smoke testing checklist and enhance the quality of your testing.

    Conclusion:

    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.