Smoke Testing vs. Sanity Testing: What You Really Need to Know
If you spend any time in forums in which new testers can be
found, it won’t be long before someone asks “”What is the difference
between smoke testing and sanity testing?”
“What is the difference between smoke testing and sanity testing?” is a unicorn question. That is, it’s a question that shouldn’t be answered except perhaps by questioning the question: Why does it matter to you? Who’s asking you? What would you do if I gave you an answer? Why should you trust my answer, rather than someone else’s? Have you looked it up on Google? What happens if people on Google disagree?
But if you persist and ask me, here’s what I will tell you:
The distinction between the smoke and sanity testing is not generally
important. In fact, it’s one of the most trivial aspects of testing
that I can think of, offhand. Yet it does point to something that is important.
Both smoke testing and sanity testing refer to a first-pass, shallow
form of testing intended to establish whether a product or system can
perform the most basic functions. Some people call such testing “smoke
testing”; others call it “sanity testing”. “Smoke testing” derives from
the hardware world; if you create an electronic circuit, power it up,
and smoke comes out somewhere, the smoke test has failed. Sanity
testing has no particular derivation that I’m aware of, other than the
common dictionary definition of the word. Does the product behave in
some crazy fashion? If so, it has failed the sanity test.
Do you see the similarity between these two forms of testing? Can
you make a meaningful distinction between them? Maybe someone can. If
so, let them make it. If you’re talking to some person, and that person
want to make a big deal about the distinction, go with it. Some
organizations make a distinction between the smoke and sanity testing;
some don’t. If it seems important in your workplace, then ask in your
workplace, and adapt your thinking accordingly while you’re there. If
it’s important that you provide a “correct” answer on someone’s idiotic
certification exam, give them the answer they want according to their
“body of knowledge”. Otherwise, it’s not important. Don’t worry about it.
Here’s what is important: wherever you find yourself in your
testing career, people will use language that has evolved as part of the
culture of that organization. Some consultancies or certification mills
or standards bodies claim the goal of providing “a common worldwide
standard language for testing”. This is as fruitless and as pointless a goal
as a common worldwide standard language for humanity. Throughout all
of human history history, people have developed different languages to
address things that were important in their cultures and societies and
environments. Those languages continue to develop as change happens. This is not a bad thing. This is a good thing.
There is no term in testing of which I am aware whose meaning is
universally understood and accepted. There’s nothing either wrong or
unusual about that. It’s largely true outside the testing world too.
Pick an English word at random, and odds are you’ll find multiple
meanings for it. Examples:
- Pick (choose, plectrum for a guitar)
- English (a language, spin on a billiard ball)
- word (a unit of speech, a 32-bit value)
- random (without a definite path, of equal probability)
- odds (probability, numbers not divisible by two)
- multiple (more than one, divisible by)
- meaning (interpretation, significance)
Never mind the shades and nuances of interpretation within each
meaning of each word! And notice that “never mind”, in this context, is
being used ironically. Here, “never mind” doesn’t mean “forget” or
“ignore”; here, it really means the opposite: “also pay attention to”!
Not only is there no universally accepted term for anything, there’s
no universally accepted authority that could authoritatively declare or
enforce a given meaning for all time. (Some might point to law,
claiming that there are specific terms which have solid interpretations.
If that were true, we wouldn’t need courts or lawyers.)
If you find yourself in conversation (or in an interview) with
someone who asks you “Do you do X?”, and you’re not sure what X is by
their definition, a smart and pragmatic reply starts with, “I may do X,
but not necessarily by that name.” After that,
- You can offer to describe your notion of X (if you have one).
- You can describe something that you do that could be interpreted as X. That can be risky, so offer this too: “Since I don’t know what you mean by X, here’s something that I do. I think it sounds similar to X, or could be interpreted as X. But I’d like to make sure that we both recognize that we could have different interpretations of what X means.”
- You can say, “I’d like to avoid the possibility that we might be talking at cross-purposes. If you can describe what X means to you, I can tell you about my experiences doing similar things, if I’ve done them. What does X mean to you?” Upon hearing their defintion of X, then truthfully describe your experience, or say that you haven’t done it.
If you searched online for an answer to the smoke vs. sanity
question, you’d find dozens, hundreds of answers from dozens, hundreds
of people. (Ironically, the very post that introduces the notion of the unicorn question
includes, in the second-to-last paragraph, a description of a smoke
test. Or a sanity test. Whatever.) The people who answer the smoke
vs. sanity question don’t agree, and neither do their answers. Yet
many, even most, of the people will seem very sure of their own answers.
People will have their own firm ideas about how many angels can fit on
the head of a pin, too. However, there is no “correct” definition for
either term outside of a specific context, since there is no authority
that is univerally accepted. If someone claimed to be a universally
accepted authority, I’d reject the claim, which would put an instant end
to the claim of universal acceptance.
With the possibile exception of the skills of memorization, there is
no testing skill involved in memorizing someone’s term for something.
Terms and their meanings are slippery, indistinct, controversial, and
context-dependent. The real testing skill is in learning to deal with
the risk of ambiguity and miscommunication, and the power of expressing
ourselves in many ways.
0 comments:
Post a Comment