【ISTQB /JSTQB AutomotiveTester 解説】4.2.3 フォルトインジェクションテストとは?

JSTQB Automotive Tester

エラーハンドリングと回復処理の品質を高める重要な技法

自動車ソフトウェアでは、通常のテストケースでは通らない**エラーパス(error handling code path)を正しく検証することが極めて重要です。

本記事では、ISTQB Automotive Tester シラバス 4.2.3 のFault Injection Testing(フォルトインジェクションテスト)**について、図解イメージや具体例を交えてわかりやすく解説します。


1. フォルトインジェクションテストとは?

**フォルトインジェクションテスト(Fault Injection Testing)**とは、

テスト中に意図的に故障(フォルト)や異常値を注入し、エラーハンドリングや回復処理が正しく動作するかを確認するテスト技法

です。

通常のテストケースでは通らないコードパス(エラー処理)を強制的に実行させることで、以下を検証できます。

  • 不正値を検出できるか

  • 安全なフェール(safe state)に移行できるか

  • システムが異常状態から回復できるか

典型的な例

  • try-catch ブロックが正しく例外を捕捉するか

  • センサーからあり得ない値(implausible values)が来たときに安全に動作するか

  • CAN通信が途絶・遅延したときに機能が暴走しないか


2. なぜフォルトインジェクションが自動車で重要なのか?

自動車は人命に関わる領域のため、**異常時の安全性(機能安全)**が最優先です。

例えば:

  • 加速度センサーが壊れて異常値を送ってきた

  • ECU間通信が途絶した

  • メモリが破損して値が正しくない

これらの状況は“稀”ですが、1回でも起これば事故につながる可能性があります。

そのため、

通常のテストでは通らない“エラーハンドリング”部分を必ず検証する必要がある

ここがフォルトインジェクションテストの核心です。


3. フォルトインジェクションを行う 3 つのポイント

フォルトインジェクションは主に以下の3つの箇所で実施します。

(1) 外部コンポーネントへの欠陥注入

例:センサーからの不合理(implausible)な値の送信

  • あり得ない速度(例:500 km/h)

  • 温度センサーが -100℃ を送ってくる

  • ステアリング角度センサーが急激に変化する

目的: 不合理値を検出し、安全動作へ切り替えられるかを確認。


(2) インターフェースの欠陥

例:通信のショート、断線、遅延、メッセージロスト

  • CANメッセージが届かない

  • LIN通信が遅延する

  • 信号線がショートして電圧レベルがおかしくなる

目的:

通信障害や信号欠損時に、システムが安全に動作するかを検証。


(3) ソフトウェア内部の欠陥

例:メモリ破損、内部モジュールの例外

  • 変数が突然不正な値に書き換わる

  • 内部モジュールが例外を投げる

目的:

内部異常を検出し、回復処理や安全状態へ移行するかを確認。

こうした内部欠陥は、開発者がデバッガ(debugger)や XCP 経由で挿入することが多く、時間がかかる傾向があります。


4. フォルトインジェクションがよく使われるテスト環境

● HIL(Hardware-in-the-Loop)環境

最もよく使用される環境。理由:

  • センサー・アクチュエータの物理信号を扱える

  • ECUと実機レベルで近い環境でテストできる

  • 短絡(ショート)や断線(オープン)など物理現象を再現できる

HILでは FIU(Fault Insertion Unit) と呼ばれる装置を使い、ショート/オープンを物理的に再現します。


● SIL(Software-in-the-Loop)環境

ソフトウェアベースのインターフェース異常はSILでもテスト可能。

例:

  • CANメッセージ欠損のシミュレーション

  • 内部関数の異常応答

HILよりも高速かつ安価にテストできるため、可能なものはSILで前倒し実施するのがベストプラクティス。


● 開発環境(デバッガ上)

内部コードへの欠陥注入(内部変数破損など)は、

デバッガや XCP を使った「開発環境」での作業が必要なことが多いです。


5. フォルトインジェクションと「欠陥植込み(Defect Seeding)」の関係

フォルトインジェクションは、開発者が意図的に欠陥を埋め込む「Defect Seeding(欠陥植込み)」と似ています。

  • Defect Seeding:テストの有効性を測るために意図的に欠陥を埋め込む

  • Fault Injection:エラー処理の網羅性を高めるために異常を注入

どちらも目的は異なりますが、“意図的な異常発生”という点で共通しており、ソフトウェアの信頼性向上につながります。


6. まとめ:Fault Injection Testing は“抜け漏れしやすいエラーパス”を確実にテストするための技法

フォルトインジェクションは、通常のテストで通らない異常パスを検証するための必須技法です。

特に自動車領域では、

  • 不合理値

  • 通信断

  • 内部異常

といった予期せぬ状況でも安全に動作できるよう、広く活用されています。

コメント

タイトルとURLをコピーしました