Smoke Testing

We all may wonder who created the term ‘Smoke Test’ and what exactly does it mean in the software industry. Let us get a clear understanding of ‘Smoke Testing’.

Definition – What does Smoke Testing mean?

Smoke Testing, also known as ‘Build Verification Testing’, is a type of software testing that comprises of a non-exhaustive set of tests that aim at ensuring that the most important functions work. The results of this testing is used to decide if a build is stable enough to proceed with further testing.

The term itself is derived from the electronic industry. While repairing a hardware component, if the equipment works with no smoke, the component is said to have passed the test.

Smoke testing covers almost all the main functions of the software but none of them in depth. The result of this test decides whether to proceed with further testing. If the smoke test passes, go ahead with further testing. If it fails, halt further tests and ask for a new build with the required fixes. If an application is badly broken, detailed testing might be a waste of time and effort. Smoke testing is normally used in Integration Testing, System Testing and Acceptance Testing levels. Do NOT consider smoke testing to be a substitute of functional/regression testing.

In Smoke Testing, the test cases chosen cover the most important functionality or component of the system. The objective is not to perform exhaustive testing, but to verify that the critical functionality of the system are working fine. For Example a typical smoke test would be – Verify that the application launches successfully, Check that the GUI is responsive … etc.

As a result of smoke testing, the tester can decide whether the project version is stable enough to be passed to the next, more careful testing phase. A tester needs to ask simple questions ‘Can tester able to access software application?’, ‘Does user navigates from one window to other?’, ‘Check that the GUI is responsive?’ etc.

Smoke Testing Example
In a project there are five modules like login, view user, user detail page, new user creation and task creation etc. In these five modules, the developer will first perform the smoke testing by executing all the major functionality of modules like user is able to login with valid login credentials or not, after login new user can be created or not, user that is created is viewed or not etc. It makes it obvious that the smoke test is always done by developing team before submitting the build to the testing team.

Advantages of Smoke testing:

  • It helps to find issues introduced in integration of modules.
  • It helps to find issues in the early phase of testing.
  • It helps to get confidence to tester that fixes in the previous builds not breaking major features (only features exercised by smoke testing).

Facts about smoke testing:

  • A smoke test is a subset of the test cases that is typically representative of the overall test plan.
  • Smoke tests are good for verifying proper deployment or other non invasive changes.
  • They are also useful for verifying a build is ready to send to test.
  • Smoke tests are not substitute for actual functional testing.

Smoke testing is the most cost-effective method for identifying and fixing software defects; and some people even believe that it is the most effective way of testing at all.