I have read several posts regarding smoke and sanity testing. All are almost confusing. Neither explaining them clearly,just repeating the matter except some two or three posts and based on that two or three posts i concluded that following is the formal process:

Smoke testing(generalized health checkup)---then--> Sanity Testing(checking functionalities to deepest level)(Specialized health checkup)----------------then--------> Functional testing(full functionality checking)

Am I right in above concept?

I have confusion regarding when sanity is performed. Smoke is performed when build comes very first time. But when sanity is performed? Is sanity is performed only after every smoke OR it is performed every time build undergoes some change(i.e. even when smoke is not performed because smoke is performed only first time build comes) OR in both cases?

[EDIT]i want to made it clear here that i am not asking here for difference between smoke and sanity as many people are marking it duplicate for another question in which user has asked for difference between two. Here i am asking WHEN and HOW OFTEN sanity is performed in testing life cycle.

[EDIT] Thanks all for giving time to this question. Though it is not duplicate still marked duplicate. Anyways. I found my answer here.

  • @MichaelDurrant No.Its not duplicate . Here i am not asking for difference but asking when and how often sanity is performed in build creation cycle.I will be thankful if someone will explain based on their experience in companies as a tester.
    – a Learner
    Aug 26 '16 at 1:44

Technically I'd say both are kind of interchangeable. The goal of either is to "peer at it as through smoke" or "ensure I'm sane and still looking at the same thing I was". The concept is that a basic structural integrity check is performed to ensure that the app is at least functioning and nothing went wrong during code build/deployment. Basic connections and limited functionality like login, navigate, add/remove a record are performed which would ensure database connectivity as well as general code performance.

Functional is targeting specific functionality with requirements backing them. Often if smoke/sanity testing isn't done a bad deployment may happen and waste everyones time as the testers hit it and find so many issues to start with it's embarrassing the code made it to be deployed. Usually 1 tester does this before broadcasting that it's "ready for testing".

  • i made sure to post b4 i read yours ('an answer was posted') but sure enough we used the same work interchangeably ! Aug 26 '16 at 1:37
  • 1
    it happens, we posted about the same time...no worries, just adds confirmation to requester :)
    – mutt
    Aug 26 '16 at 1:43

I would use smoke and sanity fairly interchangeably.

They are both usually testing the happy path, often the primary 'money' path for commercial applications.

They can used to check that a production (or other environment) build has generally succeeded. In test environments they can prevent the need for further lengthy UI testing if the smoke/sanity test fails.

  • Though the intention of smoke and sanity is same but they are different terms having different meanings with different scopes.
    – a Learner
    Aug 26 '16 at 1:56

You use sanity testing when you want to make sure the software isn't completely broken. If you can't think of a reason to do it, you probably don't need it.


For your question: How often does sanity is performed?

Based on my experience, It is performed initially when a build is delivered to the QA. The result of sanity testing is whether the build is testable or not. Once the sanity testing is done and all the major functionality works properly (Example: Login page, View list of products if product is e-commerce.), regression testing (full functionality) is performed. Once the product becomes stable and the reported bugs are fixed and code delivery is scheduled, the final process is to do the sanity testing. This time it is more like a beta testing. The tester should act as a customer and test all the positive paths, think like a customer and test in a customer's workflow and if possible, in customer's environment setup - say less memory, less bandwidth, older browser versions etc.,

At a high level, Sanity is performed at initial internal releases and at the final release to the customer or to the market.


Smoke Test:

  • Its expected to perform Smoke Test before starting a Testing
  • It would be better to say, Result of Smoke Test will help to decide whether to accept build and proceed for testing or reject
  • Smoke Testing include Verification of basic happy flow[positive flow] according to mentioned in release notes
  • This should be carried out in quick time less than an hour[May vary according to projects and scope]

Sanity Test:

  • Its advisorable that we should perform Sanity Testing when new feature implemented and ready to integrate
  • It would be better to initiate Sanity Testing before feature integration to main app
  • Sanity Testing include Testing feature throughly with considering Feature Specifications, Exploratory[Negative scenarios], Smallest & all functional corners
  • This will be one of the deepest level of testing. We can conclude overall result of Sanity testing to decide & plan to integrate in main app

Not the answer you're looking for? Browse other questions tagged or ask your own question.