ソフトウエアやシステムの内部構造に着目するホワイトボックス・テストでは,処理の複雑さや機能の重要度などを考慮して,適切なカバレッジ基準を選択してテストを実行することがポイントになります。

 ホワイトボックスのテスト設計技法として最も有名なのは,「制御パス・テスト」という技法です。一般的に「単体テストではカバレッジを確認するようにしてください」という指示がある場合は,たいてい制御パス・テストで計測できるカバレッジを指しています。

 制御パス・テストは関数やメソッドのロジックの処理経路(パス)を動かすテスト方法です。制御パス・テストには,複数のカバレッジ基準があります。JSTQB*1の用語集から,どのような基準があるかを図1に整理してみました。カバレッジといってもこのようにいろいろなものがあり,どのカバレッジ基準を適用するかによってどこまでテストをすれば良いかが大幅に変わってきます。

図1●制御パステストのカバレッジ基準。ソフトウェアテスト標準用語集(日本語版)1.1(http://www.jstqb.jp/syllabus.html)を参考にした
図1●制御パステストのカバレッジ基準。ソフトウェアテスト標準用語集(日本語版)1.1(http://www.jstqb.jp/syllabus.html)を参考にした
[画像のクリックで拡大表示]

 では,図1から代表的なカバレッジ基準についていくつか詳しく説明していきましょう。

ステートメント・カバレッジ

 ステートメント・カバレッジでは,テスト対象のコード中の実行可能ステートメント(命令文)のうち,テストによって何パーセントを実行したかをカバレッジ基準として評価します。ステートメント・カバレッジの例として図2のメソッドをテスト対象として説明しましょう。

図2●メソッド例
図2●メソッド例

 図2のソースコードをフローチャートで表現すると図3のようになります。

図3●図2のフローチャート
図3●図2のフローチャート

 ステートメント・カバレッジでは,フローチャートの命令文を表現している部分(四角の部分)をすべて実行していることを確認します。例えば図3のフローチャートの場合は,引数にそれぞれ【a=4,B=0,C=7】というデータを与えてテストをすれば,ステートメント・カバレッジを100%満たしたテストを実施できたことになります(図4)。

図4●ステートメント・カバレッジ
図4●ステートメント・カバレッジ
[画像のクリックで拡大表示]

 したがって,ステートメント・カバレッジのためのテスト・ケースは以下の一つで良いことになります。

テスト・ケース1
  入力値【a=4,B=0,C=7】 期待結果 7
  ⇒命令(1),(2),(3),(4)を通過