Smoke Testing

Professionalqa smoke testing image

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.

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

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

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

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.

smoke in hardware

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.

ventilation system

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.

Features of Smoke Testing

  • Also known by the name of Build Verification Test, smoke test is performed over initial software build.
  • 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.

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

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.

Is Smoke Testing and Sanity Testing, same?

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.

Smoke Vs Sanity

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.

Advantages of Smoke Testing

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

Disadvantages of Smoke Testing

  • It considers only basic extensive testing and not the in-depth testing of the functionalities.

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.