Software retest, regression, smoke and sanity testing: What's the difference?
What is the difference between retesting and regression testing? And the
difference between smoke testing and sanity testing?
Retesting is when you are testing a specific defect that has been marked or tagged by the
developers as ready for testing in the build in which you are working. Regression testing is when
you are testing around specific areas of an application where defects have been fixed to ensure
that no other issues have been introduced. Retests and regression testing often happen in close
proximity-- both time-wise and functionality-wise-- and so as a result, you may have heard the
terms used interchangeably.
Smoke testing refers to a short series of tests that are executed to make sure that the build
appears to be reasonably working-- the build appears to be functional. Sanity testing is the same
as smoke testing. There seem to be many terms used for smoke testing; I've also heard the term acid
testing. If a major part of the functionality is found to not be working from a smoke or sanity
test, then the build is often turned back to development. Smoke testing doesn't prove everything is
working, but usually provides a sense that the build is good enough to begin testing in
This was first published in November 2010