GAIO CLUB

2025年04月09日

ソフトウェアテストにおけるMC/DCカバレッジ測定方法

技術情報
ソフトウェアテストにおけるMC/DCカバレッジ測定方法

MC/DCとは

MC/DC は、「Modified Condition / Decision Coverage」の略語です。

技術標準においては、航空無線技術委員会(RTCA)が策定したソフトウェア開発のためのガイドライン「DO-178B」などによって、その基準が定められています。これらのガイドラインは、航空業界における安全性を確保するための重要な指針となっています。


テストケースを実施した結果、MC/DCの測定結果が100%となるためには、以下を全て満たすことが条件となります。

1.プログラムの論理式に含まれる全比較式は可能な値を少なくとも一回は実行すること
2.プログラムの全論理式は可能な値を少なくとも一回はテストすること
3.プログラムの論理式の全ての比較式は、論理式の結果に独立して影響を与えるテストケースがあること


プログラムの全ての比較式について MC/DCの基準を満たすことがいえると、1~3の条件を満たすことになります。

and(&&)と or(||)を含まない論理式は、論理式に含まれる比較式が1つだけで、その比較式がTRUEとFALSEになるテストケースを実行すれば、1~3の条件を満たすといえます。
では、and(&&)とor(||)を含む論理式では、どのようなテストケースを実行すれば1~3の条件を満たすといえるのかを、いくつかの論理式を例に説明します。

本記事にて使用する用語・記号の説明

比較式

ブール値を取り,and(&&), or(||), not(!)などの論理演算子を含まない式のことを比較式と呼びます。

論理式

比較式を0個以上のand(&&), or(||), not(!)などの論理演算子で結合した式のことを論理式と呼びます(論理演算子が0個の比較式も論理式となります)。

MC/DCの基準を満たす比較式

次の2つの条件を満たすテストケースがあるとき、その“比較式はMC/DCの基準を満たす”と言います。
・比較式の結果が真(TRUE)および偽(FALSE)であるテストケースをそれぞれ少なくとも1回は実行すること。
・比較式の結果が独立して、論理式全体の結果に影響を与えること。つまり、他の比較式をTRUEかFALSEに固定した場合、その対象の比較式の結果が論理式全体の結果に影響を与えること。

但し、必ずしも他の比較式の値が固定である必要はなく、比較式が確実に論理式の結果に影響を与えていれば良いことになっています。※詳しくは、論理式 (A && B) の補足メモ 1、論理式 (A || B) の補足メモ 2、論理式 ( ( A && B ) || C ) の補足メモ 3補足メモ 4を参照してください。

記号について

・A、B、Cは比較式を表します。
・表の中のTは真(TRUE)、 Fは偽(FALSE)を表します。 「TまたはF」はTRUEでもFALSEでもどちらの値でも良いことを表します。

論理式 (A && B)

論理式に含まれる比較式はAとBです。
論理式( A&&B )のテストケース
比較式Aについて考えます。
Bの値をTRUEに固定した場合、テストケース①と③でAの値はTRUEとFALSEをとり、論理式の値もTRUEとFALSEになるので、比較式Aは論理式の結果に独立に影響を与えるといえます。
よって、テストケース①と③を実行すると、比較式AはMC/DCの基準を満たします。

次に、比較式Bについて考えます。
Aの値をTRUEに固定した場合、テストケース①と②でBの値はTRUEとFALSEをとり、論理式の値もTRUEとFALSEになるので、比較式Bは論理式の結果に独立に影響を与えているといえます。
よって、テストケース①と②を実行すると、比較式BについてMC/DCの基準を満たします。
論理式 A&&B の図
以上より、①②③の3つのテストケースを実行するとMC/DC100%になります。

補足メモ 1

Aの値がFALSEのとき、Bの値に関係なくA&&Bの値はFALSEに決まります。通常、Aの値がFALSEのときは、比較式Bは実行されません。そのため、Aの値がFASLEであるテストケースでは、Bの値に関係なく比較式Aが論理式の結果に独立に影響を与えるといえます。
よって、テストケース①と④を実行した場合も、比較式AはMC/DCの基準を満たします。

論理式 (A || B)

論理式に含まれる比較式はAとBです。
論理式( A||B )のテストケース
比較式 A について考えます。
Bの値をFALSEに固定した場合、テストケース②と③でAの値はFALSEとTRUEをとり、論理式の値もFALSEとTRUEになるので、比較式Aは論理式の結果に独立に影響を与えるといえます。
よって、テストケース②と③を実行すると、比較式AはMC/DCの基準を満たします。

次に、比較式Bについて考えます。
Aの値をFALSEに固定した場合、テストケース①と②でBの値はTRUEとFALSEをとり、論理式の値もTRUEとFALSEになるので、比較式Bは論理式の結果に独立に影響を与えるといえます。
よって、テストケース①と②を実行すると比較式BはMC/DCの基準を満たします。
論理式( A||B )の図
以上より、①②③の3つのテストケースを実行するとMC/DC100%になります。
論理式( A||B )のテストケース2

補足メモ 2

Aの値がTRUEのとき、Bの値に関係なくA||Bの値はTRUEに決まってしまいます。実際には、Aの値がTRUEのときは、比較式Bは実行されません。
そのため、Aの値がTRUEであるテストケースでは、Bの値に関係なく比較式Aが論理式の結果に独立に影響を与えるといえます。よって、テストケース②と④を実行した場合も、比較式AについてMC/DCの基準を満たします。

論理式 (( A && B ) || C )

論理式に含まれる比較式はAとBとCです。
論理式 (A && B) と 論理式 (A || B) を組み合わせて、全比較式についてMC/DCの基準を満たすかどうかを判定します。
論理式 ( ( A && B ) || C のテストケース
比較式Aについて考えま す。
Bの値をTRUE、Cの値をFALSEに固定した場合、テストケース①と②で、Aの値はTRUEとFALSEをとり、論理式の値もTRUEとFALSEになるので、比較式Aは論理式の結果に独立に影響を与えるといえます。
よって、テストケース①と②を実行すると、比較式AはMC/DCの基準を満たします。

次に、比較式Bについて考えます。
Aの値をTRUE、Cの値をFALSEに固定した場合、テストケース①と④で、Bの値はTRUEとFALSEをとり、論理式の値もTRUEとFALSEになるので、比較式Bは論理式の結果に独立に影響を与えるといえます。
よって、テストケース①と④を実行すると比較式BはMC/DCの基準を満たします。

最後に、比較式Cについて考えます。Aの値をFALSE、Bの値をTRUEに固定した場合、テストケース②と③で、Cの値はFALSEとTRUEをとり、論理式の値もFALSEとTRUEになるので、比較式Cは論理式の結果に独立に影響を与えるといえます。
よって、テストケース②と③を実行すると比較式CはMC/DCの基準を満たします。
論理式 ( ( A && B ) || C の図
以上より、①②③④の4つのテストケースを実行するとMC/DC100%になります。
論理式 ( ( A && B ) || C のテストケース2

補足メモ 3

論理式 (A && B) の補足メモ 1と論理式 (A || B) の補足メモ 2の内容を反映させると、テストケース①、②、③については、次の表4のようになります。
補足メモ1と補足メモ2を反映させた論理式 ( ( A && B ) || C のテストケース
①では、A&&Bの値がTRUEなので、Cの値に関係なく論理式の値はTRUEに決まってしまうため、C の値はどちらでも良いということになります。
②、③では、Aの値がFALSEなので、Bの値に関係なくA&&Bの値はFALSEに決まってしまうので、Bの値はどちらでも良いということになります。

補足メモ 4

Masking MC/DCの考え方では、比較式Cが論理式の結果に独立に影響を与えているかどうかをみるときは、A&&Bの値のみを参照し、AとBの値の組み合わせは考慮しません。
つまり、“AとBの値が固定”としてではなく“A&&Bの値が固定”としてCの値の変化で論理式の値が変わるかどうかをみることになります。

テストケース②、③、④、⑤は全てA&&Bの値がFALSEです。②と⑤のペアも、③と④のペアも、④と⑤のペアも、A&&Bの値が固定で、Cの値がTRUEとFALSEをとり、論理式の値もTRUEとFALSEをとるので、比較式Cは論理式の結果に独立に影響を与えているといえます。
よって、②と⑤のペアも、③と④のペアも、④と⑤のペアも、そのペアを実行すると比較式CはMC/DCの基準を満たします。
(A&&B )と比較式 C の関係

まとめ

ソフトウェアテストにおけるMC/DCカバレッジ測定の仕組みを、具体的なテストケースを通じて解説しました。テストケースの実施により、全ての比較式と論理式が正しく評価されることで、MC/DCの基準を満たすことができます。

本記事が、MC/DC測定の仕組みや、機能安全規格に準拠した開発支援についての理解の一助となれば幸いです。

筆者紹介

ガイオ・テクノロジー株式会社

人気のコラム

最新のコラム