はじめに
この記事では、ISTQB Automotive Software Tester シラバス(章3:Testing in Virtual Environments) の中から、
「3.2.2 Software in the Loop(SIL)」について詳しく解説します。
前回の「Model in the Loop(MIL)」に続き、今回のSILは、モデル検証を終えた後に実際のコードを生成してシミュレーションを行う段階です。
このSILの理解は、XIL(X-in-the-Loop)テスト環境全体を理解する上で非常に重要です。
SIL(Software in the Loop)とは?
SILとは、「ソフトウェア・イン・ザ・ループ」の略で、
モデル(MIL)で作成した制御ロジックをコード化して、仮想環境上でテストする段階です。
基本の流れ
-
モデル段階(MIL)
制御ロジックをSimulinkなどでモデル化し、理論的に検証。
(例:自動ブレーキの制御アルゴリズム)
-
コード生成段階(SIL)
MILで作成したモデルからCコードを自動生成し、
モデル内のコントローラーブロックを生成したコードに置き換える。
-
シミュレーション実行
実際のプラント(車両モデル)は引き続きソフトウェアモデルで表現し、
制御ロジックが実際にハードウェア上で動作可能かをシミュレーションで確認します。
SILテスト環境の構成(Structure of a SIL Test Environment)
ISTQBシラバスでは、SIL環境を以下のように説明しています。
-
テスト対象(Test Item):
特定のSILテスト環境向けにコンパイルされたソースコード。
-
マシンコード(Machine Code):
コンピュータアーキテクチャに依存するバイナリデータセット。
SIL環境がこのデータを読み取ることでシミュレーションが可能になります。
-
ラッパー(Wrapper):
テスト環境とテスト対象コードを接続するためのインターフェースソフトウェア。
→ テスターはラッパーを通じて信号を刺激(入力)し、出力を観察します。
→ ラッパー自体は制御ロジックを実行するわけではなく、通信の橋渡しを行う役割です。
-
環境モデル(Environment Model):
実際の車両やプラントの挙動を再現するソフトウェアモデル(MILと同様)。
💡 ポイント:SILテストは、特別なハードウェアを必要とせず、PC上で実行できるため、コストを抑えつつコードの品質を初期段階で評価できます。
SILテストの目的と意義
SILは主に以下の目的で実施されます。
|
目的 |
内容 |
|---|---|
|
コード生成の妥当性確認 |
モデルから生成されたCコードが、モデルのロジック通りに動作するか確認する。 |
|
実装上の差異検出 |
浮動小数点(floating point)と固定小数点(fixed point)などのデータ型の違いによる挙動の差を検出する。 |
|
安全性・信頼性の検証 |
ISO 26262などの安全規格に基づく、制御ロジックの信頼性評価の一部。 |
SILで発見できる問題例
例:浮動小数点と固定小数点のズレ
MILモデルでは浮動小数点で計算されていたが、
SIL環境で固定小数点(整数)に変換されることで、制御精度がわずかにズレることがあります。
例:
-
モデル出力:1.987
-
コード出力:1.980(丸め誤差あり)
このような微小な誤差も、車両制御では大きな影響を及ぼすことがあるため、
SIL環境で検出・修正します。
SILテストで使われる技法
SILテストでは、以下のような技法が使用されます。
① バック・トゥ・バック・テスト(Back-to-Back Testing)
-
MILとSILの出力を比較し、
挙動が一致しているかどうかを検証するテスト。
-
ISTQBシラバス第4章(Test Techniques)で詳しく解説されています。
② 機能インターフェーステスト(Functional Interface Test)
-
入出力信号が仕様通りに機能するかを確認。
③ 回帰テスト(Regression Test)
-
モデルやコードに変更が加えられた際、
既存機能に影響がないかを確認。
実行と解析のポイント
SILのシミュレーションは、環境モデルの複雑さによりリアルタイムより長くなる場合があります。
テスターはシミュレーションを**一時停止(pause)**し、
特定のステップや信号挙動を詳細に解析することが可能です。
例:「一定条件でABS制御が解除される」現象を再現・解析するために、シミュレーション途中で止めてログを確認する。
SILで実施しないテスト
SILでは以下のテストは通常実施しません。
|
テストタイプ |
理由 |
|---|---|
|
パフォーマンステスト |
実際のハードウェア上でのみ確認可能。 |
|
信頼性テスト |
長時間動作やハード依存の挙動はシミュレーションでは再現が困難。 |
まとめ:SILの位置づけ
|
テスト環境 |
内容 |
実施目的 |
|---|---|---|
|
MIL(Model in the Loop) |
モデルを仮想環境でテスト |
ロジックの妥当性確認 |
|
SIL(Software in the Loop) |
モデルから生成したコードを仮想環境でテスト |
コード変換後の動作確認 |
|
HIL(Hardware in the Loop) |
実際のハードを用いたテスト |
実装レベルでの挙動確認 |
SILは、MILとHILの橋渡しとなる重要な段階です。
この段階でしっかりとコードの動作とモデルの整合性を確認することで、
後工程でのバグ発生を大幅に削減できます。
次回予告:Hardware in the Loop(HIL)
次の記事では、次のステップである「HIL(ハードウェア・イン・ザ・ループ)」について解説します。
実際のECUやハードウェアを使って、どのように仮想環境と接続して評価するのかを見ていきましょう。
✅ まとめポイント
-
SILは、モデルから生成されたコードの正しさを仮想的に検証するステージ
-
**ラッパー(Wrapper)**がテスト環境とコードの橋渡しを行う
-
浮動小数点のズレなど、MILでは見えない問題を発見できる
-
Back-to-BackテストでMILとSILの結果を比較する
-
パフォーマンスや信頼性テストはSILでは対象外


コメント