Regression, Smoke and Sanity Testing – What’s the Difference?

Our blog posts are available in audio! Listen on the go and when you want to learn something new but don’t feel like reading.

If you are new to manual testing services, distinguishing between regression, smoke, and sanity testing can be a challenge. The boundaries between these test types are blurry sometimes. Nevertheless, they are three different elements of software testing services that have considerable differences.

What Is Regression Testing?

Regression testing service covers the unchanged parts of software to discover whether newly added features have affected the existing functionality. QA engineers check all features regardless of what part of the code has changed.

Why is it important?

Software is a complex system. Take a component out or add a new one, and you can’t be certain how it reacts. It is like playing Jenga. You reconstruct a tower, and the tower remains stable until it’s not. Players have to check the tower after every iteration. The balance changes every time, so even the elements no one has touched yet are affected. It works the same way in software development.

When to perform regression testing?

  • After enhancing software with new features.
  • After making code changes due to the updated requirements.
  • After fixing bugs.

What Is Smoke Testing?

QA team runs smoke tests every time they get a new software build. Simply put, it takes place after every time developers change code and convert it into an updated application. Smoke testing means can reject a badly broken build or pass it for further check.

Why is it important?

Smoke and regression testing are different links of the same chain of the quality verification process. Smoke tests help to make sure that critical app features work as expected. Otherwise, there is no need to proceed to more complicated checkup. Smoke testing makes it possible to detect serious bugs at the earliest stages, reject the build, and send code to rework. The QA team doesn’t risk losing time for long and complicated testing of software that is knowingly broken. To continue playing Jenga, players need to make sure that the tower is still standing.

When to perform smoke testing?

  • After developers add new features to existing functionality.
  • When there is a fresh software build, either new or slightly changed.

What Is Sanity Testing?

Sanity and regression testing go hand-in-hand. Sanity check has to prove that certain features work according to the tech requirements. Unlike smoke testing, it is more specific and provides a more in-depth check of the core functions. QA engineers parts that may have been affected by code or environment changes. Unlike regression, it is a quick check that doesn’t consider all the details.

Why is it important?

Sanity check takes place after smoke testing, when the software build is already stable, and before regression when the QA team checks everything. Sanity checks help to optimize testing time. It is important to verify the rational behavior of a system before QA engineers proceed to time-consuming regression testing. Back to Jenga, this is an in-depth evaluation of the next element you are going to remove. You don’t check each piece to find the best pick, only several parts.

When to perform sanity testing?

  • In case a software build has undergone many regression tests.
  • If there are minor changes in the code.
  • When a build comes after bug fixing and deployment is due.

Regression vs Smoke vs Sanity – Software Example

Jenga is fun, but explaining smoke testing and sanity testing based on software examples would be more effective than using metaphors. Let’s suppose, developers work on a fitness app. It has been on the stores for a while, and an updated version is out soon.

When the new build is ready, it’s time for smoke testing. QA team checks if it’s possible to install the app, launch it, and log in. If it’s not, it is too early for further testing, as it covers more complex functionality. Developers need to fix the issues first.

If everything is okay, the QA team starts a sanity check. Sanity check covers the basics: whether all tabs are accessible, video/audio plays, BMI is calculated correctly, calories add up, etc. This is a manual check of the basic functions of every module.

Then comes regression testing. Some believe that smoke and sanity tests are a part of regression. The others consider them to be independent checkups that prepare software for regression. Anyhow, regression is a deep check that covers every single detail in functional features and GUI. For example, QA engineers need to make sure that adding a barcode scanner hasn’t broken the password reset or layout of the weekly progress page. Until they do, they can’t be certain.

Bottom Line

Smoke and sanity testing focus on different aspects of the software. Smoke testing aims to cover crucial functional features in a short time. Sanity checks are about deeper analysis of each of those crucial features. Both aim to optimize time and resources, identifying flaws at early stages. Smoke testing and sanity checks help to prepare software for further testing. They reveal whether the system is ready for careful in-depth analysis that comes with regression.

Inna Feshchuk: