はじめに:Chapter 4「自動車特有のテスト技法」へようこそ
ISTQB Automotive Tester資格のChapter 4では、「自動車特有のテスト技法(Automotive Specific Test Techniques)」について学びます。
この章は大きく2つのパートに分かれています。
-
4.1 静的テスト技法(Static Test Techniques)
-
4.2 動的テスト技法(Dynamic Test Techniques)
まず本記事では、「静的テスト技法」と「MISRA-C:2012 ガイドライン」について解説します。
この内容は**ISO 26262(機能安全)**にも密接に関係しており、安全性の高いソフトウェアを作るうえで欠かせない知識です。
静的テスト技法とは?(Static Testing Techniques)
● 定義と目的
静的テストとは、「ソフトウェアを実行せずに欠陥を検出するテスト」のことです。
主に以下のような作業を含みます。
-
要件仕様書や設計書のレビュー
-
コードの静的解析(Static Analysis)
-
ドキュメント整合性チェック
-
モデルやフローチャート、データフロー図などの確認
静的テストの目的は、開発初期の段階で欠陥を発見し、コストを削減することにあります。
これはISTQB Foundationでも学んだ「早期テストの原則」に一致します。
● 静的テストで見つかる代表的な欠陥例
|
欠陥タイプ |
具体例 |
|---|---|
|
矛盾 |
要件と設計の記述が一致しない |
|
欠落 |
必要な機能が仕様書に抜けている |
|
誤り |
関数仕様の数値条件が間違っている |
|
不整合 |
データフロー図とクラス設計の構造が異なる |
こうした不具合は、もし後工程(実装・結合テスト以降)で見つかると修正コストが数倍になります。
したがって、静的レビュー段階での検出が極めて重要です。
静的解析(Static Analysis)とは?
静的解析は、ツールを使ってソースコードを解析するプロセスです。
目視レビューでは発見しにくい欠陥を自動的に見つけることができます。
代表的に検出できる項目
-
宣言されているが未使用の変数
-
到達不能コード(dead code)
-
ネストされたコメントや非標準構文
-
コーディングルール違反(例:命名規則、構文規則)
この静的解析のために、自動車業界では国際的に有名なコーディングガイドラインがあります。
それが――
MISRA-C:2012 ガイドラインとは?
● MISRAとは?
**MISRA(Motor Industry Software Reliability Association)**は、
自動車業界で安全性の高いC言語プログラムを書くための標準ガイドラインを定める団体です。
その成果が、**「MISRA-C:2012」**です。
C言語を使う際の「安全・保守・移植性を確保するためのルール」が細かく定義されています。
ISO 26262でも、安全関連ソフトウェアにはコーディングガイドラインを遵守することが推奨されています。
MISRA-Cはまさにその代表的な手法です。
● MISRA-C:2012の2種類のガイドライン
MISRA-C:2012では、ガイドラインは次の2つのタイプに分かれます。
|
タイプ |
内容 |
静的解析ツールでの検証 |
|---|---|---|
|
Rule(ルール) |
コードレベルで明確に検証可能な規則(例:ネストコメント禁止) |
✅可能 |
|
Directive(指令) |
開発プロセスやドキュメントに関わる方針(例:要件とのトレーサビリティ) |
❌完全には不可 |
つまり、「Rule」はツールで検証できる明確な規則であり、「Directive」は人間の判断を必要とする指針です。
● MISRA-Cの3段階の義務レベル(Obligation Levels)
MISRA-C:2012では、各ルールに「遵守の優先度」が定められています。
|
レベル |
内容 |
遵守義務 |
|---|---|---|
|
Mandatory(必須) |
絶対に守るべきルール。例外は認められない。 |
100%遵守 |
|
Required(要求) |
原則として守るべき。逸脱する場合は文書による正当化が必要。 |
逸脱要説明 |
|
Advisory(助言) |
守ることが推奨される。状況に応じて判断可能。 |
推奨レベル |
企業によっては、独自にこれらのレベルを強化して社内標準とすることもありますが、
「緩和すること(レベルを下げる)」は許可されません。
● 具体例:MISRA-Cルール例
|
No. |
内容 |
解説 |
|---|---|---|
|
Rule 1.1 |
C言語の標準規格以外の拡張機能を使用してはならない |
移植性を損なうため禁止 |
|
Rule 8.9 |
変数はできる限り最小スコープで宣言する |
読みやすく保守性を高める |
|
Rule 17.2 |
関数の戻り値は必ず使用または明示的に無視する |
予期せぬ動作を防ぐため |
これらのルールを静的解析ツール(例:Polyspace, PC-lint, QACなど)で自動チェックすることで、
開発初期段階で多くの潜在バグを排除できます。
MISRA-CとISO 26262の関係
ISO 26262では、「安全関連ソフトウェアの品質確保」のために、
一貫したコーディング規約とレビューの実施が求められます。
MISRA-Cは、まさにこの要求を満たす具体的な手法であり、
ASIL(Automotive Safety Integrity Level)が高いプロジェクトほどMISRA遵守が求められます。
まとめ:静的テストの重要性とMISRA-Cの役割
-
静的テストは実行前に欠陥を早期発見できる最もコスト効果の高いテクニック。
-
静的解析ツールとMISRA-Cガイドラインを組み合わせることで、
安全性・保守性・移植性の高いソフトウェアを実現できる。
-
MISRA-CはISO 26262にも準拠しており、自動車ソフトウェアの品質基盤となっている。
今後の学習ポイント
次回は、**4.2 動的テスト技法(Dynamic Test Techniques)**に進みます。
ここでは、実行ベースのテスト手法(例えば制御フローやデータフロー分析など)を詳しく解説していきます。


コメント