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

概要

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は、重要なソフトウェアのオンターゲット構造カバレッジ解析をサポートします。MC/DCまでの自動カバレッジレポート、最大1000条件までのテスト判定サポート、適格性確認サポートにより、RVSのソリューションはテストを最大限に活用することができます。

    さらに詳しく
  • ベクターキャスト

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

    さらに詳しく

ご質問は?

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