Software Engineering basics - Smoke Testing

Smoke Testing

Definition:
Smoke testing is a type of software testing that checks whether the basic and critical functionalities of a software application are working properly after a new build or update.

It is often called a “build verification test” because it helps determine whether a software build is stable enough to proceed with more detailed testing.


Purpose:

The main goal of smoke testing is to quickly verify that the most important features of the system work and that the build is not so broken that further testing would be pointless.


Key Characteristics:

  1. Preliminary Testing: Performed before any detailed or rigorous testing begins.

  2. Covers Core Functions Only: Focuses on essential features, not on deep functionality.

  3. Quick and Shallow: Tests are broad but not detailed.

  4. Performed Frequently: Usually done after every new build or code integration.

  5. Pass/Fail Criteria: If the build passes smoke testing, it proceeds to further testing; if not, it is rejected and sent back to developers.


Example:

Suppose a new build of an online shopping application is released.
Smoke testing might include checking the following:

  • The application launches correctly.

  • User can log in successfully.

  • The product search feature works.

  • Items can be added to the cart.

  • The checkout process completes without errors.

If all these key functions work, the build “passes” smoke testing and can move on to deeper tests like functional or regression testing.
If any of these fail, the build is “rejected” for fixing.


Advantages:

  • Detects major issues early in the testing cycle.

  • Saves time and effort by avoiding detailed testing on unstable builds.

  • Ensures that the main functionalities are intact after every build.

  • Improves overall software quality and stability.


When It Is Performed:

  • After each new build or integration.

  • Before starting regression testing or system testing.


In Summary:

 

Smoke testing is a quick, initial check to verify that the core features of a software application work correctly. It acts as a gatekeeper—if the software passes, it moves to deeper testing; if it fails, developers fix the critical issues first.
In short, it ensures that the build is stable enough to test further.