以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1は、充電可能なバッテリ2aで駆動するテスト対象装置2の動作テストを行う。例えば、テスト対象装置2上では複数の機能が実現され得る。情報処理装置1は、複数の機能に対する複数の動作テストを行い得る。各動作テストは、例えばファジングの手法を用いて行える。なお、情報処理装置1およびテスト対象装置2は、CPU(Central Processing Unit)などのプロセッサとRAM(Random Access Memory)などのメモリとを備えてもよく、メモリに記憶されたプログラムをプロセッサが実行するコンピュータであってもよい。また、バッテリ2aは、テスト対象装置2に内蔵されてもよく、テスト対象装置2の外部に設けられてもよい。情報処理装置1は、記憶手段1aおよび制御手段1bを有する。
記憶手段1aは、第1の動作テストの情報と第2の動作テストの情報とを記憶する。第1の動作テストは、テスト対象装置2の第1の機能の動作テストである。第1の動作テストは、バッテリ2aの充電中に行われると、バッテリ2aからの充電量がバッテリ2aへの充電量よりも大きくなる動作テストである。第2の動作テストは、テスト対象装置2の第2の機能の動作テストである。第2の動作テストは、バッテリ2aの充電中に行われると、バッテリ2aからの放電量がバッテリ2aへの充電量以下となる動作テストである。
第1の動作テストの情報は、バッテリ2aの充電中に第1の動作テストを行うとき、バッテリ2aからの放電量がバッテリ2aへの充電量よりも大きくなることを示す情報(区分:“充電量<放電量”)を含む。第2の動作テストの情報は、バッテリ2aの充電中に第2の動作テストを行うとき、バッテリ2aからの放電量がバッテリ2aへの充電量以下になることを示す情報(区分:“充電量≧放電量”)を含む。第1,第2の動作テストの情報は、ファジングのために予め生成したテストデータを含んでもよい。例えば、第1の動作テストのために、エラー原因となり得る複数のテストデータを予め生成しておいてもよい。第2の動作テストも同様である。
ここで、バッテリ2aからの放電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ2aから放電された電気量である。バッテリ2aからの放電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ2aから取り出された(テスト対象装置2が消費した)電力量でもよい。
バッテリ2aへの充電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ2aに充電された電気量である。バッテリ2aへの充電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ2aに蓄えられた電力量でもよい。
動作テストごとの充電量と放電量との大小関係は、テスト対象装置2への当該動作テストの試行により予め得られる。例えば、バッテリ2aの充電中に所定時間または所定回数だけテストデータをテスト対象装置2に送信して当該動作テストを途中まで行い、その前後でのバッテリ2aの蓄電量の増減を観測する。蓄電量が減少すれば“充電量<放電量”である。蓄電量が増加する、または、一定であれば“充電量≧放電量”である。
制御手段1bは、バッテリ2aの充電中に第1の動作テストを行っているとき、バッテリ2aの蓄電量が第1の閾値以下になると、第2の動作テストに切り替える。第2の動作テストは、バッテリ2aからの放電量がバッテリ2aへの充電量以下になる動作テストである。制御手段1bは、このような第2の動作テストを、記憶手段1aを参照して特定できる。第2の動作テストを行っている間、バッテリ2aの蓄電量は、充電量と放電量との差分だけ増加する。
なお、第2の動作テストが複数ある場合、制御手段1bは動作テストごとの優先度に基づき、切り替え後の第2の動作テストを選択してもよい。また、制御手段1bは、第1の動作テストの中断箇所を記憶手段1aに登録してもよい。第2の動作テストが前回の切り替えで中断されている場合、中断された箇所から第2の動作テストを再開してもよい。例えば、制御手段1bは、第2の動作テスト用の未送信分のテストデータを記憶手段1aから取得してテスト対象装置2に順次送信し、第2の動作テストを再開してもよい。
制御手段1bは、バッテリ2aの蓄電量が第1の閾値よりも大きい第2の閾値以上になると第2の動作テストから第1の動作テストに切り替える。第1の動作テストは、バッテリ2aからの放電量がバッテリ2aへの充電量よりも大きくなる動作テストである。制御手段1bは、このような第1の動作テストを、記憶手段1aを参照して特定できる。第1の動作テストを行っている間、バッテリ2aの蓄電量は、放電量と充電量との差分だけ減少する。
なお、第1の動作テストが複数ある場合、制御手段1bは動作テストごとの優先度に基づき、切り替え後の第1の動作テストを選択してもよい。また、制御手段1bは、第2の動作テストの中断箇所を記憶手段1aに登録してもよい。第1の動作テストが前回の切り替えで中断されている場合、中断された箇所から第1の動作テストを再開してもよい。例えば、制御手段1bは、第1の動作テスト用の未送信分のテストデータを記憶手段1aから取得してテスト対象装置2に順次送信し、第1の動作テストを再開してもよい。
情報処理装置1によれば、制御手段1bにより、バッテリ2aの充電中に第1の動作テストを行っているときバッテリ2aの蓄電量が第1の閾値以下になると第2の動作テストに切り替えられる。制御手段1bにより、バッテリ2aの蓄電量が第2の閾値以上になると第2の動作テストから第1の動作テストに切り替えられる。
これにより、バッテリ2aで駆動する装置の動作テストを効率的に行える。具体的には、バッテリ2aを充電しながら第1の動作テストを行っている場合に、バッテリ2aの蓄電量が減少しても、バッテリ切れ(テスト対象装置2を駆動し得る電力を確保できなくなった状態)になる前に第2の動作テストに切り替える。すると、バッテリ2aの蓄電量が増加する。そして、所定の蓄電量まで回復した後に、第2の動作テストから第1の動作テストへ切り替える。例えば、ファジングでは個々のテストデータによるテストはそれぞれ独立しており、テストデータの入力の順番にテスト結果が依存しないことが多い。そこで、テストデータの入力の順序を制御して、バッテリ2aの蓄電量が減少する第1の動作テストの合間に、バッテリ2aの蓄電量が増加する第2の動作テストを行うようにする。このようにして、バッテリ切れによる動作テストの中断を回避できる。
ここで、バッテリ切れになると、充電により蓄電量が回復するまでの待ち時間が生じてしまう。また、バッテリ切れになると、テスト対象装置2のオペレーティングシステム(OS:Operating System)が停止する。このため、バッテリ2aの蓄電量の回復後にOSの起動の待ち時間が生じる可能性もある。すなわち、中断された動作テストを再開するまでに時間がかかる。その結果、動作テストの所要時間が長くなり非効率的となる。
一方、情報処理装置1によれば、バッテリ切れによる動作テストの中断を回避できるので、このような待ち時間が発生しない。よって、動作テストを効率的に行える。
更に、制御手段1bは、テストデータを送信するたびにバッテリ2aの蓄電量を確認して、第1,第2の閾値との比較を行ってもよい。バッテリ2aの蓄電量を詳細に把握することで、バッテリ2aがバッテリ切れになる可能性を一層低減できるからである。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、テスト制御装置100および携帯端末装置200を含む。テスト制御装置100と携帯端末装置200とでは、複数の通信リンクが確立されている。第1の通信リンクは、Bluetooth(登録商標)である。第2の通信リンクは、WLAN(Wireless Local Area Network)である。第3の通信リンクは、IrDA(Infrared Data Association)である。第4の通信リンクは、USB(Universal Serial Bus)である。Bluetooth、WLANおよびIrDAは、無線の通信リンクである。USBは、テスト制御装置100と携帯端末装置200とを物理的に接続したUSBケーブル11を介した有線の通信リンクである。なお、WLANの通信リンクはアドホックに限らず、アクセスポイント(図示を省略)を介してもよい。
テスト制御装置100は、携帯端末装置200の動作テストを行うコンピュータである。動作テストは、各通信リンクを介して受信したパケットを処理する所定のソフトウェア(例えば、ドライバソフトウェアや所定の機能を実現するアプリケーション)の動作検証である。テスト制御装置100は各通信リンクを介した4種類の動作テストを行う。動作テストには、ファジングの手法を用いる。テスト制御装置100は、各通信リンクを介して携帯端末装置200にテストパケットを送信する。テスト制御装置100は、テストパケットに対するソフトウェアの出力内容(テスト結果)を携帯端末装置200から取得する。ユーザは、テスト結果を参照してソフトウェアのバグや脆弱性を発見する。
携帯端末装置200は、充電可能なバッテリで駆動する。携帯端末装置200は、テストパケットをソフトウェアに入力する。携帯端末装置200は、テストパケットに対するソフトウェアの出力内容をテスト制御装置100に送信する。
ここで、テスト制御装置100と携帯端末装置200とは、USBケーブル11で接続されている。USBでは、USBケーブル11を介して駆動用の電力を周辺機器に供給可能である。携帯端末装置200は、テスト制御装置100から供給される電力により、自身のバッテリを充電する。
図3は、テスト制御装置のハードウェア例を示す図である。テスト制御装置100は、CPU101、RAM102、HDD(Hard Disk Drive)103、ディスプレイ104、入力デバイス105、ディスクドライブ106、Bluetooth通信部107、WLAN通信部107a、IrDA通信部107bおよびUSB通信部107cを有する。各部がバスに接続されている。
CPU101は、テスト制御装置100の情報処理を制御するプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部を読み出し、RAM102に展開してプログラムを実行する。なお、テスト制御装置100は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
RAM102は、CPU101が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、テスト制御装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
HDD103は、OSプログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対してデータの読み書きを行う。なお、テスト制御装置100は、磁気ディスク以外の種類の不揮発性の記憶装置(例えば、SSD(Solid State Drive)など)を備えてもよく、複数の記憶装置を備えていてもよい。
ディスプレイ104は、CPU101による制御に従って、各種の画像を出力する。ディスプレイ104としては、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイおよび有機EL(Electro Luminescence)ディスプレイを用いることができる。
入力デバイス105は、ユーザの操作に応じた入力信号をCPU101に出力する。入力デバイス105としては、例えば、マウスやタッチパネルなどのポインティングデバイスおよびキーボードなどを用いることができる。
ディスクドライブ106は、記録媒体12に記録されたプログラムやデータを読み取る駆動装置である。記録媒体12には、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)およびUSBメモリなどの半導体メモリなどを使用できる。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体12から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
Bluetooth通信部107は、CPU101の命令に従って、携帯端末装置200とBluetoothによる通信を行う通信インタフェースである。
WLAN通信部107aは、CPU101の命令に従って、携帯端末装置200とWLANによる通信を行う通信インタフェースである。
IrDA通信部107bは、CPU101の命令に従って、携帯端末装置200とIrDAによる通信を行う通信インタフェースである。
USB通信部107cは、CPU101の命令に従って、携帯端末装置200とUSBによる通信を行う通信インタフェースである。USB通信部107cと携帯端末装置200とはUSBケーブル11で接続されている。USB通信部107cは、USBケーブル11を介して携帯端末装置200に電力を供給する。
図4は、携帯端末装置のハードウェア例を示す図である。携帯端末装置200は、CPU201、RAM202、フラッシュメモリ203、ディスプレイ204、入力デバイス205、音声デバイス206、Bluetooth通信部207、WLAN通信部207a、IrDA通信部207b、USB通信部207cおよび電源部208を有する。各部がバスに接続されている。
CPU201は、フラッシュメモリ203に記憶されているプログラムやデータの少なくとも一部を読み出し、RAM202に展開してプログラムを実行する。携帯端末装置200は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
RAM202は、CPU201が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、携帯端末装置200は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
フラッシュメモリ203は、OSプログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。フラッシュメモリ203は、携帯端末装置200に対して着脱可能なカード型メモリであってもよい。また、フラッシュメモリ203に代えて、他の種類の不揮発性の記憶媒体を用いてもよい。
ディスプレイ204は、CPU201による制御に従って、各種の画像を出力する。ディスプレイ204としては、例えば、液晶ディスプレイや有機ELディスプレイを用いることができる。
入力デバイス205は、ユーザの操作に応じた入力信号をCPU201に出力する。入力デバイス205としては、例えば、タッチパネルなどのポインティングデバイスおよびキーパッドなどを用いることができる。
音声デバイス206は、マイクロホンおよびスピーカである。マイクロホンは、音の物理振動を電気信号に変換して音声入力を受け付け、音声信号をCPU201に出力する。例えば、携帯端末装置200のユーザが通話を行っているとき、ユーザの声やユーザ側の背景雑音がマイクロホンから入力される。スピーカは、CPU201による制御に従って、音声信号を物理振動に変換して音を再生する。例えば、ユーザが通話を行っているとき、通話相手の声や通話相手側の背景雑音がスピーカから出力される。
Bluetooth通信部207は、CPU201の命令に従って、テスト制御装置100とBluetoothによる通信を行う通信インタフェースである。
WLAN通信部207aは、CPU201の命令に従って、テスト制御装置100とWLANによる通信を行う通信インタフェースである。
IrDA通信部207bは、CPU201の命令に従って、テスト制御装置100とIrDAによる通信を行う通信インタフェースである。
USB通信部207cは、CPU201の命令に従って、テスト制御装置100とUSBによる通信を行う通信インタフェースである。USB207cは、USBケーブル11を介してテスト制御装置100から受電した電力を電源部208へ供給する。
電源部208は、携帯端末装置200を駆動させるための電力を各部へ供給する。電源部208は、バッテリ208aを備える。バッテリ208aは充電可能である。電源部208は、USB通信部207cから供給される電力をバッテリ208aに蓄電する。電源部208は、バッテリ208aを充電しながらでも、バッテリ208aを放電させて各部へ駆動用の電力を供給できる。
図5は、情報処理システムのソフトウェア例を示す図である。図5に示すユニットの一部または全部は、テスト制御装置100および携帯端末装置200が実行するプログラムのモジュールであってもよい。また、図5に示すユニットの一部または全部は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの電子回路であってもよい。テスト制御装置100は、パケット情報記憶部110、テスト情報記憶部120、テスト結果記憶部130、バッテリ残量確認部140、テスト制御部150、パケット送信部160およびテスト結果確認部170を有する。
パケット情報記憶部110は、パケットテーブルを記憶する。パケットテーブルは、テストパケットを登録したテーブルである。ここで、1つの動作テストでは、多数のテストパケットを用い得る。そこで、動作テストごとに携帯端末装置200に送信するテストパケットを予め生成してパケット情報記憶部110に格納しておく。第2の実施の形態では、動作テストはBluetooth用、WLAN用、IrDA用およびUSB用と4種類ある。よって、Bluetooth用、WLAN用、IrDA用およびUSB用のテストパケットがパケット情報記憶部110に予め格納される。
テスト情報記憶部120は、テストテーブルを記憶する。テストテーブルは、動作テストに関する情報を登録したテーブルである。テストテーブルは、動作テストの優先度、バッテリ208aの充電中に動作テストを行ったときに充電量が放電量を上回るか否かを示す情報を含む。また、テストテーブルは、1つの動作テストで用いるテストパケットの総数や、何れのテストパケットまでを送信済かを示す情報を含む。
テスト結果記憶部130は、テスト結果テーブルを記憶する。テスト結果テーブルは、各テストパケットに対する携帯端末装置200の出力(テスト結果)を登録したテーブルである。
なお、パケット情報記憶部110、テスト情報記憶部120およびテスト結果記憶部130は、RAM102上に確保されるデータ領域に対応する。
バッテリ残量確認部140は、携帯端末装置200に対し、バッテリ208aの蓄電量(以下、バッテリ残量ということがある)の確認を行う。バッテリ残量確認部140は、テスト制御部150またはテスト結果確認部170から所定の通知を受け付けるとバッテリ残量の確認要求を携帯端末装置200に送信する。バッテリ残量確認部140は、携帯端末装置200からバッテリ残量の情報を受信し、バッテリ208aのバッテリ残量を確認する。
テスト制御部150は、テスト情報記憶部120に記憶されたテストテーブルおよびバッテリ残量確認部140によるバッテリ残量の確認結果に基づいて、動作テストを切り替える。具体的には、テスト制御部150は、バッテリ残量の減り具合および増え具合に応じて、何れの動作テストに係るテストパケットを次に送信するかを決定する。テスト制御部150は、パケット情報記憶部110に記憶されたパケットテーブルから、決定した動作テストに係るテストパケットを取得してパケット送信部160に出力する。
パケット送信部160は、テスト制御部150から取得したテストパケットを携帯端末装置200に送信する。ここで、テストパケットは、Bluetooth用、WLAN用、IrDA用およびUSB用のものがある。例えば、パケット送信部160は、Bluetooth用のテストパケットをBluetooth通信部107を介して携帯端末装置200に送信する。WLAN用のテストパケットをWLAN通信部107aを介して携帯端末装置200に送信する。IrDA用のテストパケットをIrDA通信部107bを介して携帯端末装置200に送信する。USB用のテストパケットをUSB通信部207cを介して携帯端末装置200に送信する。
テスト結果確認部170は、テスト結果の情報を携帯端末装置200から受信する。テスト結果確認部170は、テスト結果記憶部130に記憶されたテスト結果テーブルにテスト結果の情報を登録する。テスト結果確認部170は、テスト結果の情報を登録すると、バッテリ残量の確認を促す通知をバッテリ残量確認部140に出力する。
携帯端末装置200は、パケット処理部210、テスト対象監視部220およびバッテリ残量監視部230を有する。
パケット処理部210は、動作テストの対象となる機能である。パケット処理部210は、テスト制御装置100から受信したテストパケットに応じた処理を行う。ここで、パケット処理部210は、異なる機能をもった複数のユニットでもよい。例えば、ドライバソフトウェアの動作テストを行う場合、Bluetooth用のドライバソフトウェア、WLAN用のドライバソフトウェア、IrDA用のドライバソフトウェア、USB用のドライバソフトウェアのように複数のユニットを含み得る。この場合、例えば、Bluetooth用のテストパケットにより、Bluetooth用のドライバソフトウェアの動作テストを行える(他の通信リンクも同様)。また、各通信リンクを介したデータ通信が可能な1つのアプリケーションであれば、当該1つのアプリケーションを動作テストの対象とすることもできる。例えば、Bluetooth用のテストパケットにより、Bluetoothによる通信を行った際のアプリケーションの動作テストを行える。パケット処理部210は、テストパケットの処理結果に応じて、携帯端末装置200が備える所定の記憶部(例えば、RAM202上に確保されたデータ領域)にログを出力することもある。
テスト対象監視部220は、パケット処理部210がテストパケットの入力により異常な挙動をしていないかを監視する。例えば、テスト対象監視部220は、パケット処理部210が出力するログによって挙動の監視を行う。また、例えば、テスト対象監視部220は、パケット処理部210によるCPU201やRAM202などのリソースの利用状況によって挙動の監視を行う。テスト対象監視部220は、パケット処理部210の挙動や現在の状態を含むテスト結果の情報をテスト制御装置100に送信する。なお、テスト対象監視部220は、テスト結果の情報を、テストパケットを受信した通信リンクと同一の通信リンクを介して送信してもよいし、異なる通信リンクを介して送信してもよい。例えば、テストパケットによっては、対象の通信リンクがダウンすることもある。その場合には、他の通信リンクを用いてテスト結果の情報を送信する。
バッテリ残量監視部230は、テスト制御装置100からバッテリ残量の確認要求を受信すると、バッテリ208aのバッテリ残量を電源部208から取得し、テスト制御装置100に応答する。バッテリ残量監視部230とテスト制御装置100(バッテリ残量確認部140)との間の通信は、各通信リンクの何れかを用いて行える。
電源部208によるバッテリ残量の検出方法は、種々の方法が考えられる。例えば、電源部208は、バッテリ208aの出力電圧とバッテリ208aのバッテリ残量(割合)とのテーブルを予め保持しておく。そうすれば、バッテリ208aの現在の出力電圧を測ることで、テーブルに基づきバッテリ残量を検出し得る。また、例えば、電源部208は、充電した電流値および放電した電流値を積算しておき、それらの差と満充電時の容量とに基づいてバッテリ残量を検出し得る。電源部208は、検出したバッテリ残量をバッテリ残量監視部230に提供する。
バッテリ残量監視部230が取得するバッテリ残量は、バッテリ208aの容量の残りの割合(例えば、50%など)でもよいし、残容量値(例えば、Ah(Ampere hour)やmAh(milli Ah)などの単位で表される量)などでもよい。
なお、テスト情報記憶部120は、第1の実施の形態の記憶手段1aの一例である。また、バッテリ残量確認部140およびテスト制御部150は、制御手段1bの一例である。
図6は、テストパケットの例を示す図である。パケット情報記憶部110には、動作テストに用いるテストパケットが予め格納される。図6では、テストパケットの一例を示している。図6では、BluetoothのL2CAP(Logical Link Control and Adaptive Protocol)で用いられるB(Basic information)フレームと呼ばれるフレーム構造をもつテストパケットを例示している。ここで、L2CAPは、Bluetoothのアダプション・レイヤーのプロトコルであり、装置間のデータ伝送用の論理チャネルを制御する。また、Bフレームは接続指向のデータ通信(Connection - Oriented Channel In Basic L2CAP Mode)を行うために利用される。Bフレームは、より上位のレイヤーに属するプロトコルによるデータ通信に用いられる。以下では、このBluetooth用のテストパケットをCO(Connection - Oriented)パケットと呼ぶことがある。
COパケット300は、length、CID(Channel IDentifier)およびpayloadのフィールドを含む。lengthおよびCIDはヘッダに相当する。
lengthは16ビットである。lengthには、payloadのデータ長(符号なしの整数で表されたオクテット数)が設定される。
CIDは16ビットである。CIDには、論理チャネルのエンドポイント(L2CAPを利用する上位プロトコル)ごとの識別子(符号なしの整数)が設定される。なお、CIDの設定可能な値の範囲のうちの一部は、制御用の識別子として予約されている。
payloadは任意長(最大65535オクテット)である。payloadには、伝送するデータが設定される。
COパケットには、動作テストにおいて脆弱性などの検出に有効なデータを設定する。
例えば、lengthやCIDには、8ビットの整数や16ビットの整数の境界値付近(例えば、境界値±1)の値を設定する。整数オーバーフローなどの脆弱性の検出に有効だからである。より具体的には、“0”、“1”、“254(=255−1)”、“255”、“256(=256+1)”、“65534(=65535−1)”、“65535”をlengthやCIDに設定する。
更に、例えば、payloadには、8ビットや16ビットの整数の境界値付近(例えば、境界値±1)の長さの、所定文字列(例えば、半角の“x”を当該長さで示される個数だけ連ねた文字列)を設定する。バッファオーバーフローなどの脆弱性の検出に有効だからである。より具体的には、半角の“x”を、0個、1個、254個、255個、256個、65534個、65535個、連ねた文字列をpayloadに設定する。
例えば、パケット情報記憶部110では、各テストパケットにテストパケット番号を付して管理する。例えば、COパケットのテストパケット番号(No.)“1”は、lengthが“0”、CIDが“0”、payloadが無しである。また、例えば、COパケットのテストパケット番号“146”は、length“254”、CID“65535”、payloadは“xxx・・・xxx”(65534個の半角の“x”)である。
このように、各通信リンクに応じたテストパケットの複数のパターンを予め網羅的に生成してパケット情報記憶部110のパケットテーブルに登録しておく。上記の例でいえば、length、CIDでそれぞれ7通り、payloadで7通りの情報を設定し得る。よって、7の3乗=343個のCOパケットがBluetooth用のテストパケットとしてパケット情報記憶部110に格納される。ただし、テストパケットの個数は動作テストの内容に応じて変わり得る。例えば、「境界値付近」の範囲を境界値±2(または、3以上)までとしてもよい。payloadに、所定のメッセージを示す文字列などを設定してもよい。
図7は、パケットテーブルの例を示す図である。パケットテーブル111は、パケット情報記憶部110に格納される。パケットテーブル111は、テスト番号、テスト種類、テストパケット番号およびテストパケットの内容の項目を含む。
テスト番号の項目には、テスト番号が登録される。テスト種類の項目には、動作テストの種類を示す情報が登録される。テストパケット番号には、テストパケットに付されたテストパケット番号が登録される。テストパケットの内容には、テストパケットに設定する情報が登録される。
例えば、テスト番号“A”は、テスト種類“Bluetooth COパケット”に関する動作テストである。当該動作テストには、テストパケット番号“1”〜“343”のCOパケットが予め用意されている。例えば、テストパケット番号“1”は、“length:0”(lengthの値が“0”)、“CID:0”(CIDの値が“0”)、“payload:“””(payloadが無し)である。
ここで、テスト番号“B”は、WLANの動作テストである。テスト番号“C”は、IrDAの動作テストである。テスト番号“D”は、USBの動作テストである。
各テストパケットは、携帯端末装置200に独立したコマンドを入力するためのテストデータであるということができる。すなわち、各動作テストは複数の独立したコマンドを携帯端末装置200に入力するものである。このため、テスト結果はテストパケットの入力順序によらない(各テスト結果は前後のテストパケットに依存しない)。したがって、携帯端末装置200へのテストパケットの入力順序は任意に決定できる。
図8は、テストテーブルの例を示す図である。テストテーブル121は、テスト情報記憶部120に格納される。テストテーブル121は、テスト番号、優先度、充電量≧放電量、テストパケット総数および次テストパケット番号の項目を含む。
テスト番号の項目には、テスト番号が登録される。優先度の項目には、動作テストの優先度の値が登録される。充電量≧放電量の項目には、バッテリ208aの充電中に当該動作テストを行う場合、充電量が放電量以上となるか否かを示すフラグが登録される。テストパケット総数の項目には、当該動作テストで送信すべきテストパケットの総数が登録される。次テストパケット番号の項目には、当該動作テストで次に送信すべきテストパケットのテストパケット番号が登録される。次テストパケット番号の項目の初期値は、“1”である。
例えば、テスト番号“A”の動作テストは、優先度が“1”であり、充電量≧放電量が真を示す“true”であるので、当該動作テストは、バッテリ208aの充電中に行われると充電量が放電量以上となる。すなわち、テスト番号“A”の動作テストは、充電中に行われた場合に、バッテリ208aのバッテリ残量が増加する、または、変わらない。また、当該動作テストのテストパケット総数は“343”であり、次に送信すべきテストパケット番号は“244”である。
また、例えば、テスト番号“B”の動作テストは、優先度が“2”であり、充電量≧放電量が偽を示す“false”であるので、当該動作テストは、バッテリ208aの充電中に行われると充電量が放電量よりも小さくなる。すなわち、テスト番号“B”の動作テストは、充電中に行われた場合に、バッテリ208aのバッテリ残量が減少する。また、当該動作テストのテストパケット総数は“3000”であり、次に送信すべきテストパケット番号は“2424”である。
図9は、テスト結果テーブルの例を示す図である。テスト結果テーブル131は、テスト結果記憶部130に格納される。テスト結果テーブル131は、テスト番号、テストパケット番号およびテスト結果の項目を含む。
テスト番号の項目には、テスト番号が登録される。テストパケット番号の項目には、テストパケット番号が登録される。テスト結果の項目には、テスト結果の情報が登録される。例えば、テスト番号“A”のテストパケット番号“1”のCOパケットに対するテスト結果は“問題なし”である。また、例えば、テスト番号“A”のテスト番号“2”のCOパケットに対するテスト結果は“携帯端末装置停止”である。
次に、テスト制御装置100の処理手順を説明する。何れの動作テストも、テスト制御装置100と携帯端末装置200とをUSBケーブル11で接続した状態で行われる。したがって、動作テスト中はバッテリ208aへの充電と、バッテリ208aからの放電が行われる。テスト制御装置100は、同じ状態で各動作テストを事前に行い、各動作テスト時の充電量と放電量との大小比較を行っておく(事前計測)。テスト制御装置100は、事前計測により、テストテーブル121の充電量≧放電量の項目の設定を行う。
図10は、事前計測の例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(ステップS11)テスト制御部150は、事前計測を行っていない(未計測の)動作テストがあるか否かを判定する。未計測の動作テストがある場合、未計測の動作テストを1つ選択して処理をステップS12に進める。未計測の動作テストがない場合、処理を終了する。テスト制御部150は、テスト情報記憶部120に記憶されたテストテーブル121の充電量≧放電量の項目を参照して、未計測の動作テストがあるか否かを判定できる。具体的には、充電量≧放電量の項目が未設定の動作テストがあれば、未計測の動作テストがあると判断する。充電量≧放電量の項目が未設定の動作テストがなければ、未計測の動作テストがないと判断する。未設定とは“true”および“false”の何れもが設定されていないことを示す。
(ステップS12)テスト制御部150は、バッテリ残量の確認をバッテリ残量確認部140に依頼する。バッテリ残量確認部140は、バッテリ残量の確認要求を携帯端末装置200に送信し、携帯端末装置200から現在のバッテリ残量の情報を得る。
(ステップS13)テスト制御部150は、ステップS11で選択した動作テストに係るテストパケットをパケット情報記憶部110に記憶されたパケットテーブル111から1つ取得して、パケット送信部160に出力する。テスト制御部150は、取得すべきテストパケットのテストパケット番号を、テスト情報記憶部120に記憶されたテストテーブル121の次テストパケット番号の項目から特定できる。テスト制御部150は、テストパケットをパケット送信部160に出力すると、次テストパケット番号の項目の値に1を加算する。パケット送信部160は、テスト制御部150から取得したテストパケットを携帯端末装置200に送信する。テスト結果確認部170は、携帯端末装置200からテスト結果の情報を受信すると、テスト結果記憶部130に記憶されたテスト結果テーブル131にテスト結果の情報を登録する。テスト結果確認部170は、テスト制御部150に1回のテスト(1つのテストパケットの送信から、当該1つのテストパケットに対するテスト結果の情報の受信まで)が完了したことを通知する。その後、テスト制御部150は、所定回数(例えば、100回)に達するまで、テストを完了させる。
(ステップS14)バッテリ残量確認部140は、バッテリ残量の確認要求を携帯端末装置200に送信し、携帯端末装置200から現在のバッテリ残量の情報を得る。バッテリ残量確認部140は、ステップS12で取得したバッテリ残量よりも減少しているか否かを判定する。減少している場合、減少した旨をテスト制御部150に通知して、処理をステップS15に進める。減少していない場合、減少していない旨をテスト制御部150に通知して、処理をステップS16に進める。
(ステップS15)テスト制御部150は、ステップS11で選択した動作テストについて、テストテーブル121の充電量≧放電量の項目に“false”を設定する。そして、処理をステップS11に進める。
(ステップS16)テスト制御部150は、ステップS11で選択した動作テストについて、テストテーブル121の充電量≧放電量の項目に“true”を設定する。そして、処理をステップS11に進める。
このようにして、テスト制御装置100は、事前計測を行う。
なお、ステップS13では、所定回数のテスト(すなわち、所定回数のテストパケットの送信)を行うものとしたが、所定時間(例えば、5分間)でもよい。
テスト制御部150は、テストテーブル121の設定が完了すると、バッテリ208aの充電量と放電量とを考慮した動作テストを開始する。
図11は、動作テストの例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(ステップS21)テスト制御部150は、テスト情報記憶部120に記憶されたテストテーブル121に基づいて、未完了の動作テストがあるか否かを判定する。未完了の動作テストがある場合、処理をステップS22に進める。全動作テストを完了済の場合、処理を終了する。テスト制御部150は、テストテーブル121の次テストパケットの番号の項目を参照して、この判定を行える。何れかの動作テストで、次テストパケット番号の値がテストパケット総数以下であれば、携帯端末装置200に未送信のテストパケット(残りテストパケット)があり、未完了の動作テストありと判断する。全動作テストにつき、次テストパケット番号の値がテストパケット総数よりも大きければ、残りテストパケットがなく、全動作テストを完了済と判断する。
(ステップS22)テスト制御部150は、テストテーブル121に基づいて、充電中に行われると充電量<放電量となる動作テストの残りテストパケットがあるか否かを判定する。ある場合、処理をステップS23に進める。ない場合、処理をステップS26に進める。ここで、充電量<放電量となる動作テストとは、テストテーブル121の充電量≧放電量の項目が“false”の動作テストである。
(ステップS23)テスト制御部150は、残りテストパケットがある動作テスト(充電量<放電量となるものに限る)のうち、優先度が最も高いもの(テストテーブル121の優先度の設定値が最小のもの)を選択する。テスト制御部150は、当該動作テストにつき、テストテーブル121から次テストパケット番号を取得する。テスト制御部150は、パケット情報記憶部110に記憶されたパケットテーブル111から当該次テストパケット番号と等しいテストパケット番号のテストパケットを取得してパケット送信部160に出力する。テスト制御部150は、テストテーブル121の当該次テストパケット番号の設定値に1を加算する。パケット送信部160は、テスト制御部150から取得したテストパケットを携帯端末装置200に送信する。
(ステップS24)テスト結果確認部170は、携帯端末装置200からテスト結果の情報を受信し、テスト結果記憶部130に記憶されたテスト結果テーブル131にテスト結果を登録する。テスト結果確認部170は、バッテリ残量の確認を行う旨をバッテリ残量確認部140に通知する。
(ステップS25)バッテリ残量確認部140は、バッテリ残量の確認要求を携帯端末装置200に送信する。バッテリ残量確認部140は、バッテリ残量の情報を携帯端末装置200から受信する。バッテリ残量確認部140は、バッテリ残量が下限閾値以下であるか否かを判定する。下限閾値以下である場合、処理をステップS26に進める。下限閾値よりも大きい場合、処理をステップS21に進める。バッテリ残量の下限閾値は、動作テストの内容に応じてバッテリ残量確認部140に予め指定される。バッテリ残量を百分率で表す場合、下限閾値を例えば10%とする。
(ステップS26)テスト制御部150は、テストテーブル121に基づいて、充電中に行われると充電量≧放電量となる動作テストの残りテストパケットがあるか否かを判定する。ある場合、処理をステップS27に進める。ない場合、処理をステップS21に進める。ここで、充電量≧放電量となる動作テストとは、テストテーブル121の充電量≧放電量の項目が“true”の動作テストである。
(ステップS27)テスト制御部150は、残りテストパケットがある動作テスト(充電量≧放電量となるものに限る)のうち、優先度が最も高いものを選択する。テスト制御部150は、当該動作テストにつき、テストテーブル121から次テストパケット番号を取得する。テスト制御部150は、パケット情報記憶部110に記憶されたパケットテーブル111から当該次テストパケット番号と等しいテストパケット番号のテストパケットを取得してパケット送信部160に出力する。テスト制御部150は、テストテーブル121の当該次テストパケット番号の設定値に1を加算する。パケット送信部160は、テスト制御部150から取得したテストパケットを携帯端末装置200に送信する。
(ステップS28)テスト結果確認部170は、携帯端末装置200からテスト結果の情報を受信し、テスト結果記憶部130に記憶されたテスト結果テーブル131にテスト結果を登録する。テスト結果確認部170は、バッテリ残量の確認を行う旨をバッテリ残量確認部140に通知する。
(ステップS29)バッテリ残量確認部140は、バッテリ残量の確認要求を携帯端末装置200に送信する。バッテリ残量確認部140は、バッテリ残量の情報を携帯端末装置200から受信する。バッテリ残量確認部140は、バッテリ残量が回復閾値以上であるか否かを判定する。回復閾値以上である場合、処理をステップS21に進める。回復閾値よりも小さい場合、処理をステップS26に進める。バッテリ残量の回復閾値は、下限閾値よりも大きい値である。バッテリ残量の回復閾値は、動作テストの内容に応じてバッテリ残量確認部140に予め指定される。バッテリ残量を百分率で表す場合、回復閾値を例えば30%とする。
このようにして、テスト制御装置100は、バッテリ208aのバッテリ残量に応じた動作テストを行う。テスト制御装置100は、テストパケットを送信するごとにバッテリ残量の確認を行うことで、バッテリ残量を詳細に取得できる。このため、バッテリ残量の減少を見逃さずに済む。例えば、バッテリ残量が大きく減少したことを見逃して、バッテリ切れを引き起こしてしまうような事態の発生を抑制できる。
なお、下限閾値や回復閾値は容量値など他の値で指定されてもよい。
また、携帯端末装置200では、テストパケットにより誘発された異常により、通信リンクの機能(例えば、Bluetooth通信部207やパケット処理部210など)が停止したり、携帯端末装置200自体が停止したりすることがある(図10のステップS13や図11のステップS23,S27)。その場合、テスト制御装置100(テスト制御部150)は、停止箇所(例えば、携帯端末装置200、Bluetooth通信部207およびパケット処理部210など)を再起動させて動作テストを継続する。何れの機能が停止したかはテスト結果の情報に基づいて判断できる。
また、図10のステップS13および図11のステップS23,S27では、パケットテーブル111からテストパケットを取得するものとしたが、テスト制御部150は送信する直前にテストパケットを生成してパケット送信部160に出力してもよい。その場合、テスト制御部150は、それまでに送信済のテストパケットの設定内容の履歴を保持しておく。そして、テスト制御部150は、次に送信するテストパケットが過去に送信済のテストパケットの内容と重複しないようにする。
更に、図10、図11の処理手順は、全動作テストで利用する通信リンクを全て確立した状態で行われる。ただし、無線の通信リンクは、動作テストの都度、オン/オフを切り替えてもよい。例えば、動作テストで使用する前にオンにし、動作テストで使用しない場合にはオフにする。ただし、図10で示した事前測定と図11で示した本番の動作テストとは、同じ要領で実行することが好ましい。図11のステップS22,S26で残りテストパケットを選択する際に、より適正な判断を行えるからである。
図12は、動作テストの例を示す図である。図12では複数のタイミングにおけるバッテリ残量の変遷(折れ線グラフ)と実行した動作テストの変遷(棒グラフは当該動作テスト時のバッテリ208aの放電量を示す)を例示している。
テスト制御装置100は、バッテリ残量が下限閾値よりも大きい状態で本番の動作テストを開始する(ステップST1)。この場合、充電量<放電量となる動作テスト“B,D”のうち、優先度の最も高い動作テスト“B”が行われる。バッテリ残量は減少していく(折れ線グラフC1)。動作テスト“B”時の放電量(棒グラフD11)が、バッテリ208aの充電量を上回るからである。
テスト制御装置100は、バッテリ残量が下限閾値以下になると、充電量<放電量となる動作テスト“B”から、充電量≧放電量となる動作テストに切り替える(ステップST2)。このとき、充電量≧放電量となる動作テスト“A,C”のうち、優先度の最も高い動作テスト“A”を選択する。バッテリ残量は増加していく(折れ線グラフC2)。棒グラフD21は動作テスト“B”時の放電量を、棒グラフD22は動作テスト“A”時の放電量を示す。
テスト制御装置100は、バッテリ残量が回復閾値以上になると、充電量≧放電量となる動作テスト“A”から、充電量<放電量となる動作テストに切り替える(ステップST3)。このとき、充電量<放電量となる動作テスト“B,C”について、動作テスト“B”が未完了であれば、優先度の高い動作テスト“B”を選択する。動作テスト“B”が完了していれば、動作テスト“C”を選択する。その後、テスト制御装置100は、バッテリ残量が下限閾値以下となると、充電量<放電量となる動作テストから、充電量≧放電量となる動作テストに切り替える。このとき、充電量≧放電量となる動作テスト“A,C”について、動作テスト“A”が未完了であれば、優先度の高い動作テスト“A”を選択する。動作テスト“A”が完了していれば、動作テスト“C”を選択する。以降、全動作テストを完了するまで、この処理を繰り返す。バッテリ残量は、増加/減少を繰り返す(折れ線グラフC3)。棒グラフD31は動作テスト“B”時の放電量を、棒グラフD32は動作テスト“A”時の放電量を、棒グラフD33は動作テスト“D”時の放電量を、棒グラフD34は動作テスト“C”時の放電量を示す。
次に、バッテリ残量に応じた動作テストの切り替えを行わない場合を例示する。
図13は、動作テストの比較例を示す図である。動作テストの優先度や充電量と放電量との大小関係は、テストテーブル121の設定と同一であるとする。図13では、この場合に、テスト制御装置100が充電量と放電量との大小を考慮せずに携帯端末装置200の動作テストを行ったときのバッテリ残量の変遷と実行した動作テストの変遷を例示している。折れ線グラフC4はバッテリ残量の変遷である。棒グラフD41は動作テスト“A”時の(バッテリ208aの)放電量を、棒グラフD42は動作テスト“B”時の放電量を、棒グラフD43は動作テスト“C”時の放電量を、棒グラフD44は動作テスト“D”時の放電量を示す。
まず、最も優先度の高い動作テスト“A”が実行される。動作テスト“A”は、充電量≧放電量となる動作テストである。したがって、動作テスト“A”は、バッテリ残量が満充電の状態で行われると、バッテリ残量が減少せずに完了する。次に、優先度が2番目に高い動作テスト“B”が実行される。動作テスト“B”は、充電量<放電量となる動作テストである。したがって、動作テスト“B”を行うと、バッテリ残量が減少して、やがてバッテリ切れとなる。すると、バッテリ残量が回復するまでに待ち時間WT1が生ずる。この待ち時間には、携帯端末装置200のOSやアプリケーションの起動時間が含まれ得る。以降、動作テスト“B,C,D”を行っていくと、動作テスト“B,D”で断続的にバッテリ切れが生じ、そのたびに待ち時間WT2,WT3,・・・が発生する。すると、待ち時間WT1,WT2,WT3,・・・を積算した分だけ動作テストに時間がかかり非効率的となる。
そこで、図12までで説明したように、テスト制御装置100は、充電量<放電量となる動作テストの合間に、バッテリ残量に応じて充電量≧放電量となる動作テストを行う。具体的には、充電量<放電量となる動作テスト中に、バッテリ残量が下限閾値以下となったとき、充電量≧放電量となる動作テストに切り替える。また、充電量≧放電量となる動作テスト中に、バッテリ残量が回復閾値以上となったとき、充電量<放電量となる動作テストに切り替える。これにより、バッテリ残量が低下した場合にバッテリ残量を回復でき、バッテリ切れを回避できる。その結果、待ち時間WT1,WT2,WT3,・・・の発生を抑制でき、動作テストを効率的に行えるようになる。
特に、ファジングでは、1つの動作テストで大量のテストパケット(例えば、数百万個の単位)を用い得る。このため、携帯端末装置200が高負荷状態となる時間も長くなる。したがって、断続的なバッテリ切れの回数も増大し易く、待ち時間の積算により動作テストの時間が過大となり易い。これに対し、テスト制御装置100は、当該待ち時間の発生を抑制できる。よって、ファジングによる動作テストに用いる場合に特に有効である。
また、テストパケットを送信してテスト結果の情報を取得するたびにバッテリ残量を行うことで、バッテリ残量を詳細に把握できる。その結果、バッテリ切れになる可能性を一層低減できる。
また、動作テストごとの優先度に基づいて、切り替え後の動作テストを選択することで、優先度の高い(あるいは、早く終わらせたい)動作テストを早い段階で完了させることができる。また、動作テストの切り替えにより、前回中断した動作テストを、中断した箇所から再開できるので、当該動作テストを効率的に完了させることができる。更に、本番の動作テストを行う環境と同じ環境で、充電量と放電量との大小関係を事前測定する。このため、本番の動作テスト時に、充電量と放電量との大小関係による動作テストの選択を適正に行える。
更に、第2の実施の形態では、複数の通信リンクを介した動作テストを例示したが、このような動作テストに限らずテスト制御装置100の機能を利用できる。例えば、単一の通信リンクを用いて、携帯端末装置200上の複数のアプリケーションの動作テストを行う際に、テスト制御装置100の機能を利用してもよい。
なお、テスト制御装置100はコンピュータに所定のプログラムを実行させることで実現できる。当該プログラムは、コンピュータ読み取り可能な可搬型の記録媒体12に記録しておくことができる。当該プログラムを流通させるには、例えば、そのプログラムが記録された記録媒体12を配布する。または、そのプログラムをサーバコンピュータに格納しておき、ネットワーク経由でテスト制御装置100に転送する。テスト制御装置100は、例えば、記録媒体12に記録されたプログラムまたはネットワークから取得したプログラムを、自装置の不揮発性の記憶媒体(例えば、HDD103)に格納する。そして、当該不揮発性の記憶媒体からプログラムを読み取り実行する。ただし、テスト制御装置100は、取得したプログラムを、不揮発性の記憶媒体に格納せずに逐次、RAM102に展開して実行することも可能である。