カバレッジ(テストカバレッジ)

カバレッジとは

カバレッジとは,テスト対象となるアルゴリズムに対し,所定の網羅条件がテストによってどれだけ実行されたかを示す割合です。カバレッジを測定することで,テストの抜け漏れを把握し,テストの品質を定量的に評価することができるため,ソフトの品質向上につながります。

代表的なカバレッジ

C0カバレッジ(ステートメントカバレッジ・命令網羅)

実行可能なステートメント(命令)がテストで実行された割合です。実行可能な項目を全て実行(通過)することで,100%のカバレッジが満たされます。

C1カバレッジ(ブランチカバレッジ・分岐網羅)

各判定分岐のうち,テストで実行された分岐方向の割合です。すべてのブランチ(分岐)において,すべての分岐方向が実行されたら,100%のカバレッジが満たされます。

C2カバレッジ(コンディションカバレッジ・条件網羅)

各条件のうち,真、假がテストで実行された割合です。論理要素の各インスタンスへの入力や遷移での各条件が,テスト中に少なくとも1回真かつ1回假になることで100%のカバレッジが満たされます。

MCDCカバレッジ(MC / DC:修改条件/决策覆盖)

RTCA做- 178に準拠し,各入力が独立に出力に影響を与える条件がテストで実行された割合です。各判定結果や各条件が少なくとも1回すべての可能な結果を得ること,かつ,各条件が単独で判断結果に影響することで100%のカバレッジが満たされます。なお,モデルベースデザイン(モデルベース開発,MBD)においては,モデルに対する”モデルカバレッジ”とモデルに含まれるC言語s函数ブロック,またはモデル生成コードに対する”コードカバレッジ”の2つの観点があります。

モデルカバレッジが注目されるようになった背景や活用例

一般的なテストでは”やりたいこと”ができるかの観点でテストケースを作ります。想定外のテストケースで”起きてほしくないこと”が起きないかが,仕様やテストの抜け漏れで考慮&検証されていないことが問題になります。いかにテストの網羅率を上げられるのかが高品質のソフト開発のポイントになります。

コードの検証で初めて”起きてほしくないことが起きる”とのことが判明されますと,手戻りが発生し,デバッグのコストも高くなります。コードを生成する前の段階で,高いカバレッジでモデルをテストすれば,問題を開発の早い段階で見つけることや修正することが実現できるため,より効率的なソフト開発が実現できます。そのため,モデルカバレッジの測定や向上も重視されてきました。

なお,各種の機能安全規格(ISO 26262やIEC 61508など)でもカバレッジ情報を取得してテスト品質を確保することが推奨しています。テストの網羅率を測ることによって,テストで実施されていないモデルを確認することにより,テストの妥当性や品質を向上させることができます。

更に,自動車や飛行機メーカーなど,モデルベースデザインによる量産組み込みソフト開発が進んでいる業界では,モデルや生成したコードが一致しているかを確認するために背靠背テスト(等価性テスト),例えば,银(Software-in-the-loop)や公益诉讼(Processor-in-the-loop)が行われています。背靠背テストを実施する際にフルカバレッジのテストデータを使用すれば,あらゆるテストパターンでソフトとモデルの等価性を確保することができます。

カバレッジの計測や向上に関するメリット,そして,それに伴うチャレンジとMathWorksのソリューション

メリット①テストの網羅性を定量的に測定可能

チャレンジ:人の目でカバレッジを計測することが困難

MathWorksソリューション:万博1manbetx仿真软件覆盖™は条件カバレッジやMCDCカバレッジに代表される様々なテストカバレッジの計測機能を提供しています。更に,生成されたカバレッジレポートを用いて,未達箇所の解析などで,テストの抜け漏れを発見できます。テストをスルーした未実行パスが引き起こす不具合の防止に繋がります。なお,嵌入式编码器®が生成したコードのコードカバレッジも測ることができます。更に,テスト自動化機能を提供している万博1manbetx仿真软件测试™と合わせてご利用しますと,複数テストシナリオの一括実行やテストカバレッジの累積計算も実現可能です。

メリット②より網羅率の高いテストで,ソフトの品質を確保することが可能

チャレンジ:想定外のテストケースの作成は困難

MathWorksソリューション:万博1manbetx仿真软件设计校验™のテスト自動生成機能をご利用することによって,テストの未達箇所やレアケースを補充することが可能です。なお,フルカバレッジのテストケースを利用した、モデルとEmbedded Coderの生成コードのBack-to-Backテストによる、生成コードの網羅的な等価性検証ができ、コードの動作保証や性能評価も実現可能になります。更に、テスト自動化機能を提供しているSimulink Testを使用しますと、Back-to-Backなどのテストの一括実行も可能です。



ソフトウェアリファレンス

参考:累積カバレッジ分析(英語)万博1manbetx仿真软件覆盖万博1manbetx仿真软件设计验证器嵌入式编码器万博1manbetx仿真软件测试