GSILの網羅的自動テストケース生成機能を使ったECUの信頼性向上

実行時エラーとは

実行時エラーとは、コンパイル時には不具合かどうかわからない、プログラムを実行したときに発生するエラーで、ゼロ除算、バッファオーバーランなどのエラーをいいます。実行時エラーが発生するとマイコンが停止したり、リセットしたりします。実行時エラーは、テストをしても見つからない可能性があります。特にプログラムが複雑になってくると、特定の条件下で稀にしか起こらないといったことがあります。自動車の機能を制御するECUに実行時エラーが起きると、特に運転中は危険な状態になるため絶対に避けなければいけません。

実行時エラーは、静的解析ツールで検出することも可能です。ユビキタスAIが提供している静的解析ツールCodeSonar は、自動車ECU開発で多くの採用実績がある静的解析ツールです。特に未検出が少ないという特長を持つCodeSonarですが、静的解析ツールはその原理からどうしてもエラーの未検出、誤検出が出てきます。実行時エラーを回避するには、同時に数多くのテストを行う必要がありますが、単体テストで数多くのテストケースを作成するには工数がかかります。実機テストを行うには準備が大変ですし、実行時エラーが起きてもデバッグが難しく、原因を探るのには長い時間を必要とします。

GSILによる網羅的自動テストケース生成機能

GSIL は、網羅的な自動テストケースを生成することができる、制御ECU開発向けシミュレーションツールです。人手では不可能な膨大なテストケースを、短時間で実行することが可能になります。GSILでは、特定の変数をランダムに変更することでこれを実現していますが、単にランダムに変数を変更するだけではまともなテストになりません。

例えば、自動車のオートクルーズシステム(車を特定の目標速度に保つ機能)のテストを行う場合、変更させる入力には「アクセルペダルの開度」「オートクルーズスイッチ」などが挙げられます。この場合、アクセルペダルが非常に短い間隔で全閉・全開状態を繰り返したり、オートクルーズスイッチが非常に短い間隔でオン・オフ状態を繰り返したりしてもオートクルーズの状態にはならず、まともなテストになりません。GSILではそのようなことを避けるため、変数に制約を付けることができます。「アクセルペダルを0.1秒間に最大で1%の変化にする」「オートクルーズのスイッチの状態を必ず1秒以上経過した後に変化させる」といった制約を付けることで、実際の車で起きるようなテストにすることが可能になるわけです。

GSILの実行時エラー検出例

以下は、網羅的自動テストを、オートクルーズのサンプルアプリケーションで行った例です。このアプリケーションのECUソースコードには、ゼロ除算の実行時エラーが含まれています。このゼロ除算は、非常に起きにくいように実装されています。GSILは、作成したテストケースを使ったテストや手動のテストではほんと起こり得ない実行時エラーを、テストの実行から162秒後に検出しています。

GSILによる実行時エラー検出例

まとめ

実行時エラーは、数多くのテストをしても見つからないことがあり、もし発生すると重大な問題となる可能性があります。GSILの自動網羅テスト機能を利用することで、実行時エラー発見の可能性を大幅に高め、ECUの信頼性を向上させることができます。


製品情報

車載ECUソフトウェア開発向けシミュレーションツール

GSIL

ハードウェア完成前にPC上でECUソフトウェアを検証
製品ページを見る

OEM⇔サプライヤでのECU制御ソフトウェア環境共有による手戻り工数削減方法

コラムを読む

SILSを使用した車載制御ECUソフトウェア開発競争力強化

コラムを読む

車載ECUシミュレーションでテスト資産を活かすための技術とは?

コラムを読む

早期の車載ECUタイミング検証の実現

コラムを読む