【てすとかばれっじきじゅん】
テストカバレッジ基準 とは?
最終更新:
💡 どこを通して、何を確かめたかを見る物差し
テストで何をどこまで通したか、確認したかを数えるための基準。実行可能な命令、分岐、個々の条件など、対象によって測る値が変わる。コードの網羅率が100%でも、正しい結果や要件の充足は保証されない。
📌 このページのポイント
- 命令網羅:実行可能な命令をどこまで実行したか
- 分岐網羅:制御の分かれ道をどこまで通ったか
- 条件網羅:個々の条件の真・偽をどこまで試したか
- 数字だけでなく、期待結果の検証と要件も確認する
同じ100%でも、意味が違う?
そうだよ。実行した命令、通った分岐、確認した要件など、何を数えるかで意味が変わる。コードの命令網羅率と、要求された機能をテストした割合を混ぜないようにしよう。基準と対象の全体を先に決めるんだ。
命令と分岐の違いは?
命令網羅は実行可能な命令を通したか、分岐網羅は制御の行き先を通したかだよ。図のifにelseがない例では、trueだけで中の処理は実行できるけれど、falseの道は未確認。ソースの全行を通したことと、すべての分岐を試したことは同じではないんだ。
条件網羅は、全部の組合せ?
個々の条件を真と偽で試す基準だよ。たとえばAとBという条件なら、各条件の結果を見る。真偽のすべての組合せを試す多重条件網羅とは区別する。条件網羅だけで判定全体の両結果を必ず通すとは限らないので、単純な厳しさの順に並べないことが大切だね。
80%を目標にすればいい?
どの開発でも共通の正解になる割合はないよ。障害の影響、変更箇所、未実行のコード、必要な基準を考えて決めよう。100%でも、通しただけで期待結果を確認していなければ不十分。仕様にあるのに未実装の機能は、コードの網羅率だけでは見つけられない場合もあるんだ。
ツールの数字は、どう読むの?
ツールが命令・行・分岐の何を数えるか、除外設定や実行しないコードをどう扱うかを確認するよ。Coverage.pyでは--branchで分岐も測れ、除外した分岐は集計が変わる。率が下がった理由だけでなく、重要な道や境界値を試し、結果を検証できているかを見よう。
まとめ:ざっくりこれだけ覚えればOK!
「テストカバレッジ基準」って出てきたら「テストで何をどこまで確認したかを数える物差し」と思えばだいたいOK!
📖 おまけ:英語の意味
「Test Coverage Criteria」 = テストの網羅基準
💬 coverageはカバーする範囲、criteriaは基準の複数形。何を数えるかを決めてから網羅率を読むことが大切だよ。