パス・カバレッジはきちんと網羅しようとすると超級面倒で、時間とコストが必要となります。しかも、以下のような大きな問題があります。
最も簡単なC0網羅でも(*4)実行するパスは非常に多く、出力されるデータの整理が大変です。パス・カバレッジをする時は、必ず、ツールを使いましょう。パス網羅ツールを使わず、紙に印刷したソースコードをラインマーカーで塗るのは石器時代のテストで、C0の場合はまだしも、C1の場合、パスが全部で何本あるかを手で数えるのは非現実的です。
携わるプロジェクトで、手作業でパス網羅を実施しているプログラマーから、「C0を100%網羅しました」と報告を受けても、うのみにしてはなりません。私なら信じません。必ず、ツールを使いましょう。
パス網羅の中で、最も面倒なC2を100%網羅しても、バグ0にはなりません。例えば、「機能漏れのバグ(*5)」は、C2網羅100%でも検出できません。
プログラマー時代の私の大先輩の2つの口癖が、「プログラムが走らないと、プログラマーが走りまわる」「プログラムは、期待した通りではなく、作った通りに動く」でした。後者が「C2 100%網羅はバグゼロではない」理由を説明しています。
C2が網羅するのは「作った通り」の部分で、「作った通り」を100%網羅しても、「期待した通り」のテストにはなりません。実際のテストは、「期待した通り」に動くかをチェックしなければならないのです。「機能が存在しない」ということは「ソースコード上に存在しない」ので、C2網羅が100%でも、巨大なバグは手つかずで残っています。
機能の漏れを検出するには、ソースコードではなく「機能のC0、C1、C2カバレッジ」を100%網羅しなければなりません。このためには、要求仕様書を1行ずつチェックし、機能を全て網羅していることを確認し、ラインマーカーで塗りつぶす地道な作業が必要になります。
Copyright © ITmedia, Inc. All Rights Reserved.