前回の記事「カバレッジを始めよう!#1 ~カバレッジって何?~」では、
コードカバレッジにおいて基本的な「ステートメントカバレッジ」についてご紹介をしました。
今回は、さらに強度の強いカバレッジ基準「ブランチカバレッジ」「MC/DC」についてご紹介します。
ブランチカバレッジ
ブランチカバレッジは、分岐に着目したカバレッジです。
全ての分岐の真/偽の経路を実行すれば100%になります。(図1)
図1:ブランチカバレッジの例
ステートメントカバレッジの場合、命令文に着目したカバレッジ基準ですので、if文においてelse側を省略している場合など、コーディングされていない処理はテスト対象となりません。
それに対し、ブランチカバレッジは、コーディングの有無に関係なく、すべての分岐の真/偽を確認する必要があります。
また、ブランチカバレッジが100%の時は、ステートメントカバレッジも100%になりますので、ブランチカバレッジは、ステートメントカバレッジより強度の強いカバレッジ基準と言えます。
しかし、このブランチカバレッジにも懸念点があります。
ブランチカバレッジは、分岐の真/偽のパスを通せばOKです。複合条件の場合、各条件式の組み合わせは考慮されないので、判定式内にある不具合を検出できないケースがあります。(図2)
図2:ブランチカバレッジで十分でない例
MC/DC
では、条件・判定を考慮してテストを行うには、どのようにすべきでしょうか?
単純に条件・判定を組み合わせてテストケース考えると、テストケースが膨大になり、実際にテストを実施するのは現実的ではありません。
そこで、検討されるのが「MC/DC (Modified Condition/Decision Coverage)」です。
MC/DCは、条件・判定に対する網羅率ですが、判定の結果に独⽴して影響するものに絞りテストを実施します。
テストケースが少なくなり効率的ですが、カバレッジの考え方が難しいのが懸念点です。
MC/DCに関しては、弊社のホワイトペーパー「知っておきたいMC/DCの計測アルゴリズム- ISO 26262規格で求められるMC/DCの概要 -」に詳しくまとめてありますので、ぜひそちらを参考にしてください。
まとめ
いかがだったでしょうか。ブランチカバレッジは、ステートメントカバレッジより強度の強いカバレッジ基準です。
ステートメントカバレッジだけでは弱いので、「ブランチカバレッジまでは100%を目指すべき」という考え方もあります。
また、もっと厳しい品質を求められている方は、より難しいMC/DCのカバレッジ基準が必要になるかもしれません。
自社の開発環境では、どの基準のカバレッジを取得しなければならないのか、参考にしていただければ幸いです。
関連記事「カバレッジを始めよう!」シリーズ
- カバレッジを始めよう!#1 ~カバレッジって何?~
- カバレッジを始めよう!#2 ~より強力なカバレッジ基準「ブランチカバレッジ」「MC/DC」~
- カバレッジを始めよう!#3~関数カバレッジとコールカバレッジ~
14日間 無料トライアル
- お客様の開発環境で評価いただける14日間の無料トライアル。多彩な解析機能をお試しください!