C1カバレッジの前に、C0カバレッジの問題点を振り返ります。C0はプログラムの各命令文(例えば「a = a + 1」)だけに着目したものです。そのため、分岐を考慮せず、テストに漏れが発生します(*2)。
C1カバレッジは、C0の欠点である「分岐の網羅不足」に対策したテスト手法で、if文内の「真」「偽」両方を実行します。次のフロー(図.1)から考えましょう。
図.1は、2つの条件文 A Bと2つの命令文(1)(2)を持った制御フローです。このフローからC1カバレッジ100%を満たすテスト項目を作成する場合、各条件文を「YES」「NO」に分岐する必要があります。例えば、次が考えられます(表.1)。
表.1 制御フローに対するテスト項目例(C1:100%) | ||
---|---|---|
テスト項目No | 条件文A | 条件文B |
1 | YES | YES |
2 | NO | NO |
表.1はテスト項目例を表しています。テスト項目No.1では、条件文 A Bがどちらも「YES」のパス、No.2では、どちらも「NO」のパスを通るように作成しました。ちなみにパスを通りさえすれば、通る方向は関係ありません。つまり、1個目で条件文A:「YES」、条件文B:「NO」に、2個目で条件文A:「No」、条件文B:「YES」のように作成しても構いません。通過したパスを図.1上に重ねて記述すると、図.2になります。
図.2は、表.1のテスト項目の実行パスを示したものです。2つの条件文の「真」「偽」が実行されていることが確認でき、C1カバレッジ100%と言えます(*3)。
C1カバレッジの利点は、テスト量が少なく、具体的な数字で表現でき、説得力があることです。次節で詳しく説明します。
Copyright © ITmedia, Inc. All Rights Reserved.