マトモなプログラマなら半分の関数を、コンパイルが通ったときに既にバグが無いように作る。そして、3回見直せば、ほぼその関数にバグは無いと言っても良い。
じゃぁなぜバグが発生するのか。バグが、関数の中ではなく、関数と関数の間にあるからだ。関数単体では「バグが無い」と自信を持つのは簡単でも、200行のソースファイルの中にバグが無いと確信を持つには時間がかかる。グローバル変数20個を使った、1000行を超えるソース?バグがあるに決まってる!
ここで、モジュールテストが必要になる。モジュールとは、複数の関数と、ひょっとしたら幾つかのグローバル変数を含むものだ。1関数=1モジュールとなる場合もあるだろうけど、それはクイックソートのような例外ね。