よくある質問(FAQ)

MC/DC計測のオブジェクトをビルドする際、コンパイラの最適化をOFFにすることが推奨されていますが、なぜですか?

埋め込みコードについて

質問

MC/DC計測のオブジェクトをビルドする際、コンパイラの最適化をOFFにすることが推奨されていますが、最適化をOFFにすると製品へ実装するオブジェクトコードと異なったコードになってしまいます。どのように考えればよいのですか?

回答

MC/DC計測時には、カバレッジマスターwinAMSでは、「実オブジェクトコード」と埋め込みを行った「MC/DC計測用オブジェクトコード」の両方を同時にシミュレートしてテストを実行する独自の仕組みを採用しています。

それぞれのオブジェクトは以下の役割を担っています。

実オブジェクトコード
 取得データ: 期待値判定のための出力値、および C0カバレッジ
 ビルド条件: 製品実装と全く同じ最適化を適用して生成(テスト品質・信頼性の担保)

MC/DC計測用オブジェクトコード
 取得データ: MC/DC および C1カバレッジ
 ビルド条件: 最適化を「OFF」にして生成(推奨)

埋め込みコードは、MC/DCを厳密に測定するために、テスト対象のソースコードへ専用のタグ(フック関数)を挿入した状態になっています。この時点で製品実装コードとは構造が異なっているため、このコードに対してコンパイラの最適化を適用すること自体に技術的な意味がありません。

むしろ、最適化によってフック関数の配置や論理式の構造が改変されてしまうと、MC/DCが正しく計測できなくなるリスクが生じます。そのため、埋め込みコード側は最適化の影響を受けない状態(最適化なし)でビルドすることが強く推奨されます。

出力結果の合否判定は、製品と同じ最適化が適用された「実オブジェクトコード」側で行われるため、コンパイラの最適化に起因する不具合も実機同様に検出可能です。これにより、テスト全体の品質は最大限に保たれます。

機能安全への対応につきましても、このMC/DC計測手法で、機能安全ツール認証を取得しています。

MC/DC計測の仕組みにつきましては、下のリンクを参考にご覧ください。

  • 【参考資料】MC/DC計測の仕組みについて(カバレッジマスタープレゼン資料からの抜粋) PDF閲覧