対象範囲、トレーサビリティ、および検証の証拠
認証機関は、カバレッジデータとトレーサビリティ記録の2点を確認します。カバレッジデータは、どのコードが実行され、どの構造的深さまで実行されたかを示します。トレーサビリティ記録は、すべてのテスト結果を、そのテストが検証対象とする要件と結びつけます。これら2つが一体となって、ISO 26262、DO-178C、IEC 61508、およびIEC 62304で要求される証拠基盤を構成します。
要件のトレーサビリティ
要件ベースのテストは、主要な機能安全標準のすべてにおいて必須とされています。各テストケースは、検証対象となる特定の要件までトレーサビリティが確保されていなければなりません。要件とテスト結果との間のこの双方向のトレーサビリティにより、すべての要件がテスト済みであり、目的のないテストが存在しないという証拠が得られます。
VectorCASTの「Requirements Gateway」は、外部の要件データベースに接続し、要件をテスト環境にインポートするとともに、テストケースをそれらの要件にリンクさせることができます。テスト実行後、結果やカバレッジ指標は要件管理ツールにエクスポートされます。テストカバレッジが不足している要件や、いかなる要件にもリンクされていないテストケースは、即座に確認できます。
構造カバレッジ
構造的カバレッジ指標は、テストの実行によってコードがどの程度網羅的に実行されているかを測定するものです。安全標準では、重要度に基づいて最低限のカバレッジレベルが規定されています。
- 命令カバレッジ:実行可能な各ラインが少なくとも1回は実行されています
- 分岐カバレッジ:すべての分岐点において、考えられるすべての結果が実行されています
- MC/DC(修正条件/判定カバレッジ):決定におけるすべてのBoolean条件が、その決定の結果に独立して影響を与えています。DO-178C レベル A および ISO 26262 ASIL D ソフトウェアに要件です
- 関数カバレッジおよび関数呼び出しカバレッジ:いくつかの標準で補足的な指標として使用されています
VectorCASTは、これらすべてのカバレッジタイプを測定します。「業界モード」機能により、対象とする標準および安全度水準に適したカバレッジ基準が自動的に選択されるため、標準や安全度水準ごとに手動でカバレッジ基準を設定する必要がなくなります。
MC/DC:最高整合性カバレッジ基準
MC/DCは、命令カバレッジや分岐カバレッジでは検出できない論理的な欠陥を対象としています。これには、決定文に含まれるすべてのBoolean条件について、他のすべての条件を一定に保った状態で、その条件のみが決定の結果を独立して変化させることを示すテストが存在することが要件となります。
MC/DCを大規模に手動で達成し、文書化することは、エラーが発生しやすく、時間もかかります。VectorCASTは、最も手間のかかる部分を自動化します。具体的には、条件ペアの追跡のための自動インスツルメンテーション、何がカバレッジ対象で何が対象外かを正確に示す等価行列の可視化、カバレッジ対象外の条件ペアを対象とした自動テスト生成、そしてDO-178C、ISO 26262、IEC 62304に準拠した認証対応レポートの作成です。
分析による網羅性
安全性が極めて重要な開発においては、テストだけでは一部のコードセクションで完全なカバレッジを達成できない場合があります。発生確率が極めて低い条件に対する防御的コーディング、ハードウェアフォールトに対するエラーハンドリング、およびコンパイラ固有の未定義挙動からコードを保護する処理などが、すべてこのカテゴリーに該当する可能性があります。
カバレッジの不足については、その根拠を明確にし、文書化する必要があります。VectorCASTの「Covered-by-Analysis(CBA)」機能を使用すると、エンジニアは特定のコードセクションを「解析によるカバレッジ」の対象として指定し、その根拠をカバレッジデータと併せて直接文書化し、コードの進化に合わせてその根拠を維持することができます。カバレッジレポートには、測定されたカバレッジと解析によるカバレッジが統合されたビューが表示されます。
プロジェクト全体にわたるモニタリングの範囲
個々のテスト結果やカバレッジレポートは、単一のビルドに関する疑問に答えてくれます。一方、Squoreはプロジェクト全体に関する疑問に答えます。具体的には、どの要件がまだカバレッジの対象外なのか、前回のビルド以降どこでカバレッジが低下したのか、そして統合前にカバレッジ要件を満たす見込みがあるかどうかといった点です。
Squoreは、複数のソースからのカバレッジデータを集約し、経時的な傾向を追跡するとともに、要件を満たしていないコードがパイプラインを通過するのを防ぐ品質ゲートを適用します。カバレッジ要件は、プロジェクト全体を通じてチーム全体で可視化されたままとなります。