機能安全のためのコードカバレッジ

概要

TRACE32®ベースのコードカバレッジで安全認証のスピードアップとコード品質の向上

コードカバレッジの測定は、テストケースの完全性を評価し、意図しない機能がないことを証明するために、認証の要件となっています。しかし、測定はコード品質を高めるためにも行われます。例えば、実行されることのないデッドコードの存在を排除するためです。

従来のテストツールを使用する場合、統合テストやシステムテストでは、コードのインスツルメンテーションが必要となるため、多くの時間と人件費が発生します。

コード・インスツルメンテーションは、まったく必要ないか、非常に限定的な範囲でしか必要ない。完全なコードカバレッジ測定のために必要なビルドとテストの実行回数は少なく、実際の例では総工数の50%も削減することができます。これらのテストが完了するまでに数日から数週間かかることが多いことを考慮すると、コードカバレッジ計測にTRACE32®を利用することで、時間とコストのメリットを見積もることができます。

概要

TRACE32®ベースのコードカバレッジで安全認証のスピードアップとコード品質の向上

コードカバレッジの測定は、テストケースの完全性を評価し、意図しない機能がないことを証明するために、認証の要件となっています。しかし、測定はコード品質を高めるためにも行われます。例えば、実行されることのないデッドコードの存在を排除するためです。

従来のテストツールを使用する場合、統合テストやシステムテストでは、コードのインスツルメンテーションが必要なため、多くの時間と人件費がかかりますが、当社の TRACE32® ツールを使用したトレースベースのコードカバレッジ測定により、大幅に削減することができます。

コードインスツルメンテーションは、まったく必要ないか、非常に限定的な範囲でしか必要ありません。完全なコードカバレッジ測定のために必要なビルドとテストの実行回数は少なく、実際の例では総工数の50%を削減することができます。これらのテストが完了するまでに数日から数週間かかることを考慮すると、コードカバレッジ測定にTRACE32®を利用することによる時間とコストのメリットを見積もることができます。

何百ものサポートされたアーキテクチャとコンパイラの利点

統合テストおよびシステムテスト中にテスト結果をより迅速に取得

オブジェクトコードカバレッジからMC/DCまで、すべての指標を測定する

リアルタイムで
コード・カバレッジを測定

ユニットテストに
適格なシミュレータを使用する

サードパーティツールとの
容易な統合

データ収集

要件に応じて最適なデータ収集モードを選択する

使用するアーキテクチャ、チップが実装しているトレースインターフェース(オフチップトレース、オンチップトレース、または全くトレースしないもの)、およびカバーしたいコードカバレッジメトリクスに応じて、データ取得のための4つの異なるモードのいずれかを選択できます。これらのモードは、最大限の互換性から最大限のパフォーマンスまで、考えられるすべてのユースケースをカバーします。

リアルタイムトレースキャプチャを使用して、時間の浪費を最小限に抑える

TRACE32®はRTS(Real Time Profiling)モードで記録中のトレースデータを処理することができます。RTSモードによるコードカバレッジの最大の利点は、必要な全てのステップが並列に実行されるため、大量のトレースデータを迅速に処理できることです。RTSは現在、Arm® ETMv3/v4とPTM、Nexus for MPC5xxx/QorIQ、AURIX MCDSトレースプロトコルでサポートされています。RTSは、PowerTrace、CombiProbe 、μTraceなどのTRACE32®トレース拡張のいずれかを必要とし、コードカバレッジメトリクスのステートメントカバレッジ、ファンクションカバレッジ、コールカバレッジをサポートしています。生のトレースデータはホストコンピュータにストリーミングされ、プログラムフローがコードカバレッジシステムに追加され、コードカバレッジ結果が更新される前に、プログラムフローを再構築するためにデコードされます。これらのステップはすべて同時に実行され、時間の浪費を最小限に抑えることができます。

すべてのコードカバレッジメトリクスとすべてのインストラクションセットアーキテクチャのストリームトレースデータ

当社のTRACE32®ツールは、SPYモードで全アーキテクチャのトレースデータを記録しながら処理することができます。SPYモードはRTSモードより若干処理速度が落ちますが、全てのコードカバレッジメトリックと全てのチップアーキテクチャをサポートします。SPY モードのコードカバレッジでは、生のトレース・データをデコードしてコードカバレッジ測定用に処理するため、トレースストリーミングは定期的に中断されます。コードカバレッジ測定が迅速に利用できるようになります。

オンチップトレースのみを提供するチップにおけるインクリメンタルモードの利点

インクリメンタルコードカバレッジは、プログラムフローに関する情報を提供するすべてのプロセッサアーキテクチャでサポートされています。また、すべてのコードカバレッジメトリクスをサポートしています。これは、オンチップトレースのみを実装したチップのための信頼性の高いフォールバック手法であり、大半の状況で使用することができます。

インクリメンタルコードカバレッジの特徴は、個々のステップを1つずつ実行されることです。トレース情報は、プログラムの実行中に記録されます。プログラムが停止した後、生のトレースデータがホストコンピューターにアップロードされ、デコードされて、完全なプログラムフローが再構築されます。その後、プログラムフローは最終的にコードカバレッジシステムに追加され、コードカバレッジの結果が更新されます。

オンチップトレースのみを提供するチップにおけるインクリメンタルモードの利点

インクリメンタル・コード・カバレッジは、プログラム・フローに関する情報を提供するすべてのプロセッサ・アーキテクチャでサポートされている。また、すべてのコード・カバレッジ・メトリクスをサポートしている。これは、オンチップ・トレースのみを実装するチップのための信頼性の高いフォールバック手法であり、大半の状況で使用できる。

インクリメンタル・コード・カバレッジの特徴は、個々のステップを1つずつ実行することである。トレース情報は、プログラムの実行中に記録される。プログラムが停止した後、生のトレース・データがホスト・コンピューターにアップロードされ、完全なプログラム・フローを再構築するためにデコードされる。その後、プログラム・フローは最終的にコード・カバレッジ・システムに追加され、コード・カバレッジの結果が更新される。

トレースインターフェースのないチップでもトレースデータを収集

私たちの特別なデータ収集モードART(Advanced Register Trace)は、アセンブラレベルのシングルステップで動作します。 レベルで動作します。各ステップの後、CPUレジスタの内容はTRACE32®PowerView ソフトウェアにアップロードされ、プログラムフロートレースと同様の方法で保存されます。この擬似トレースデータはコードカバレッジに使用することができます。ARTで記録されたトレースデータは、全てのコードカバレッジメトリクスに使用することができます。

ARTはトレースインターフェースのないチップでもデータ収集が可能ですが、ターゲットのリアルタイム性能に大きな影響を与えます。パフォーマンスを改善するために、全てのコードカバレッジメトリックスに対応するTRACE32®インストラクションセットシミュレータ(ISS)を使用することを推奨します。ISSは命令セットをシミュレートし、バストレースを提供するため、コードカバレッジを容易に実行することができます。

エバリュエーション

すべてのカバレッジ指標をカバー

テストカバレッジとテスト進捗は、コードカバレッジ測定を使って定量的に決定することができます。組込みシステムのクリティカリティと、機能安全に関する個々のアプリケーション固有の基準に応じて、通常はコードカバレッジメトリクスと呼ばれる、異なるレベルのカバレッジを適用する必要があります。基本的に、コードカバレッジの各レベルは、ファンクション・レベル、インストラクションレベル、ブランチレベル、パスレベル、コンディションレベルのように割り当てられます。TRACE32®トレースツールがサポートする様々なカバレッジレベルは、ISO 26262 (Automotive), IEC 62304 (Medical Devices), DO 178C (Avionics), EN 50128 (Railway), IEC 61508 (the Umbrella Standard for Industrial Projects)で定義されている全ての要求事項を満たしています。

オブジェクトコードカバレッジ

オブジェクトコードカバレッジは、各オブジェクトコード命令が少なくとも1回は実行され、すべての条件付き命令(条件分岐など)が真と偽の両方で評価されたかどうかを測定します。

関数カバレッジ

関数カバレッジは、プログラムのすべての関数に少なくとも一度は到達したかどうかを測定します。完全な関数カバレッジは、テスト中にプログラムのすべての関数が呼び出されたときに達成されます。100%のコールカバレッジが100%の関数カバレッジを意味するわけではありません。

コールカバレッジ

コール・カバレッジとは、プログラムの実行中に実行された関数呼び出しの数を、そのプログラムに存在する呼び出しの数に対する割合で示したものです。関数カバレッジ100%はコールカバレッジ100%を意味しません。

ステートメントカバレッジ

ステートメントカバレッジは、テストされたステートメントの割合が全ステートメントと比較してどれだけ高いかを測定します。このレベルでは、デッドコードやまだテストが行われていないステートメントを見つけることができます。

判定カバレッジ/分岐カバレッジ

このカバレッジ・レベルでは、各判定が少なくとも1回は「真」と「偽」としてテストされなければなりません。通常の「if文」の場合、これはブランチ・カバレッジに相当し、すべてのブランチが実行されていなければなりません(ブランチ・カバレッジ)。デシジョンカバレッジやブランチカバレッジを達成するためには、ステートメントのないブランチも実行しなければなりません。elseブロックのない "if文 "では、関連するデシジョンが正しくない場合もテストしなければなりません。完全なステートメントカバレッジは、(完全な)デシジョンカバレッジに従います。

コンディションカバレッジ

デシジョンカバレッジの要件に加えて、コンディションカバレッジは複合デシジョンを 詳細に考慮します。ブール演算子によって構成された複数のアトミック条件からなるデシジョンの場合、これらの条件のそれぞれを「真」と「偽」として個別にテストしなければなりません。条件カバレッジは基本的に、多条件カバレッジ、特に修正条件/決定カバレッジ(MC/DC)を理解するためにのみ関係します。

モディファイド・コンディション/ディシジョン・カバレッジ(MC/DC)

多条件カバレッジでは、複合デシジョンについて、可能なすべての真/偽の組み合わせをチェックしなけれ ば なりません。デシジョン内に複数の条件がある場合、デシジョン内の条件数に応じて指数関数的に増加するため、通常、非現実的な数のテストケースが必要になります。このため、どの安全規格でも多条件カバレッジは要求されておらず、むしろ修正条件/決定カバレッジ(MC/DC)が要求されています。MC/DCでは、テストケースの数は条件の数に比例して増えるだけですが、同時に理解するのが難しくなり、判定も難しくなります。

典型的な自動車用途の使用例

ISO 26262に準拠した自動車安全度水準(ASIL)要件に適合





ISO 26262では、自動車安全度水準(ASIL:Automotive Safety Integrity Level)が導入されており、自動車の安全関連電気/電子システムに使用されます。また、この規格では、機能レベルおよびアーキテクチャレベルでコードカバレッジを測定することを推奨しています。右の表では、ソフトウェアユニットレベルの構造カバレッジメトリクス(ISO 26262-6:2018、表9)とソフトウェアアーキテクチャレベルの構造カバレッジメトリクス(ISO 26262-6:2018、表12)を見つけることができます。

印の欄は、指定された措置が特に推奨されることを示します。特定の理由により、この要件に従わず、記載された措置を省略することを決定した場合は、その決定理由とその効果について詳細な説明を行う必要があります。推奨される対策には、単純な「+」が付され、対応する措置が品質または安全性の改善につながることを示します。

当社のトレースツールTRACE32®を使用することで、右の表に記載されているすべてのメトリクスを測定することができるため、最高レベルのASIL-Dまでのコードカバレッジ関連の要件を完全に満たすことができます。

コードカバレッジ分析

PowerView で結果と将来を分析する

評価されたコードカバレッジの測定結果には、いくつかのレポートオプションがあります。これには、PowerView ソフトウェアでの表示、人が読めるフォーマットや機械が読めるフォーマットへのエクスポート、異なるテスト実行や異なるターゲットプラットフォームからの結果をマージするために使用できるTRACE32® コードカバレッジマージンレポーティングツールが含まれます。

PowerViewでコードカバレッジの測定を表示する

PowerView ウィンドウでは、測定されたメトリクスの対象となるすべての機能またはモジュールのカバレッジ結果を即座に表示することができます。

人が読めるXMLレポートの作成

TRACE32®レポートユーティリティを使用すると、コードカバレッジの測定結果をインターネットブラウザに表示することができます。

CSV、JSONまたはVectorCAST CBAで機械可読レポートを生成

テスト実行終了後、TRACE32 の内部コードカバレッジシステムに保存されているすべてのソースコードメトリクスの結果をファイルにエクスポートすることができます。サポートされているソース コード メトリクスには、ステートメント カバレッジ、デシジョン カバレッジ、コンディションカバレッジ、MC/DC、コール カバレッジ、関数カバレッジがあります。VectorCASTでデータをさらに処理するために、CSVまたはJSON(JavaScript Object Notation)のオープンファイル形式と、独自のCBA形式から選択できます。

TRACE32® Code Coverage Merging and Reporting Toolによる機械可読レポートの生成

TRACE32® Code Coverage Merging and Reporting Tool を 使用すると、異なるテストケースのスイートに基づき、または異なるターゲットコンフィギュレーションを使用して、異なるELFで実行された複数のコードカバレッジのテスト結果を統合することができます。このツールはWindowsとLinuxオペレーティングシステムに対応しており、エクスポートされたJSONファイルを使用して、様々なテスト実行から得られたTRACE32®のコードカバレッジ結果を統合します。同時に、これらの結果は解析や文書化のために視覚的にわかりやすいHTMLレポートに変換されます。オープンで拡張可能なJSONフォーマットは、多くのサードパーティツールによるマージされたコードカバレッジ計測値を処理することができます。

機能安全認証

ツール認定サポートキットで時間と労力を節約

セーフティクリティカルな組込みシステムの適格性評価には、使用される開発ツールとプロジェクト環境への統合も含まれます。当社の認定ツール認定サポートキット(TQSK)は、航空電子機器、医療、自動車、鉄道、または一般産業プロジェクトで使用されるTRACE32®ソリューションの認定に必要な全てを提供し、市場投入までの時間、労力、コストを削減します。

その他多くの成果物に加え、TQSK にはステートメントおよびブランチカバレッジ、MC/DC、条件、関数およびコールカバレッジのテストケースを提供する、テストスイートが含まれています。C言語のソースコードカバレッジ、実行可能なオブジェクトコードのアセンブリレベルカバレッジ、インクリメンタル、RTS、SPYのコードカバレッジモードをサポートしています。


パートナー

サードパーティツールとの統合が容易

従来のテストツールを使用する場合、統合テストやシステムテストでは、必要なコードインスツルメンテーションのために多大な時間と人件費が発生することがよくありますが、当社のTRACE32® ツールを使用したトレースベースのコードカバレッジ測定により劇的に削減することができます。しかしながら、従来のテストツールとその洗練されたテストケースと要求管理を含むコードカバレッジ測定機能は、特にユニットテストにおいてその強みを発揮することができます。

従来のテストツールとTRACE32®の組み合わせは、効率的で時間を節約するコードカバレッジ計測のための最高のカスタマーエクスペリエンスを提供します。現在、TRACE32®のコードカバレッジ計測値を3つの広く配布されている有名なサードパーティツールにインポートすることができます。

  • LDRAツール・スイート

    LDRAツールスイートは、要件トレーサビリティ、テスト管理、コーディング標準準拠、コード品質レビュー、コードカバレッジ分析、データフローおよびコントロールフロー分析、単体/統合/ターゲットテストを提供し、厳格な業界標準に準拠した認証を取得する。

    もっと見る
  • RapiCover/RapiCoverZero

    RapiCoverとRapiCoverZeroは、重要なソフトウェアのオンターゲット構造カバレッジ解析をサポートします。MC/DCまでの自動カバレッジレポート、1000条件までのテスト判定サポート、適格性確認サポートにより、RVSのソリューションはテストから最大限の効果を得ることを保証します。

    もっと見る
  • VectorCAST

    VectorCAST組込みソフトウェア・テスト・プラットフォームは、ソフトウェア開発ライフサイクル全般にわたるテスト活動を自動化する製品群です。VectorCAST製品ファミリーは、航空電子工学、医療機器、自動車、産業制御、鉄道、金融産業などの分野で使用されています。

    もっと見る

ご質問は?

40年以上にわたって業界をリードしてきた当社の専門エンジニアが、お客様をサポートいたします。製品に関するアドバイスや、どの構成が最適かをお知りになりたい場合は、セールスエンジニアにお問い合わせください。ローターバッハ システムに関するサポートが必要な場合は、当社のエンジニアリング・サポート・チームにご連絡ください。