The Independent Double-Check

[article]
Summary:
When someone gives us a piece of code to test, they are telling us, either implicitly or explicitly, "This code works correctly." If we accept this assertion without verifying it for ourselves, we have failed as testers. While it seems unlikely that we would ever let such an assertion go unchallenged, it is easier to do than one might think.

Fiona Charles' article “ The Skeptical Tester ” struck a chord with me. In it, she states that the worst mistake a tester can make when starting out on a project is "believing what you’re told and accepting what you’re given." I completely agree. Not only is accepting something uncritically a fundamental mistake when testing, it is probably the fundamental mistake.

When someone gives us a piece of code to test, they are telling us, either implicitly or explicitly, "This code works correctly." If we accept this assertion without verifying it for ourselves, we have failed as testers. While it seems unlikely that we would ever let such an assertion go unchallenged, it is easier to do than one might think.

In a previous life, I was a gunner with the local reserve artillery unit. As one would expect, operating huge cannons that can fire a 15 kg explosive shell up to 18 km is an inherently dangerous activity. A trivial mistake can result in catastrophic consequences. Thus, one of the cornerstones of gunnery is the independent double-check : Everything that affects the operation of the guns—every calculation, observation, order, or adjustment—must be independently verified by two different people.

The forward observation officer (FOO) is in charge of directing the fire of the guns. I was a FOO tech, who assists the FOO by independently verifying the observations, calculations, and fire orders the FOO makes. I like to think of it as my first QA job.

As a FOO tech, your job is to object when your FOO makes a mistake. The FOO is several ranks your superior, has many more years' experience, and is the person to whom you directly report. Refusing to be intimidated by this difficult social dynamic is crucial to doing your job. If you uncritically accept what the FOO says, you are shirking your duty to be an independent double-check and putting everyone's safety at risk.

As testers, we are often given code to test by developers who are more experienced than us, or by the managers to whom we report. We may be assured that a change is low-risk or that a certain set of conditions will never occur. If we rationalize away our objections instead of voicing them, or accept that others are probably correct because they are our superiors, we have abdicated our responsibilities. A good tester heeds his or her own professional judgement and makes sure that alternative perspectives get considered. That's how we fulfil our role of being an independent double-check.

User Comments

1 comment
Robin Goldsmith's picture

In fact, as I point out in a series of SearchSoftwareQuality.com featured articles, failure to independently double-check is much more common than recognized.  When a tester’s definition of expected results is influenced by the actual results, the test is neither independent nor a double check. 

 

 Such undue influencing is inevitable when expected results are not defined separately from and prior to executing the test that produces the actual results.  While we might expect such delusionary relying on “I’ll know a defect when I see it” from developers and others who don’t specialize in testing, recognize that it’s also integral to most exploratory testing.

July 10, 2015 - 7:39am

About the author

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!