🎸

なぜC1カバレッジを採用するのか?:C1カバレッジとC0カバレッジの比較

2024/04/29に公開

C1カバレッジとは

https://youtu.be/wdTTBxkVpPg

C1カバレッジ、またはブランチカバレッジ(別名:条件カバレッジ)は、ソフトウェアテストのカバレッジ指標の一つです。プログラム内の全ての可能な分岐(if文、ループなどの条件分岐を含む)が少なくとも一度は実行されるかどうかを測定します。このカバレッジの目的は、プログラムの論理的なパスを全て検証し、条件分岐に関連するバグや問題を発見することにあります。

サンプルコード

以下は、年齢に基づく簡単なメッセージ出力機能の実装例です。

def user_message(age):
    if not isinstance(age, (int)):
        return "Error"
    if age >= 18:
        return "OK"
    else:
        return "NG"

テスト実行例

def test_user_message():
    assert user_message("eighteen") == "Error", "非数値入力は'Error'を返すべき"
    assert user_message(17) == "NG", "18歳未満は'NG'を返すべき"
    assert user_message(18) == "OK", "18歳以上は'OK'を返すべき"

このコードは、年齢が18歳以上、18歳未満、非数値の三つのシナリオをカバーしています。

C0カバレッジ(ステートメントカバレッジ)との比較

C0カバレッジ、またはステートメントカバレッジは、プログラムの全てのステートメントが少なくとも一度はテストによって実行されるかどうかを確認するカバレッジ指標です。これが100%であれば、プログラムの全ての命令がテストされたことを意味しますが、全てのバグが検出されるとは限りません。

一方、C1カバレッジはプログラムの各分岐が真と偽の両方の条件でテストされ、より詳細なロジックの検証が可能です。これは、ステートメントカバレッジよりも厳格なテスト基準と考えられます。

なぜC1カバレッジを使うのか?シリーズ

Discussion