制御フローテストとは
ホワイトボックステストに分類される体表的なテストである「制御フローテスト」について説明します。
制御フローテストは、ソフトウェアテストの手法の一つであり、プログラムの制御構造をテストすることを目的とします。制御フローは、プログラム内の条件分岐やループなどの制御構造を指します。このテスト手法では、これらの制御構造が正しく動作するかどうかを検証します。
-
基準の選択
制御フローテストでは、プログラムの制御構造に基づいてフローチャートを図示します。
テスト対象のモジュールは動かしません。
-
カバレッジ基準を決める
プロジェクトの性質や要件、およびテストの目的を十分に理解します。例えば、安全性や信頼性が重要な場合はより厳密な基準が必要になる可能性があります。
また、プログラムの性質に応じて適用可能なカバレッジ基準を確認します。命令文カバレッジ、分岐カバレッジ、条件カバレッジなど、さまざまな基準があります。
これらの要素をカバレッジ基準といいます。
-
カバレッジ基準を網羅する経路の抽出
選択したカバレッジ基準に基づいて、テストすべきカバレッジ要素を特定します。例えば、条件文、分岐、ループ、関数呼び出しなどがカバレッジ要素となります。
-
抽出した経路を通るようにテストする
特定したカバレッジ要素を網羅するためのテストケースを設計し、それらのテストケースがどれだけ要素をカバーしているかを評価します。テストケースを実行して、網羅率を評価し、未網羅の要素を特定します。
-
不足しているカバレッジ要素の特定
網羅率の評価を通じて、不足しているカバレッジ要素を特定し、追加のテストケースを設計して網羅率を向上させます。
このようにして、要件とプログラムの構造を理解し、適切なカバレッジ基準を選択して、テストすべきカバレッジ要素を特定し、それらを網羅するためのテストケースを設計します。これにより、ソフトウェアの品質や信頼性を確保するための効果的なテスト活動が可能となります。
カバレッジ基準が命令文: ステートメントカバレッジ
ステートメントカバレッジは、プログラム内の各行 (ステートメント) がテストされた割合を示す指標です。つまり、テストがプログラムのどの部分を実行したかを評価するためのものです。
着目する要素を命令文を選択した場合、それをステートメントカバレッジといいます。
例えば、あるプログラムが10行のコードで構成されているとします。ステートメントカバレッジが100%の場合、テストスイートがその10行のすべての行を少なくとも1回は実行したことを意味します。しかし、カバレッジが50%の場合、テストがプログラムの半分の行を実行したことを意味します。
ステートメントカバレッジの目的は、プログラムの各行が少なくとも1回は実行されるようなテストケースを設計することです。これにより、プログラムの各部分が正しく動作し、意図したとおりに動作することを確認することができます。
つまり、ステートメントカバレッジは、テストスイートがプログラムのどの部分を実行したかを評価するための指標であり、プログラムの品質や完全性を評価するのに役立ちます。
カバレッジ基準が分岐した経路: デシジョンカバレッジ
着目する要素を分岐した経路を選択した場合、それをデシジョンカバレッジといいます。
デシジョンカバレッジは、ソフトウェアテストにおけるカバレッジ基準の一つで、プログラム内の条件文 (デシジョン) がテストされた割合を示します。つまり、条件文がどれだけの割合で真と偽の両方の結果を持つかを評価する指標です。
例えば、あるプログラムには条件文が3つあるとします。それぞれの条件文が真と偽の両方の結果を持つ場合、合計で6つの可能な組み合わせがあります。デシジョンカバレッジが100%の場合、テストスイートがこれらすべての組み合わせをカバーしたことを意味します。一方、50%の場合、テストが組み合わせのうちの半分をカバーしたことを示します。
デシジョンカバレッジの目的は、条件文の真と偽の両方のケースを十分にテストすることです。これにより、プログラム内の条件分岐が正しく動作し、意図したとおりに振る舞うことを確認することができます。
簡潔に言えば、デシジョンカバレッジは、プログラム内の条件文がどれだけの割合でテストされたかを示す指標であり、プログラムの品質や信頼性を評価するのに役立ちます。
カバレッジ基準が条件: 複合条件カバレッジ
着目する要素が条件を選択した場合、それを複合条件カバレッジといいます。
複合条件カバレッジは、ソフトウェアテストにおけるカバレッジ基準の一つで、複数の条件を組み合わせた条件式がテストされた割合を示します。つまり、複数の条件が組み合わさった条件式がどれだけの割合で真と偽の両方の結果を持つかを評価する指標です。
例えば、条件式「A かつ B」という複合条件があるとします。この条件式には、AとBの2つの単純条件が含まれます。複合条件カバレッジが100%の場合、テストスイートが「A かつ B」の組み合わせを全てテストしたことを意味します。一方、50%の場合、テストが半分の組み合わせをカバーしたことを示します。
複合条件カバレッジの目的は、複合条件が構成する各単純条件の組み合わせを十分にテストすることです。これにより、プログラム内の複雑な条件式が正しく評価され、意図したとおりに振る舞うことを確認することができます。
要するに、複合条件カバレッジは、複数の条件を組み合わせた条件式がどれだけの割合でテストされたかを示す指標であり、プログラムの品質や信頼性を評価するのに役立ちます。
以下の図はロボットが信号のある横断歩道に到着した際に、信号の状況によって歩行速度が変化する使用をフロー図で表したものです。
さらに、フロー図で表し、テストケースを作成しています。
- 信号が青ならば、速度を変更せず歩行を続ける
- 信号が黄色ならば、速度を20%UPして歩行する
- 信号が赤ならば、速度を0km/hにする (歩行停止)