Perhaps this is your first product, or perhaps it's your 100th. Either way, it's testing time, baby! But testing time is tricky if you aren't familiar with the nomenclature developers and QA testers use in product development.
Two of those terms are "smoke testing" and "sanity testing." And in this article, we will cover them in detail.
Let's jump into it! 👇
What is smoke testing?
Imagine you’re a bit of a mad scientist who’s just come up with a new invention. The first test would be to turn this device on successfully and hope it doesn't catch fire or start smoking. As comical as this seems, it’s the origin of the phrase “smoke testing” — a test in which you turn something on and wait for the flames.
In the digital age, smoke testing has come to mean the preliminary test or check of a product after development but before the release. Smoke testing is basically when you check whether the most crucial aspects of the product are working.
Smoke testing aims to answer the question, "does it work at least a little bit?"
What is sanity testing?
Sanity testing is a test or a group of tests whose main aim is to establish if a product is in the working state the user expects.
While there is a lot of shared territory between the terms “sanity test,” “smoke test,” and “regression test,” if we zoom out a bit, we can see that each term describes something a little bit different.
Sanity tests are a subset of regression testing (learn more about regression testing in this article). While regression tests can start out as sanity tests, they are often more rigorous and larger in scope than sanity tests. Sanity tests also usually tend to be fewer in number and more focused.
Sanity testing aims to answer the question, "does the product work (or still work) like users expect it to?"
Smoke testing vs. sanity testing: 6 key differences
Now, let’s dive in and take a closer look at some of the key differences between smoke tests and sanity tests so that you aren’t confusing these two very similar kinds of tests — a fault that’s easy to commit!
1. The primary objective
The primary objective of a smoke test is to verify if the basic functionalities of the product are working at all. It is usually the first test to be carried out on any new product. Smoke testing is only surface-level testing to certify that the product is ready for further testing.
The primary objective of a sanity test is to determine if the product works roughly as expected, after the product is already built, typically as a form of lightweight regression testing. Sanity testing also saves time and money by highlighting major problems before users notice them.
2. What it covers
A smoke test assesses the entire product from end to end (but not very deeply). You would test every functionality and feature — no matter how minor. These tests are not in-depth.
A sanity test usually only covers key parts of a product. The test cases you use will dive in deeper than the smoke tests did. You are basically digging a deeper hole with a smaller width.
Smoke testing is usually documented very basically — you write "works" or "doesn't work." Sanity testing is usually undocumented and unscripted. This is because sanity testing is usually one of the last types of tests QA does. Documentation is not needed as the product has already undergone in-depth regression tests.
4. Who is responsible for testing
Smoke testing is usually carried out by developers, product or project managers, or QA – typically done ad hoc, on the fly. Sanity testing is usually carried out by QA testers or developers in a more formalized setting.
5. The level of planning required
Smoke testing is usually ad hoc, you just turn on the product and see if it works. No real planning required.
Sanity testing also doesn't require you to prepare much as the product should be ready for users. The testing needs to be speedy and quick, so instead, you will start by identifying any new functionalities, changes, or bug fixes. Then check if these newly implemented changes are working fine. The product can be passed along for further testing if everything goes well.
6. Where it fits into the Software Testing Life Cycle (STLC)
The Software Testing Life Cycle (STLC) walks developers through testing step-by-step. These steps include:
1. Requirement analysis
2. Test planning
3. Test case design and development
4. Test environment setup
5. Test execution
6. Test cycle closure
Smoke testing is done at the very start, as soon as the product is available, and before any further rigorous testing can be carried out. Sanity testing, on the other hand, is done at the end to check whether all functionalities are working as expected.
Similarities between smoke and sanity testing
Unsurprisingly, there are several similarities between smoke and sanity testing:
- Both tests save time by quickly determining whether a product is working as expected or not.
- Both help cut costs due to the time and effort that they save.
- Both contribute to a massive improvement in quality as they help with the early detection and rectification of bugs.
Advantages and disadvantages of smoke and sanity testing
That's all folks!
If you’ve been struggling to understand the subtle differences between these two kinds of testing, then don’t worry because you’re not alone. Hopefully, this article has prevented your sanity from going up in smoke.
If you’ve read this far, you definitely have a solid understanding of the fundamental differences between smoke and sanity testing. Best of luck to you!
~ Psst – doing QA? Jam is a tool that helps you capture and document bugs faster, saving you lots of time and manual work. Check it out at jam.dev. ~