前回の記事「カバレッジを始めよう!#1 ~カバレッジって何?~」では、
コードカバレッジにおいて基本的な「ステートメントカバレッジ」についてご紹介をしました。
今回は、さらに強度の強いカバレッジ基準「ブランチカバレッジ」「MC/DC」についてご紹介します。

ブランチカバレッジ

ブランチカバレッジは、分岐に着目したカバレッジです。
全ての分岐の真/偽の経路を実行すれば100%になります。(図1)

図1_ブランチカバレッジの例

図1:ブランチカバレッジの例

ステートメントカバレッジの場合、命令文に着目したカバレッジ基準ですので、if文においてelse側を省略している場合など、コーディングされていない処理はテスト対象となりません。
それに対し、ブランチカバレッジは、コーディングの有無に関係なく、すべての分岐の真/偽を確認する必要があります。
また、ブランチカバレッジが100%の時は、ステートメントカバレッジも100%になりますので、ブランチカバレッジは、ステートメントカバレッジより強度の強いカバレッジ基準と言えます。

しかし、このブランチカバレッジにも懸念点があります。
ブランチカバレッジは、分岐の真/偽のパスを通せばOKです。複合条件の場合、各条件式の組み合わせは考慮されないので、判定式内にある不具合を検出できないケースがあります。(図2)

図2_ブランチカバレッジで十分でない例

図2:ブランチカバレッジで十分でない例

MC/DC

では、条件・判定を考慮してテストを行うには、どのようにすべきでしょうか?
単純に条件・判定を組み合わせてテストケース考えると、テストケースが膨大になり、実際にテストを実施するのは現実的ではありません。
そこで、検討されるのが「MC/DC (Modified Condition/Decision Coverage)」です。

MC/DCは、条件・判定に対する網羅率ですが、判定の結果に独⽴して影響するものに絞りテストを実施します。
テストケースが少なくなり効率的ですが、カバレッジの考え方が難しいのが懸念点です。
MC/DCに関しては、弊社のホワイトペーパー「知っておきたいMC/DCの計測アルゴリズム- ISO 26262規格で求められるMC/DCの概要 -」に詳しくまとめてありますので、ぜひそちらを参考にしてください。

まとめ

いかがだったでしょうか。ブランチカバレッジは、ステートメントカバレッジより強度の強いカバレッジ基準です。
ステートメントカバレッジだけでは弱いので、「ブランチカバレッジまでは100%を目指すべき」という考え方もあります。
また、もっと厳しい品質を求められている方は、より難しいMC/DCのカバレッジ基準が必要になるかもしれません。

自社の開発環境では、どの基準のカバレッジを取得しなければならないのか、参考にしていただければ幸いです。

【オンラインセミナー】いま、カバレッジ がヤバい!
~そうだったんだ、カバレッジの種類とかんたん計測術~

日時 :2018/09/19(水) 16:00~16:40
参加費:無料