The Independent Double-check
Fiona Charles' article “The Skeptical Tester” struck a chord with me. In it, Charles 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 we, 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.