カバレッジとは?
カバレッジとは、テスト対象となるアルゴリズムに対し、所定の網羅条件がテストによってどれだけ実行されたかを示す割合です。カバレッジを測定することで、テストの抜け漏れを把握し、テストの品質を定量的に評価することができるため、ソフトの品質向上につながります。
代表的なカバレッジ
C0カバレッジ(ステートメントカバレッジ・命令網羅)
実行可能なステートメント(命令)がテストで実行された割合です。実行可能な項目を全て実行(通過)することで、100% のカバレッジが満たされます。
C1カバレッジ (ブランチカバレッジ・分岐網羅)
各判定分岐のうち、テストで実行された分岐方向の割合です。すべてのブランチ(分岐)において、すべての分岐方向が実行されたら、100% の カバレッジが満たされます。
C2カバレッジ (コンディションカバレッジ・条件網羅)
各条件のうち、true、falseがテストで実行された割合です。論理要素の各インスタンスへの入力や遷移での各条件が、テスト中に少なくとも1回trueかつ1回falseになることで100% のカバレッジが満たされます。
MCDCカバレッジ (MC/DC: Modified Condition / Decision Coverage)
RTCA DO-178 に準拠し、各入力が独立に出力に影響を与える条件がテストで実行された割合です。各判定結果や各条件が少なくとも1回すべての可能な結果を得ること、かつ、各条件が単独で判断結果に影響することで100% のカバレッジが満たされます。なお、モデルベースデザイン MBD (モデルベース開発)においては、モデルに対する「モデルカバレッジ」とモデルに含まれるC言語S-Functionブロック、またはモデル生成コードに対する「コードカバレッジ」の2つの観点があります。
モデルカバレッジが注目されるようになった背景や活用例
一般的なテストでは「やりたいこと」ができるかの観点でテストケースを作ります。想定外のテストケースで「起きてほしくないこと」が起きないかが、仕様やテストの抜け漏れで考慮&検証されていないことが問題になります。いかにテストの網羅率を上げられるのかが高品質のソフト開発のポイントになります。
コードの検証で初めて「起きてほしくないことが起きる」とのことが判明されますと、手戻りが発生し、デバッグのコストも高くなります。コードを生成する前の段階で、高いカバレッジでモデルをテストすれば、問題を開発の早い段階で見つけることや修正することが実現できるため、より効率的なソフト開発が実現できます。そのため、モデルカバレッジの測定や向上も重視されてきました。
なお、各種の機能安全規格(ISO 26262やIEC 61508など)でもカバレッジ情報を取得してテスト品質を確保することが推奨しています。テストの網羅率を測ることによって、テストで実施されていないモデルを確認することにより、テストの妥当性や品質を向上させることができます。
更に、自動車や飛行機メーカーなど、モデルベースデザインによる量産組み込みソフト開発が進んでいる業界では、モデルや生成したコードが一致しているかを確認するためにBack-to-Backテスト (等価性テスト)、例えば、SIL (Software-in-the-loop) や PIL (Processor-in-the-loop)、が行われています。Back-to-Backテストを実施する際にフルカバレッジのテストデータを使用すれば、あらゆるテストパターンでソフトとモデルの等価性を確保することができます。
カバレッジの計測や向上に関するメリット、そして、それに伴うチャレンジとMathWorksのソリューション
メリット① テストの網羅性を定量的に測定可能
チャレンジ: 人の目でカバレッジを計測することが困難
MathWorksソリューション:Simulink Coverage™ は条件カバレッジやMCDCカバレッジに代表される様々なテストカバレッジの計測機能を提供しています。更に、生成されたカバレッジレポートを用いて、未達箇所の解析などで、テストの抜け漏れを発見できます。テストをスルーした未実行パスが引き起こす不具合の防止に繋がります。なお、Embedded Coder®が生成したコードのコードカバレッジも測ることができます。更に、テスト自動化機能を提供しているSimulink Test™と合わせてご利用しますと、複数テストシナリオの一括実行やテストカバレッジの累積計算も実現可能です。
メリット② より網羅率の高いテストで、ソフトの品質を確保することが可能
チャレンジ: 想定外のテストケースの作成は困難
MathWorksソリューション: Simulink Design Verifier™ のテスト自動生成機能をご利用することによって、テストの未達箇所やレアケースを補充することが可能です。なお、フルカバレッジのテストケースを利用した、モデルとEmbedded Coderの生成コードのBack-to-Backテストによる、生成コードの網羅的な等価性検証ができ、コードの動作保証や性能評価も実現可能になります。更に、テスト自動化機能を提供しているSimulink Testを使用しますと、Back-to-Backなどのテストの一括実行も可能です。
カバレッジ測定やフルカバレッジテストケースの活用事例、役立つ使い方
ソフトウェアリファレンス
参考: 累積カバレッジ分析 (英語), Simulink Coverage, Simulink Design Verifier, Embedded Coder, Simulink Test, MBD (モデルベース開発)