Smoke , Sanity And Regression Testing: Story Of Siblings

There are three most confusing terms for Testers including both beginner and experienced:

  1. Smoke Testing or suite
  2. Sanity Testing or suite
  3. Regression Testing or suite

We always use these words wrongly but we do work correctly. People understands what they need to test and they do it but confuse with words. I will try best to keep my points here to make people understand above points.

Let’s start from scratch.

A project is generally divided in to different modules or multiple groups of set of requirements. We will take an example of developing an online shopping application. We will divide this project in following modules:

  1. User access or Registration , login and logout ——– > Release 1 or Sprint 1
  2. Listing of products , search, sort, filter——————> Release 2 or Sprint 2
  3. Add to card and checkout——————————-> Release 3 or Sprint 3

Now, both developer and tester will start their work. Developer will start developing and tester will start writing test cases for Release 1. Suppose tester writes 10 test cases including all positive and negative for Release 1. They give priority to each test case and generally positive test cases has higher priority. This suite will contain at least 1-2 test cases on which remaining test cases will be dependent. For example: When user hits the URL, login page of application must be open. If this test case fails, do we proceed to execute further test cases? Obviously No. This test case is called as Smoke Test. Smoke test must be passed to proceed for further testing when developer pushed functionality to QA for testing. This is the reason Smoke testing is also called as “Build Verification testing”.

Assume, smoke test is passed and you accept build for further testing and completed execution of all test cases and log bugs if found. Now work on Release 2 will start. Tester wrote again 20 test cases for Release 2 and mark some basics functionality as Smoke tests for Release 2. Some bugs of Release 1 are also fixed and pushed with Release 2 and also it will be integration of both modules. Now collectively, you need to test Release 2 and Release 1. You have an option of running all test cases from both releases again which will be time consuming. So what you do, you execute all test cases of Release 2 and will pick some test cases based on priority and bug impact areas from Release 1 and execute. Say, you selected 4 test cases out of 10 to execute. These 4 test cases are part of Sanity Suite or Sanity Test. So Sanity is sub set of all test case written for a Release 1 here. Assume Release 2 ends.

In Release 3, again you will find Smoke suite for Release 3 and combined Sanity suite for Release 2 and Release 3.

When all releases are completed or between the releases, you make a suite which generally includes test cases from all modules and have good coverage of functionalities. This suite is bigger than your combined sanity suite. This suite is Regression Suite or Regression Tests.

So generally Smoke, Sanity and Regression are test suits which are executed considering situation, time and resource availability. We can also say that Smoke and Sanity are sub set of Regression suite. Once project is completed, tester also create Smoke, Sanity and Regression considering all modules as a system. As a part of maintenance, tester team executes Smoke test on daily basis to ensure basics functionalities are up and running fine.  Similarly Sanity and regression are also scheduled.

All these suits could be run manually or automated scripts. Hope, I was able to keep my points clearly. Refer below pic for more clarity:


If you have any doubt, feel free to comment below.
If you like my posts, please like, comment, share and subscribe.




4 thoughts on “Smoke , Sanity And Regression Testing: Story Of Siblings

  1. Smoke perform for every built?
    If yes please gave me some example in second release what will be smoke tes scenario.

    Thanks in advance

Leave a Reply

Your email address will not be published. Required fields are marked *