Introduction
Like death and taxes, testing is both unpleasant and inevitable. Theorists may dream of the day when provably correct programs can be written so that testing can be eliminated -- but aside from modest university exercises, it's virtually unthinkable to expect that anyone can develop a useful, nontrivial piece of software without subjecting it to rigorous testing.