In brief, debugging is what you
do after you have executed a successful test case. Remember that a
successful test case is one that shows that a program does not do what
it was designed to do. Debugging is a two-step process that begins
when you find an error as a result of a successful test case. Step 1 is
the determination of the exact nature and location of the suspected
error within the program. Step 2 consists of fixing the error.
As necessary and as integral as debugging is to program testing, this
seems to be the one part of the software production process that programmers enjoy the least.