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.

About the author

Rick Scott's picture Rick Scott

Rick Scott is a Canadian philosopher-geek who's profoundly interested in how we can collaborate to make technology work better for everyone. He's an incorrigible idealist, an open source contributor, and a staunch believer in testing, universal access, and the hacker ethic. When he's not in front of a computer, you'll find him out on the hiking trails, in the kitchen turning out cupcakes, or cleaning up his viola technique in the basement.

StickyMinds 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!

Upcoming Events

Aug 25
Aug 26
Sep 22
Oct 12