GAIO CLUB

2004年09月02日

 組み込みソフトの自動テストシステム試作機を改造したシステムで自動テストスタート!

GAIO CLUB 特集
GAIO CLUB【2004/9月号】
組み込みソフトの自動テストシステムでソフトの品質保証、網羅的な検証を進める
~ 試作機を改造したシステムで自動テストスタート! ~


組み込みソフトの品質を高めるための効率的なデバッグ手法として、テストの自動化が挙げられます。このコーナーでは、実機をそのまま使用した自動テストシステムや、実マイコンの載ったPCI評価ボードを使用したテストシステムなどについて解説します。

手作業でのデバッグテストの限界

組み込み機器の動作は大きく分けて、正常系動作、異常系動作があります。前者の正常系動作のデバッグとは、開発した組み込みソフトが要求仕様通りに動作するかどうかをテストするものであり、予め想定された操作方法で、機器が仕様通りに動作するかを一つずつ確認するものです。

この正常系テストは、テスト担当者が決められたシナリオ通りに機器を操作し、結果を「目視」する方法が一般的で、機能が複雑で規模の大きなソフトウエアでは、人海戦術で、テスト項目を分担して行うことになります。
この方法では、テストの合否判断を人間が行うため、不具合を見逃してしまう判定ミスがどうしても起こってしまいます。

さらに、予め想定した操作シナリオから外れる条件で機器を動作させる「異常系」テストでは、起こりうる異常条件を作ること自体が難しく、試作機を手で操作するデバッグ手法では、全ての異常条件をテストすることなど到底不可能です。開発の工程において、ソフトを修正してアップデートするたびに、手作業で毎回同じテストを繰り返すのは、どう考えても非効率な方法としか言えません。

デバッグ効率を上げるテストの自動化

最も容易なテストの自動化は、実際の試作機を細工して、手で行う操作を機械化することです。PCのソフトウエアで、テストシナリオ通りに操作する「シーケンサ」を作れば、特に操作方法が予め想定されている「正常系」のデバッグは、完全に自動化することができます。
下の図は、システムの概念を示しています。

この自動テストシステムのポイントは、想定したテストシナリオを如何に作成するかと、試作機の動作結果をどのように自動判定するかの2つです。

ソフト品質を保証する網羅的なテストシーケンスの作成

最も容易なテストシーケンス作成は、操作イベントの発生時間や、イベントの種類をテキストファイルにする方法です。下がその一例です。予め操作ボタンに対するイベント、その他入力信号の種別などをコマンド化しておき、発生する時間と列記してゆきます。
このコマンドに基づいて、指定した時間通りにイベント(ボタン操作)を発生させるシーケンサをWindows上に作ります。

正常系の動作テストであれば、ユーザーがボタンなどを操作する時間に準えて、テストシナリオを作成しますが、この時間タイミングを調整することで、例えば「複数ボタンの同時押し」「ボタン連打」「無効なボタンを故意に押す」など、異常な操作に対するテストも行えます。
考えられるあらゆるケースを網羅したテストパターンを作成し、自動テストすることで、見落としやミスのない確実なテスト、品質保証につながるのです。

動作ログの収集

次に、動作結果の判定についての話に進みます。テストシーケンスによって与えられたイベントによる機器の動作結果は、マイコンのi/oポートや画面表示に反映されます。i/oポートの変化については、市販のPC用拡張PCIカードを使えば、i/oポートの変化を十分に短い周期でサンプリングし、結果をログアウトするシステムが容易に組めます。

これも、テストシーケンスの中に、i/oポートをサンプリングしてログアウトするコマンド(下例:chk)を作成し、これに期待値を合わせて追加すれば、イベントに対する結果の自動判定をシステム化することができます。

全数検査・生産ライン上でのテストシステムと共通化も可能

このような自動テストシステムとの接続のためのi/oコネクタや、テストピンをたてるための基板上のランドを予め製品に組み込んでおけば、ソフトウエア開発工程でのデバッグと、生産ライン上での全数テストのシステムを共通化することもできます。例えば、全数検査が前提となっている特殊な機器や、少量生産品などでは、テストのためのシステムを共通化するメリットが大きくなります。

逆に言えば、最終的に生産ラインで全数テストを行うのであれば、これを開発工程に前倒しすることで、品質保証テストに利用できると言うことになります。

試作機を使わない自動テストシステム

ここまでの話は、実際の試作機を改造するか、或いは自動テストの為のインタフェースを製品基板に予め組み入れておくかして、ソフト開発工程でのテストを自動化する方法です。このシステムは、製品毎に作成する必要があり、同じシステムを継続使用するのは困難です。

この自動テストシステムを完全に共用できれば、より効率の良い、低コストなシステムが運用できます。

短時間で最終試作機と同じ環境を作る「ソリッドシステム」

そこで、ガイオでは、PCのPCIスロットに装着する汎用的な評価ボードと、周辺のハードウエアや、イベント発生装置をWindowsソフトで実現する「仮想ハードウエア」を連動させて、実際の組み込みシステムと同じ環境を構築する「ソリッドシステム」を提案しています。

マイコンや基本的なペリフェラル部分をPCI接続のボード上に置き、製品毎に異なるハードウエアやテスト装置は、専用のツール「IFビルダー」を使用してWin-dowsのソフトウエアに仮想化します。製品毎に異なるインタフェースや、煩雑な接続コネクタ等は全てソフトウエア化できるため、装置の共用化とともに、コストメリットも生まれます。

人気のコラム

最新のコラム