(57)【特許請求の範囲】
【請求項１】
充電可能なバッテリで駆動する装置の動作テストを行う情報処理装置が実行する動作テスト方法であって、
前記バッテリからの放電量が前記バッテリへの充電量よりも大きくなる第１の動作テストを前記バッテリの充電中に行っているときに、前記バッテリの蓄電量が第１の閾値以下になると、前記バッテリからの放電量が前記バッテリへの充電量以下になる第２の動作テストに切り替え、
前記バッテリの蓄電量が前記第１の閾値よりも大きい第２の閾値以上になると、前記第２の動作テストから前記第１の動作テストに切り替える、
動作テスト方法。
【請求項２】
前記第１の動作テストおよび前記第２の動作テストは複数の独立したコマンドを前記装置に入力するものであり、
コマンドの入力ごとに、前記バッテリの蓄電量を確認する、
請求項１記載の動作テスト方法。
【請求項３】
前記第１の動作テストおよび前記第２の動作テストの少なくとも何れかが複数である場合、切り替え後の動作テストを動作テストごとの優先度に基づいて決定する、請求項１または２記載の動作テスト方法。
【請求項４】
動作テストを切り替える際に、切り替え後の動作テストを前回中断した箇所から再開する、請求項１乃至３の何れか一項に記載の動作テスト方法。
【請求項５】
前記第１の動作テストおよび前記第２の動作テストを前記バッテリの充電中に行う場合に前記バッテリからの放電量が前記バッテリへの充電量よりも大きくなるか否かを、前記第１の動作テストおよび前記第２の動作テストを途中まで行うことで事前に計測する、請求項１乃至４の何れか一項に記載の動作テスト方法。
【請求項６】
前記第１の動作テストおよび前記第２の動作テストは、複数の独立したコマンドを前記装置に入力しコマンド単位にテスト結果を取得するものであり、一方の動作テストの途中に他方の動作テストを行っても、コマンドごとのテスト結果に影響のないテストである、請求項１乃至５の何れか一項に記載の動作テスト方法。
【請求項７】
充電可能なバッテリで駆動する装置の動作テストに用いられる情報処理装置であって、
前記バッテリからの放電量が前記バッテリへの充電量よりも大きくなる第１の動作テストの情報と、前記バッテリからの放電量が前記バッテリへの充電量以下になる第２の動作テストの情報と、を記憶する記憶手段と、
前記バッテリの充電中に前記第１の動作テストを行っているとき前記バッテリの蓄電量が第１の閾値以下になると前記記憶手段を参照して前記第２の動作テストに切り替え、前記バッテリの蓄電量が前記第１の閾値よりも大きい第２の閾値以上になると前記記憶手段を参照して前記第２の動作テストから前記第１の動作テストに切り替える制御手段と、
を有する情報処理装置。
【請求項８】
充電可能なバッテリで駆動する装置の動作テストを行うコンピュータに用いられるプログラムであって、前記コンピュータに、
前記バッテリからの放電量が前記バッテリへの充電量よりも大きくなる第１の動作テストを前記バッテリの充電中に行っているときに、前記バッテリの蓄電量が第１の閾値以下になると、前記バッテリからの放電量が前記バッテリへの充電量以下になる第２の動作テストに切り替え、
前記バッテリの蓄電量が前記第１の閾値よりも大きい第２の閾値以上になると、前記第２の動作テストから前記第１の動作テストに切り替える、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は動作テスト方法、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
現在、ソフトウェアの動作を検証する動作テストが行われている。動作テストの１つの手法にブラックボックステストがある。ブラックボックステストでは、ソフトウェアへの入力とソフトウェアからの出力とに着目して、ソフトウェアの機能の適否を検証する。特に、エラー原因となり得るテストデータ（例えば、長い文字列や大きな整数など）を入力して、エラー発生時のソフトウェアの挙動を調べる手法をファジングと呼ぶことがある。例えば、ファジングはソフトウェアの不正動作や脆弱性を発見するために用いられる。
【０００３】
ところで、ある装置を動作させる際に消費電力の大きさが問題になることがある。そこで、消費電力を低減することが考えられている。例えば、処理装置のスケジューリングされた動作に対し、消費される平均電力を最小にする動作電圧／周波数プロファイルを決定して、決定したプロファイルに従って処理装置を動作させる提案がある。また、例えば、生産ラインの日程計画立案方法において、製品を製造するための複数の処理を使用電力量や電気量料金を考慮して、何れかの時間帯に割り当てる提案がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−７３２３１号公報
【特許文献２】特開平１１−２３２３３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
バッテリ駆動の装置上で実行されるソフトウェアをファジングの対象とする場合がある。ファジングでは大量のテストデータをソフトウェアに入力し得る。このため、動作テスト中は装置が高負荷状態となり、消費電力が増大してバッテリ切れになり易い。そこで、バッテリを充電しながら動作テストを行うことが考えられる。
【０００６】
ところが、動作テストの内容によっては、動作テスト中のバッテリからの単位時間当たりの放電量がバッテリへの単位時間当たりの充電量よりも大きくなることがある。すると、結局バッテリ切れが生じて動作テストが中断されるおそれがある。この場合、当該動作テストを再開できるようになるまで、バッテリ残量の回復を待機する時間が生じる。このため、動作テストの所要時間が長くなり、非効率的となる。
【０００７】
一側面では、本発明は、バッテリで駆動する装置の動作テストを効率的に行う動作テスト方法、情報処理装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
一実施態様では、充電可能なバッテリで駆動する装置の動作テストを行う情報処理装置が実行する動作テスト方法が提供される。この動作テスト方法では、バッテリからの放電量がバッテリへの充電量よりも大きくなる第１の動作テストをバッテリの充電中に行っているときに、バッテリの蓄電量が第１の閾値以下になると、バッテリからの放電量がバッテリへの充電量以下になる第２の動作テストに切り替える。バッテリの蓄電量が第１の閾値よりも大きい第２の閾値以上になると、第２の動作テストから第１の動作テストに切り替える。
【０００９】
また、一実施態様では、充電可能なバッテリで駆動する装置の動作テストに用いられる情報処理装置が提供される。この情報処理装置は記憶手段と制御手段とを有する。記憶手段は、バッテリからの放電量がバッテリへの充電量よりも大きくなる第１の動作テストの情報と、バッテリからの放電量がバッテリへの充電量以下になる第２の動作テストの情報と、を記憶する。制御手段は、バッテリの充電中に第１の動作テストを行っているときバッテリの蓄電量が第１の閾値以下になると記憶手段を参照して第２の動作テストに切り替え、バッテリの蓄電量が第１の閾値よりも大きい第２の閾値以上になると記憶手段を参照して第２の動作テストから第１の動作テストに切り替える。
【００１０】
また、一実施態様では、コンピュータが実行するプログラムであって、充電可能なバッテリで駆動する装置の動作テストを行うコンピュータに用いられるプログラムが提供される。
【発明の効果】
【００１１】
一実施態様によれば、バッテリで駆動する装置の動作テストを効率的に行える。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】テスト制御装置のハードウェア例を示す図である。
【図４】携帯端末装置のハードウェア例を示す図である。
【図５】情報処理システムのソフトウェア例を示す図である。
【図６】テストパケットの例を示す図である。
【図７】パケットテーブルの例を示す図である。
【図８】テストテーブルの例を示す図である。
【図９】テスト結果テーブルの例を示す図である。
【図１０】事前計測の例を示すフローチャートである。
【図１１】動作テストの例を示すフローチャートである。
【図１２】動作テストの例を示す図である。
【図１３】動作テストの比較例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１は、充電可能なバッテリ２ａで駆動するテスト対象装置２の動作テストを行う。例えば、テスト対象装置２上では複数の機能が実現され得る。情報処理装置１は、複数の機能に対する複数の動作テストを行い得る。各動作テストは、例えばファジングの手法を用いて行える。なお、情報処理装置１およびテスト対象装置２は、ＣＰＵ（Central Processing Unit）などのプロセッサとＲＡＭ（Random Access Memory）などのメモリとを備えてもよく、メモリに記憶されたプログラムをプロセッサが実行するコンピュータであってもよい。また、バッテリ２ａは、テスト対象装置２に内蔵されてもよく、テスト対象装置２の外部に設けられてもよい。情報処理装置１は、記憶手段１ａおよび制御手段１ｂを有する。
【００１４】
記憶手段１ａは、第１の動作テストの情報と第２の動作テストの情報とを記憶する。第１の動作テストは、テスト対象装置２の第１の機能の動作テストである。第１の動作テストは、バッテリ２ａの充電中に行われると、バッテリ２ａからの充電量がバッテリ２ａへの充電量よりも大きくなる動作テストである。第２の動作テストは、テスト対象装置２の第２の機能の動作テストである。第２の動作テストは、バッテリ２ａの充電中に行われると、バッテリ２ａからの放電量がバッテリ２ａへの充電量以下となる動作テストである。
【００１５】
第１の動作テストの情報は、バッテリ２ａの充電中に第１の動作テストを行うとき、バッテリ２ａからの放電量がバッテリ２ａへの充電量よりも大きくなることを示す情報（区分：“充電量＜放電量”）を含む。第２の動作テストの情報は、バッテリ２ａの充電中に第２の動作テストを行うとき、バッテリ２ａからの放電量がバッテリ２ａへの充電量以下になることを示す情報（区分：“充電量≧放電量”）を含む。第１，第２の動作テストの情報は、ファジングのために予め生成したテストデータを含んでもよい。例えば、第１の動作テストのために、エラー原因となり得る複数のテストデータを予め生成しておいてもよい。第２の動作テストも同様である。
【００１６】
ここで、バッテリ２ａからの放電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ２ａから放電された電気量である。バッテリ２ａからの放電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ２ａから取り出された（テスト対象装置２が消費した）電力量でもよい。
【００１７】
バッテリ２ａへの充電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ２ａに充電された電気量である。バッテリ２ａへの充電量は、例えば単位時間当たり、または、テストデータの所定の送信回数当たりにバッテリ２ａに蓄えられた電力量でもよい。
【００１８】
動作テストごとの充電量と放電量との大小関係は、テスト対象装置２への当該動作テストの試行により予め得られる。例えば、バッテリ２ａの充電中に所定時間または所定回数だけテストデータをテスト対象装置２に送信して当該動作テストを途中まで行い、その前後でのバッテリ２ａの蓄電量の増減を観測する。蓄電量が減少すれば“充電量＜放電量”である。蓄電量が増加する、または、一定であれば“充電量≧放電量”である。
【００１９】
制御手段１ｂは、バッテリ２ａの充電中に第１の動作テストを行っているとき、バッテリ２ａの蓄電量が第１の閾値以下になると、第２の動作テストに切り替える。第２の動作テストは、バッテリ２ａからの放電量がバッテリ２ａへの充電量以下になる動作テストである。制御手段１ｂは、このような第２の動作テストを、記憶手段１ａを参照して特定できる。第２の動作テストを行っている間、バッテリ２ａの蓄電量は、充電量と放電量との差分だけ増加する。
【００２０】
なお、第２の動作テストが複数ある場合、制御手段１ｂは動作テストごとの優先度に基づき、切り替え後の第２の動作テストを選択してもよい。また、制御手段１ｂは、第１の動作テストの中断箇所を記憶手段１ａに登録してもよい。第２の動作テストが前回の切り替えで中断されている場合、中断された箇所から第２の動作テストを再開してもよい。例えば、制御手段１ｂは、第２の動作テスト用の未送信分のテストデータを記憶手段１ａから取得してテスト対象装置２に順次送信し、第２の動作テストを再開してもよい。
【００２１】
制御手段１ｂは、バッテリ２ａの蓄電量が第１の閾値よりも大きい第２の閾値以上になると第２の動作テストから第１の動作テストに切り替える。第１の動作テストは、バッテリ２ａからの放電量がバッテリ２ａへの充電量よりも大きくなる動作テストである。制御手段１ｂは、このような第１の動作テストを、記憶手段１ａを参照して特定できる。第１の動作テストを行っている間、バッテリ２ａの蓄電量は、放電量と充電量との差分だけ減少する。
【００２２】
なお、第１の動作テストが複数ある場合、制御手段１ｂは動作テストごとの優先度に基づき、切り替え後の第１の動作テストを選択してもよい。また、制御手段１ｂは、第２の動作テストの中断箇所を記憶手段１ａに登録してもよい。第１の動作テストが前回の切り替えで中断されている場合、中断された箇所から第１の動作テストを再開してもよい。例えば、制御手段１ｂは、第１の動作テスト用の未送信分のテストデータを記憶手段１ａから取得してテスト対象装置２に順次送信し、第１の動作テストを再開してもよい。
【００２３】
情報処理装置１によれば、制御手段１ｂにより、バッテリ２ａの充電中に第１の動作テストを行っているときバッテリ２ａの蓄電量が第１の閾値以下になると第２の動作テストに切り替えられる。制御手段１ｂにより、バッテリ２ａの蓄電量が第２の閾値以上になると第２の動作テストから第１の動作テストに切り替えられる。
【００２４】
これにより、バッテリ２ａで駆動する装置の動作テストを効率的に行える。具体的には、バッテリ２ａを充電しながら第１の動作テストを行っている場合に、バッテリ２ａの蓄電量が減少しても、バッテリ切れ（テスト対象装置２を駆動し得る電力を確保できなくなった状態）になる前に第２の動作テストに切り替える。すると、バッテリ２ａの蓄電量が増加する。そして、所定の蓄電量まで回復した後に、第２の動作テストから第１の動作テストへ切り替える。例えば、ファジングでは個々のテストデータによるテストはそれぞれ独立しており、テストデータの入力の順番にテスト結果が依存しないことが多い。そこで、テストデータの入力の順序を制御して、バッテリ２ａの蓄電量が減少する第１の動作テストの合間に、バッテリ２ａの蓄電量が増加する第２の動作テストを行うようにする。このようにして、バッテリ切れによる動作テストの中断を回避できる。
【００２５】
ここで、バッテリ切れになると、充電により蓄電量が回復するまでの待ち時間が生じてしまう。また、バッテリ切れになると、テスト対象装置２のオペレーティングシステム（ＯＳ：Operating System）が停止する。このため、バッテリ２ａの蓄電量の回復後にＯＳの起動の待ち時間が生じる可能性もある。すなわち、中断された動作テストを再開するまでに時間がかかる。その結果、動作テストの所要時間が長くなり非効率的となる。
【００２６】
一方、情報処理装置１によれば、バッテリ切れによる動作テストの中断を回避できるので、このような待ち時間が発生しない。よって、動作テストを効率的に行える。
更に、制御手段１ｂは、テストデータを送信するたびにバッテリ２ａの蓄電量を確認して、第１，第２の閾値との比較を行ってもよい。バッテリ２ａの蓄電量を詳細に把握することで、バッテリ２ａがバッテリ切れになる可能性を一層低減できるからである。
【００２７】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、テスト制御装置１００および携帯端末装置２００を含む。テスト制御装置１００と携帯端末装置２００とでは、複数の通信リンクが確立されている。第１の通信リンクは、Ｂｌｕｅｔｏｏｔｈ（登録商標）である。第２の通信リンクは、ＷＬＡＮ（Wireless Local Area Network）である。第３の通信リンクは、ＩｒＤＡ（Infrared Data Association）である。第４の通信リンクは、ＵＳＢ（Universal Serial Bus）である。Ｂｌｕｅｔｏｏｔｈ、ＷＬＡＮおよびＩｒＤＡは、無線の通信リンクである。ＵＳＢは、テスト制御装置１００と携帯端末装置２００とを物理的に接続したＵＳＢケーブル１１を介した有線の通信リンクである。なお、ＷＬＡＮの通信リンクはアドホックに限らず、アクセスポイント（図示を省略）を介してもよい。
【００２８】
テスト制御装置１００は、携帯端末装置２００の動作テストを行うコンピュータである。動作テストは、各通信リンクを介して受信したパケットを処理する所定のソフトウェア（例えば、ドライバソフトウェアや所定の機能を実現するアプリケーション）の動作検証である。テスト制御装置１００は各通信リンクを介した４種類の動作テストを行う。動作テストには、ファジングの手法を用いる。テスト制御装置１００は、各通信リンクを介して携帯端末装置２００にテストパケットを送信する。テスト制御装置１００は、テストパケットに対するソフトウェアの出力内容（テスト結果）を携帯端末装置２００から取得する。ユーザは、テスト結果を参照してソフトウェアのバグや脆弱性を発見する。
【００２９】
携帯端末装置２００は、充電可能なバッテリで駆動する。携帯端末装置２００は、テストパケットをソフトウェアに入力する。携帯端末装置２００は、テストパケットに対するソフトウェアの出力内容をテスト制御装置１００に送信する。
【００３０】
ここで、テスト制御装置１００と携帯端末装置２００とは、ＵＳＢケーブル１１で接続されている。ＵＳＢでは、ＵＳＢケーブル１１を介して駆動用の電力を周辺機器に供給可能である。携帯端末装置２００は、テスト制御装置１００から供給される電力により、自身のバッテリを充電する。
【００３１】
図３は、テスト制御装置のハードウェア例を示す図である。テスト制御装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ（Hard Disk Drive）１０３、ディスプレイ１０４、入力デバイス１０５、ディスクドライブ１０６、Ｂｌｕｅｔｏｏｔｈ通信部１０７、ＷＬＡＮ通信部１０７ａ、ＩｒＤＡ通信部１０７ｂおよびＵＳＢ通信部１０７ｃを有する。各部がバスに接続されている。
【００３２】
ＣＰＵ１０１は、テスト制御装置１００の情報処理を制御するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されているプログラムやデータの少なくとも一部を読み出し、ＲＡＭ１０２に展開してプログラムを実行する。なお、テスト制御装置１００は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
【００３３】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、テスト制御装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
【００３４】
ＨＤＤ１０３は、ＯＳプログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。ＨＤＤ１０３は、ＣＰＵ１０１の命令に従って、内蔵の磁気ディスクに対してデータの読み書きを行う。なお、テスト制御装置１００は、磁気ディスク以外の種類の不揮発性の記憶装置（例えば、ＳＳＤ（Solid State Drive）など）を備えてもよく、複数の記憶装置を備えていてもよい。
【００３５】
ディスプレイ１０４は、ＣＰＵ１０１による制御に従って、各種の画像を出力する。ディスプレイ１０４としては、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイおよび有機ＥＬ（Electro Luminescence）ディスプレイを用いることができる。
【００３６】
入力デバイス１０５は、ユーザの操作に応じた入力信号をＣＰＵ１０１に出力する。入力デバイス１０５としては、例えば、マウスやタッチパネルなどのポインティングデバイスおよびキーボードなどを用いることができる。
【００３７】
ディスクドライブ１０６は、記録媒体１２に記録されたプログラムやデータを読み取る駆動装置である。記録媒体１２には、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）およびＵＳＢメモリなどの半導体メモリなどを使用できる。ディスクドライブ１０６は、例えば、ＣＰＵ１０１の命令に従って、記録媒体１２から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３８】
Ｂｌｕｅｔｏｏｔｈ通信部１０７は、ＣＰＵ１０１の命令に従って、携帯端末装置２００とＢｌｕｅｔｏｏｔｈによる通信を行う通信インタフェースである。
ＷＬＡＮ通信部１０７ａは、ＣＰＵ１０１の命令に従って、携帯端末装置２００とＷＬＡＮによる通信を行う通信インタフェースである。
【００３９】
ＩｒＤＡ通信部１０７ｂは、ＣＰＵ１０１の命令に従って、携帯端末装置２００とＩｒＤＡによる通信を行う通信インタフェースである。
ＵＳＢ通信部１０７ｃは、ＣＰＵ１０１の命令に従って、携帯端末装置２００とＵＳＢによる通信を行う通信インタフェースである。ＵＳＢ通信部１０７ｃと携帯端末装置２００とはＵＳＢケーブル１１で接続されている。ＵＳＢ通信部１０７ｃは、ＵＳＢケーブル１１を介して携帯端末装置２００に電力を供給する。
【００４０】
図４は、携帯端末装置のハードウェア例を示す図である。携帯端末装置２００は、ＣＰＵ２０１、ＲＡＭ２０２、フラッシュメモリ２０３、ディスプレイ２０４、入力デバイス２０５、音声デバイス２０６、Ｂｌｕｅｔｏｏｔｈ通信部２０７、ＷＬＡＮ通信部２０７ａ、ＩｒＤＡ通信部２０７ｂ、ＵＳＢ通信部２０７ｃおよび電源部２０８を有する。各部がバスに接続されている。
【００４１】
ＣＰＵ２０１は、フラッシュメモリ２０３に記憶されているプログラムやデータの少なくとも一部を読み出し、ＲＡＭ２０２に展開してプログラムを実行する。携帯端末装置２００は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
【００４２】
ＲＡＭ２０２は、ＣＰＵ２０１が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、携帯端末装置２００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
【００４３】
フラッシュメモリ２０３は、ＯＳプログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。フラッシュメモリ２０３は、携帯端末装置２００に対して着脱可能なカード型メモリであってもよい。また、フラッシュメモリ２０３に代えて、他の種類の不揮発性の記憶媒体を用いてもよい。
【００４４】
ディスプレイ２０４は、ＣＰＵ２０１による制御に従って、各種の画像を出力する。ディスプレイ２０４としては、例えば、液晶ディスプレイや有機ＥＬディスプレイを用いることができる。
【００４５】
入力デバイス２０５は、ユーザの操作に応じた入力信号をＣＰＵ２０１に出力する。入力デバイス２０５としては、例えば、タッチパネルなどのポインティングデバイスおよびキーパッドなどを用いることができる。
【００４６】
音声デバイス２０６は、マイクロホンおよびスピーカである。マイクロホンは、音の物理振動を電気信号に変換して音声入力を受け付け、音声信号をＣＰＵ２０１に出力する。例えば、携帯端末装置２００のユーザが通話を行っているとき、ユーザの声やユーザ側の背景雑音がマイクロホンから入力される。スピーカは、ＣＰＵ２０１による制御に従って、音声信号を物理振動に変換して音を再生する。例えば、ユーザが通話を行っているとき、通話相手の声や通話相手側の背景雑音がスピーカから出力される。
【００４７】
Ｂｌｕｅｔｏｏｔｈ通信部２０７は、ＣＰＵ２０１の命令に従って、テスト制御装置１００とＢｌｕｅｔｏｏｔｈによる通信を行う通信インタフェースである。
ＷＬＡＮ通信部２０７ａは、ＣＰＵ２０１の命令に従って、テスト制御装置１００とＷＬＡＮによる通信を行う通信インタフェースである。
【００４８】
ＩｒＤＡ通信部２０７ｂは、ＣＰＵ２０１の命令に従って、テスト制御装置１００とＩｒＤＡによる通信を行う通信インタフェースである。
ＵＳＢ通信部２０７ｃは、ＣＰＵ２０１の命令に従って、テスト制御装置１００とＵＳＢによる通信を行う通信インタフェースである。ＵＳＢ２０７ｃは、ＵＳＢケーブル１１を介してテスト制御装置１００から受電した電力を電源部２０８へ供給する。
【００４９】
電源部２０８は、携帯端末装置２００を駆動させるための電力を各部へ供給する。電源部２０８は、バッテリ２０８ａを備える。バッテリ２０８ａは充電可能である。電源部２０８は、ＵＳＢ通信部２０７ｃから供給される電力をバッテリ２０８ａに蓄電する。電源部２０８は、バッテリ２０８ａを充電しながらでも、バッテリ２０８ａを放電させて各部へ駆動用の電力を供給できる。
【００５０】
図５は、情報処理システムのソフトウェア例を示す図である。図５に示すユニットの一部または全部は、テスト制御装置１００および携帯端末装置２００が実行するプログラムのモジュールであってもよい。また、図５に示すユニットの一部または全部は、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）などの電子回路であってもよい。テスト制御装置１００は、パケット情報記憶部１１０、テスト情報記憶部１２０、テスト結果記憶部１３０、バッテリ残量確認部１４０、テスト制御部１５０、パケット送信部１６０およびテスト結果確認部１７０を有する。
【００５１】
パケット情報記憶部１１０は、パケットテーブルを記憶する。パケットテーブルは、テストパケットを登録したテーブルである。ここで、１つの動作テストでは、多数のテストパケットを用い得る。そこで、動作テストごとに携帯端末装置２００に送信するテストパケットを予め生成してパケット情報記憶部１１０に格納しておく。第２の実施の形態では、動作テストはＢｌｕｅｔｏｏｔｈ用、ＷＬＡＮ用、ＩｒＤＡ用およびＵＳＢ用と４種類ある。よって、Ｂｌｕｅｔｏｏｔｈ用、ＷＬＡＮ用、ＩｒＤＡ用およびＵＳＢ用のテストパケットがパケット情報記憶部１１０に予め格納される。
【００５２】
テスト情報記憶部１２０は、テストテーブルを記憶する。テストテーブルは、動作テストに関する情報を登録したテーブルである。テストテーブルは、動作テストの優先度、バッテリ２０８ａの充電中に動作テストを行ったときに充電量が放電量を上回るか否かを示す情報を含む。また、テストテーブルは、１つの動作テストで用いるテストパケットの総数や、何れのテストパケットまでを送信済かを示す情報を含む。
【００５３】
テスト結果記憶部１３０は、テスト結果テーブルを記憶する。テスト結果テーブルは、各テストパケットに対する携帯端末装置２００の出力（テスト結果）を登録したテーブルである。
【００５４】
なお、パケット情報記憶部１１０、テスト情報記憶部１２０およびテスト結果記憶部１３０は、ＲＡＭ１０２上に確保されるデータ領域に対応する。
バッテリ残量確認部１４０は、携帯端末装置２００に対し、バッテリ２０８ａの蓄電量（以下、バッテリ残量ということがある）の確認を行う。バッテリ残量確認部１４０は、テスト制御部１５０またはテスト結果確認部１７０から所定の通知を受け付けるとバッテリ残量の確認要求を携帯端末装置２００に送信する。バッテリ残量確認部１４０は、携帯端末装置２００からバッテリ残量の情報を受信し、バッテリ２０８ａのバッテリ残量を確認する。
【００５５】
テスト制御部１５０は、テスト情報記憶部１２０に記憶されたテストテーブルおよびバッテリ残量確認部１４０によるバッテリ残量の確認結果に基づいて、動作テストを切り替える。具体的には、テスト制御部１５０は、バッテリ残量の減り具合および増え具合に応じて、何れの動作テストに係るテストパケットを次に送信するかを決定する。テスト制御部１５０は、パケット情報記憶部１１０に記憶されたパケットテーブルから、決定した動作テストに係るテストパケットを取得してパケット送信部１６０に出力する。
【００５６】
パケット送信部１６０は、テスト制御部１５０から取得したテストパケットを携帯端末装置２００に送信する。ここで、テストパケットは、Ｂｌｕｅｔｏｏｔｈ用、ＷＬＡＮ用、ＩｒＤＡ用およびＵＳＢ用のものがある。例えば、パケット送信部１６０は、Ｂｌｕｅｔｏｏｔｈ用のテストパケットをＢｌｕｅｔｏｏｔｈ通信部１０７を介して携帯端末装置２００に送信する。ＷＬＡＮ用のテストパケットをＷＬＡＮ通信部１０７ａを介して携帯端末装置２００に送信する。ＩｒＤＡ用のテストパケットをＩｒＤＡ通信部１０７ｂを介して携帯端末装置２００に送信する。ＵＳＢ用のテストパケットをＵＳＢ通信部２０７ｃを介して携帯端末装置２００に送信する。
【００５７】
テスト結果確認部１７０は、テスト結果の情報を携帯端末装置２００から受信する。テスト結果確認部１７０は、テスト結果記憶部１３０に記憶されたテスト結果テーブルにテスト結果の情報を登録する。テスト結果確認部１７０は、テスト結果の情報を登録すると、バッテリ残量の確認を促す通知をバッテリ残量確認部１４０に出力する。
【００５８】
携帯端末装置２００は、パケット処理部２１０、テスト対象監視部２２０およびバッテリ残量監視部２３０を有する。
パケット処理部２１０は、動作テストの対象となる機能である。パケット処理部２１０は、テスト制御装置１００から受信したテストパケットに応じた処理を行う。ここで、パケット処理部２１０は、異なる機能をもった複数のユニットでもよい。例えば、ドライバソフトウェアの動作テストを行う場合、Ｂｌｕｅｔｏｏｔｈ用のドライバソフトウェア、ＷＬＡＮ用のドライバソフトウェア、ＩｒＤＡ用のドライバソフトウェア、ＵＳＢ用のドライバソフトウェアのように複数のユニットを含み得る。この場合、例えば、Ｂｌｕｅｔｏｏｔｈ用のテストパケットにより、Ｂｌｕｅｔｏｏｔｈ用のドライバソフトウェアの動作テストを行える（他の通信リンクも同様）。また、各通信リンクを介したデータ通信が可能な１つのアプリケーションであれば、当該１つのアプリケーションを動作テストの対象とすることもできる。例えば、Ｂｌｕｅｔｏｏｔｈ用のテストパケットにより、Ｂｌｕｅｔｏｏｔｈによる通信を行った際のアプリケーションの動作テストを行える。パケット処理部２１０は、テストパケットの処理結果に応じて、携帯端末装置２００が備える所定の記憶部（例えば、ＲＡＭ２０２上に確保されたデータ領域）にログを出力することもある。
【００５９】
テスト対象監視部２２０は、パケット処理部２１０がテストパケットの入力により異常な挙動をしていないかを監視する。例えば、テスト対象監視部２２０は、パケット処理部２１０が出力するログによって挙動の監視を行う。また、例えば、テスト対象監視部２２０は、パケット処理部２１０によるＣＰＵ２０１やＲＡＭ２０２などのリソースの利用状況によって挙動の監視を行う。テスト対象監視部２２０は、パケット処理部２１０の挙動や現在の状態を含むテスト結果の情報をテスト制御装置１００に送信する。なお、テスト対象監視部２２０は、テスト結果の情報を、テストパケットを受信した通信リンクと同一の通信リンクを介して送信してもよいし、異なる通信リンクを介して送信してもよい。例えば、テストパケットによっては、対象の通信リンクがダウンすることもある。その場合には、他の通信リンクを用いてテスト結果の情報を送信する。
【００６０】
バッテリ残量監視部２３０は、テスト制御装置１００からバッテリ残量の確認要求を受信すると、バッテリ２０８ａのバッテリ残量を電源部２０８から取得し、テスト制御装置１００に応答する。バッテリ残量監視部２３０とテスト制御装置１００（バッテリ残量確認部１４０）との間の通信は、各通信リンクの何れかを用いて行える。
【００６１】
電源部２０８によるバッテリ残量の検出方法は、種々の方法が考えられる。例えば、電源部２０８は、バッテリ２０８ａの出力電圧とバッテリ２０８ａのバッテリ残量（割合）とのテーブルを予め保持しておく。そうすれば、バッテリ２０８ａの現在の出力電圧を測ることで、テーブルに基づきバッテリ残量を検出し得る。また、例えば、電源部２０８は、充電した電流値および放電した電流値を積算しておき、それらの差と満充電時の容量とに基づいてバッテリ残量を検出し得る。電源部２０８は、検出したバッテリ残量をバッテリ残量監視部２３０に提供する。
【００６２】
バッテリ残量監視部２３０が取得するバッテリ残量は、バッテリ２０８ａの容量の残りの割合（例えば、５０％など）でもよいし、残容量値（例えば、Ａｈ（Ampere hour）やｍＡｈ（milli Ah）などの単位で表される量）などでもよい。
【００６３】
なお、テスト情報記憶部１２０は、第１の実施の形態の記憶手段１ａの一例である。また、バッテリ残量確認部１４０およびテスト制御部１５０は、制御手段１ｂの一例である。
【００６４】
図６は、テストパケットの例を示す図である。パケット情報記憶部１１０には、動作テストに用いるテストパケットが予め格納される。図６では、テストパケットの一例を示している。図６では、ＢｌｕｅｔｏｏｔｈのＬ２ＣＡＰ（Logical Link Control and Adaptive Protocol）で用いられるＢ（Basic information）フレームと呼ばれるフレーム構造をもつテストパケットを例示している。ここで、Ｌ２ＣＡＰは、Ｂｌｕｅｔｏｏｔｈのアダプション・レイヤーのプロトコルであり、装置間のデータ伝送用の論理チャネルを制御する。また、Ｂフレームは接続指向のデータ通信（Connection - Oriented Channel In Basic L2CAP Mode）を行うために利用される。Ｂフレームは、より上位のレイヤーに属するプロトコルによるデータ通信に用いられる。以下では、このＢｌｕｅｔｏｏｔｈ用のテストパケットをＣＯ（Connection - Oriented）パケットと呼ぶことがある。
【００６５】
ＣＯパケット３００は、ｌｅｎｇｔｈ、ＣＩＤ（Channel IDentifier）およびｐａｙｌｏａｄのフィールドを含む。ｌｅｎｇｔｈおよびＣＩＤはヘッダに相当する。
ｌｅｎｇｔｈは１６ビットである。ｌｅｎｇｔｈには、ｐａｙｌｏａｄのデータ長（符号なしの整数で表されたオクテット数）が設定される。
【００６６】
ＣＩＤは１６ビットである。ＣＩＤには、論理チャネルのエンドポイント（Ｌ２ＣＡＰを利用する上位プロトコル）ごとの識別子（符号なしの整数）が設定される。なお、ＣＩＤの設定可能な値の範囲のうちの一部は、制御用の識別子として予約されている。
【００６７】
ｐａｙｌｏａｄは任意長（最大６５５３５オクテット）である。ｐａｙｌｏａｄには、伝送するデータが設定される。
ＣＯパケットには、動作テストにおいて脆弱性などの検出に有効なデータを設定する。
【００６８】
例えば、ｌｅｎｇｔｈやＣＩＤには、８ビットの整数や１６ビットの整数の境界値付近（例えば、境界値±１）の値を設定する。整数オーバーフローなどの脆弱性の検出に有効だからである。より具体的には、“０”、“１”、“２５４（＝２５５−１）”、“２５５”、“２５６（＝２５６＋１）”、“６５５３４（＝６５５３５−１）”、“６５５３５”をｌｅｎｇｔｈやＣＩＤに設定する。
【００６９】
更に、例えば、ｐａｙｌｏａｄには、８ビットや１６ビットの整数の境界値付近（例えば、境界値±１）の長さの、所定文字列（例えば、半角の“ｘ”を当該長さで示される個数だけ連ねた文字列）を設定する。バッファオーバーフローなどの脆弱性の検出に有効だからである。より具体的には、半角の“ｘ”を、０個、１個、２５４個、２５５個、２５６個、６５５３４個、６５５３５個、連ねた文字列をｐａｙｌｏａｄに設定する。
【００７０】
例えば、パケット情報記憶部１１０では、各テストパケットにテストパケット番号を付して管理する。例えば、ＣＯパケットのテストパケット番号（Ｎｏ．）“１”は、ｌｅｎｇｔｈが“０”、ＣＩＤが“０”、ｐａｙｌｏａｄが無しである。また、例えば、ＣＯパケットのテストパケット番号“１４６”は、ｌｅｎｇｔｈ“２５４”、ＣＩＤ“６５５３５”、ｐａｙｌｏａｄは“ｘｘｘ・・・ｘｘｘ”（６５５３４個の半角の“ｘ”）である。
【００７１】
このように、各通信リンクに応じたテストパケットの複数のパターンを予め網羅的に生成してパケット情報記憶部１１０のパケットテーブルに登録しておく。上記の例でいえば、ｌｅｎｇｔｈ、ＣＩＤでそれぞれ７通り、ｐａｙｌｏａｄで７通りの情報を設定し得る。よって、７の３乗＝３４３個のＣＯパケットがＢｌｕｅｔｏｏｔｈ用のテストパケットとしてパケット情報記憶部１１０に格納される。ただし、テストパケットの個数は動作テストの内容に応じて変わり得る。例えば、「境界値付近」の範囲を境界値±２（または、３以上）までとしてもよい。ｐａｙｌｏａｄに、所定のメッセージを示す文字列などを設定してもよい。
【００７２】
図７は、パケットテーブルの例を示す図である。パケットテーブル１１１は、パケット情報記憶部１１０に格納される。パケットテーブル１１１は、テスト番号、テスト種類、テストパケット番号およびテストパケットの内容の項目を含む。
【００７３】
テスト番号の項目には、テスト番号が登録される。テスト種類の項目には、動作テストの種類を示す情報が登録される。テストパケット番号には、テストパケットに付されたテストパケット番号が登録される。テストパケットの内容には、テストパケットに設定する情報が登録される。
【００７４】
例えば、テスト番号“Ａ”は、テスト種類“Ｂｌｕｅｔｏｏｔｈ  ＣＯパケット”に関する動作テストである。当該動作テストには、テストパケット番号“１”〜“３４３”のＣＯパケットが予め用意されている。例えば、テストパケット番号“１”は、“ｌｅｎｇｔｈ：０”（ｌｅｎｇｔｈの値が“０”）、“ＣＩＤ：０”（ＣＩＤの値が“０”）、“ｐａｙｌｏａｄ：“””（ｐａｙｌｏａｄが無し）である。
【００７５】
ここで、テスト番号“Ｂ”は、ＷＬＡＮの動作テストである。テスト番号“Ｃ”は、ＩｒＤＡの動作テストである。テスト番号“Ｄ”は、ＵＳＢの動作テストである。
各テストパケットは、携帯端末装置２００に独立したコマンドを入力するためのテストデータであるということができる。すなわち、各動作テストは複数の独立したコマンドを携帯端末装置２００に入力するものである。このため、テスト結果はテストパケットの入力順序によらない（各テスト結果は前後のテストパケットに依存しない）。したがって、携帯端末装置２００へのテストパケットの入力順序は任意に決定できる。
【００７６】
図８は、テストテーブルの例を示す図である。テストテーブル１２１は、テスト情報記憶部１２０に格納される。テストテーブル１２１は、テスト番号、優先度、充電量≧放電量、テストパケット総数および次テストパケット番号の項目を含む。
【００７７】
テスト番号の項目には、テスト番号が登録される。優先度の項目には、動作テストの優先度の値が登録される。充電量≧放電量の項目には、バッテリ２０８ａの充電中に当該動作テストを行う場合、充電量が放電量以上となるか否かを示すフラグが登録される。テストパケット総数の項目には、当該動作テストで送信すべきテストパケットの総数が登録される。次テストパケット番号の項目には、当該動作テストで次に送信すべきテストパケットのテストパケット番号が登録される。次テストパケット番号の項目の初期値は、“１”である。
【００７８】
例えば、テスト番号“Ａ”の動作テストは、優先度が“１”であり、充電量≧放電量が真を示す“ｔｒｕｅ”であるので、当該動作テストは、バッテリ２０８ａの充電中に行われると充電量が放電量以上となる。すなわち、テスト番号“Ａ”の動作テストは、充電中に行われた場合に、バッテリ２０８ａのバッテリ残量が増加する、または、変わらない。また、当該動作テストのテストパケット総数は“３４３”であり、次に送信すべきテストパケット番号は“２４４”である。
【００７９】
また、例えば、テスト番号“Ｂ”の動作テストは、優先度が“２”であり、充電量≧放電量が偽を示す“ｆａｌｓｅ”であるので、当該動作テストは、バッテリ２０８ａの充電中に行われると充電量が放電量よりも小さくなる。すなわち、テスト番号“Ｂ”の動作テストは、充電中に行われた場合に、バッテリ２０８ａのバッテリ残量が減少する。また、当該動作テストのテストパケット総数は“３０００”であり、次に送信すべきテストパケット番号は“２４２４”である。
【００８０】
図９は、テスト結果テーブルの例を示す図である。テスト結果テーブル１３１は、テスト結果記憶部１３０に格納される。テスト結果テーブル１３１は、テスト番号、テストパケット番号およびテスト結果の項目を含む。
【００８１】
テスト番号の項目には、テスト番号が登録される。テストパケット番号の項目には、テストパケット番号が登録される。テスト結果の項目には、テスト結果の情報が登録される。例えば、テスト番号“Ａ”のテストパケット番号“１”のＣＯパケットに対するテスト結果は“問題なし”である。また、例えば、テスト番号“Ａ”のテスト番号“２”のＣＯパケットに対するテスト結果は“携帯端末装置停止”である。
【００８２】
次に、テスト制御装置１００の処理手順を説明する。何れの動作テストも、テスト制御装置１００と携帯端末装置２００とをＵＳＢケーブル１１で接続した状態で行われる。したがって、動作テスト中はバッテリ２０８ａへの充電と、バッテリ２０８ａからの放電が行われる。テスト制御装置１００は、同じ状態で各動作テストを事前に行い、各動作テスト時の充電量と放電量との大小比較を行っておく（事前計測）。テスト制御装置１００は、事前計測により、テストテーブル１２１の充電量≧放電量の項目の設定を行う。
【００８３】
図１０は、事前計測の例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
（ステップＳ１１）テスト制御部１５０は、事前計測を行っていない（未計測の）動作テストがあるか否かを判定する。未計測の動作テストがある場合、未計測の動作テストを１つ選択して処理をステップＳ１２に進める。未計測の動作テストがない場合、処理を終了する。テスト制御部１５０は、テスト情報記憶部１２０に記憶されたテストテーブル１２１の充電量≧放電量の項目を参照して、未計測の動作テストがあるか否かを判定できる。具体的には、充電量≧放電量の項目が未設定の動作テストがあれば、未計測の動作テストがあると判断する。充電量≧放電量の項目が未設定の動作テストがなければ、未計測の動作テストがないと判断する。未設定とは“ｔｒｕｅ”および“ｆａｌｓｅ”の何れもが設定されていないことを示す。
【００８４】
（ステップＳ１２）テスト制御部１５０は、バッテリ残量の確認をバッテリ残量確認部１４０に依頼する。バッテリ残量確認部１４０は、バッテリ残量の確認要求を携帯端末装置２００に送信し、携帯端末装置２００から現在のバッテリ残量の情報を得る。
【００８５】
（ステップＳ１３）テスト制御部１５０は、ステップＳ１１で選択した動作テストに係るテストパケットをパケット情報記憶部１１０に記憶されたパケットテーブル１１１から１つ取得して、パケット送信部１６０に出力する。テスト制御部１５０は、取得すべきテストパケットのテストパケット番号を、テスト情報記憶部１２０に記憶されたテストテーブル１２１の次テストパケット番号の項目から特定できる。テスト制御部１５０は、テストパケットをパケット送信部１６０に出力すると、次テストパケット番号の項目の値に１を加算する。パケット送信部１６０は、テスト制御部１５０から取得したテストパケットを携帯端末装置２００に送信する。テスト結果確認部１７０は、携帯端末装置２００からテスト結果の情報を受信すると、テスト結果記憶部１３０に記憶されたテスト結果テーブル１３１にテスト結果の情報を登録する。テスト結果確認部１７０は、テスト制御部１５０に１回のテスト（１つのテストパケットの送信から、当該１つのテストパケットに対するテスト結果の情報の受信まで）が完了したことを通知する。その後、テスト制御部１５０は、所定回数（例えば、１００回）に達するまで、テストを完了させる。
【００８６】
（ステップＳ１４）バッテリ残量確認部１４０は、バッテリ残量の確認要求を携帯端末装置２００に送信し、携帯端末装置２００から現在のバッテリ残量の情報を得る。バッテリ残量確認部１４０は、ステップＳ１２で取得したバッテリ残量よりも減少しているか否かを判定する。減少している場合、減少した旨をテスト制御部１５０に通知して、処理をステップＳ１５に進める。減少していない場合、減少していない旨をテスト制御部１５０に通知して、処理をステップＳ１６に進める。
【００８７】
（ステップＳ１５）テスト制御部１５０は、ステップＳ１１で選択した動作テストについて、テストテーブル１２１の充電量≧放電量の項目に“ｆａｌｓｅ”を設定する。そして、処理をステップＳ１１に進める。
【００８８】
（ステップＳ１６）テスト制御部１５０は、ステップＳ１１で選択した動作テストについて、テストテーブル１２１の充電量≧放電量の項目に“ｔｒｕｅ”を設定する。そして、処理をステップＳ１１に進める。
【００８９】
このようにして、テスト制御装置１００は、事前計測を行う。
なお、ステップＳ１３では、所定回数のテスト（すなわち、所定回数のテストパケットの送信）を行うものとしたが、所定時間（例えば、５分間）でもよい。
【００９０】
テスト制御部１５０は、テストテーブル１２１の設定が完了すると、バッテリ２０８ａの充電量と放電量とを考慮した動作テストを開始する。
図１１は、動作テストの例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００９１】
（ステップＳ２１）テスト制御部１５０は、テスト情報記憶部１２０に記憶されたテストテーブル１２１に基づいて、未完了の動作テストがあるか否かを判定する。未完了の動作テストがある場合、処理をステップＳ２２に進める。全動作テストを完了済の場合、処理を終了する。テスト制御部１５０は、テストテーブル１２１の次テストパケットの番号の項目を参照して、この判定を行える。何れかの動作テストで、次テストパケット番号の値がテストパケット総数以下であれば、携帯端末装置２００に未送信のテストパケット（残りテストパケット）があり、未完了の動作テストありと判断する。全動作テストにつき、次テストパケット番号の値がテストパケット総数よりも大きければ、残りテストパケットがなく、全動作テストを完了済と判断する。
【００９２】
（ステップＳ２２）テスト制御部１５０は、テストテーブル１２１に基づいて、充電中に行われると充電量＜放電量となる動作テストの残りテストパケットがあるか否かを判定する。ある場合、処理をステップＳ２３に進める。ない場合、処理をステップＳ２６に進める。ここで、充電量＜放電量となる動作テストとは、テストテーブル１２１の充電量≧放電量の項目が“ｆａｌｓｅ”の動作テストである。
【００９３】
（ステップＳ２３）テスト制御部１５０は、残りテストパケットがある動作テスト（充電量＜放電量となるものに限る）のうち、優先度が最も高いもの（テストテーブル１２１の優先度の設定値が最小のもの）を選択する。テスト制御部１５０は、当該動作テストにつき、テストテーブル１２１から次テストパケット番号を取得する。テスト制御部１５０は、パケット情報記憶部１１０に記憶されたパケットテーブル１１１から当該次テストパケット番号と等しいテストパケット番号のテストパケットを取得してパケット送信部１６０に出力する。テスト制御部１５０は、テストテーブル１２１の当該次テストパケット番号の設定値に１を加算する。パケット送信部１６０は、テスト制御部１５０から取得したテストパケットを携帯端末装置２００に送信する。
【００９４】
（ステップＳ２４）テスト結果確認部１７０は、携帯端末装置２００からテスト結果の情報を受信し、テスト結果記憶部１３０に記憶されたテスト結果テーブル１３１にテスト結果を登録する。テスト結果確認部１７０は、バッテリ残量の確認を行う旨をバッテリ残量確認部１４０に通知する。
【００９５】
（ステップＳ２５）バッテリ残量確認部１４０は、バッテリ残量の確認要求を携帯端末装置２００に送信する。バッテリ残量確認部１４０は、バッテリ残量の情報を携帯端末装置２００から受信する。バッテリ残量確認部１４０は、バッテリ残量が下限閾値以下であるか否かを判定する。下限閾値以下である場合、処理をステップＳ２６に進める。下限閾値よりも大きい場合、処理をステップＳ２１に進める。バッテリ残量の下限閾値は、動作テストの内容に応じてバッテリ残量確認部１４０に予め指定される。バッテリ残量を百分率で表す場合、下限閾値を例えば１０％とする。
【００９６】
（ステップＳ２６）テスト制御部１５０は、テストテーブル１２１に基づいて、充電中に行われると充電量≧放電量となる動作テストの残りテストパケットがあるか否かを判定する。ある場合、処理をステップＳ２７に進める。ない場合、処理をステップＳ２１に進める。ここで、充電量≧放電量となる動作テストとは、テストテーブル１２１の充電量≧放電量の項目が“ｔｒｕｅ”の動作テストである。
【００９７】
（ステップＳ２７）テスト制御部１５０は、残りテストパケットがある動作テスト（充電量≧放電量となるものに限る）のうち、優先度が最も高いものを選択する。テスト制御部１５０は、当該動作テストにつき、テストテーブル１２１から次テストパケット番号を取得する。テスト制御部１５０は、パケット情報記憶部１１０に記憶されたパケットテーブル１１１から当該次テストパケット番号と等しいテストパケット番号のテストパケットを取得してパケット送信部１６０に出力する。テスト制御部１５０は、テストテーブル１２１の当該次テストパケット番号の設定値に１を加算する。パケット送信部１６０は、テスト制御部１５０から取得したテストパケットを携帯端末装置２００に送信する。
【００９８】
（ステップＳ２８）テスト結果確認部１７０は、携帯端末装置２００からテスト結果の情報を受信し、テスト結果記憶部１３０に記憶されたテスト結果テーブル１３１にテスト結果を登録する。テスト結果確認部１７０は、バッテリ残量の確認を行う旨をバッテリ残量確認部１４０に通知する。
【００９９】
（ステップＳ２９）バッテリ残量確認部１４０は、バッテリ残量の確認要求を携帯端末装置２００に送信する。バッテリ残量確認部１４０は、バッテリ残量の情報を携帯端末装置２００から受信する。バッテリ残量確認部１４０は、バッテリ残量が回復閾値以上であるか否かを判定する。回復閾値以上である場合、処理をステップＳ２１に進める。回復閾値よりも小さい場合、処理をステップＳ２６に進める。バッテリ残量の回復閾値は、下限閾値よりも大きい値である。バッテリ残量の回復閾値は、動作テストの内容に応じてバッテリ残量確認部１４０に予め指定される。バッテリ残量を百分率で表す場合、回復閾値を例えば３０％とする。
【０１００】
このようにして、テスト制御装置１００は、バッテリ２０８ａのバッテリ残量に応じた動作テストを行う。テスト制御装置１００は、テストパケットを送信するごとにバッテリ残量の確認を行うことで、バッテリ残量を詳細に取得できる。このため、バッテリ残量の減少を見逃さずに済む。例えば、バッテリ残量が大きく減少したことを見逃して、バッテリ切れを引き起こしてしまうような事態の発生を抑制できる。
【０１０１】
なお、下限閾値や回復閾値は容量値など他の値で指定されてもよい。
また、携帯端末装置２００では、テストパケットにより誘発された異常により、通信リンクの機能（例えば、Ｂｌｕｅｔｏｏｔｈ通信部２０７やパケット処理部２１０など）が停止したり、携帯端末装置２００自体が停止したりすることがある（図１０のステップＳ１３や図１１のステップＳ２３，Ｓ２７）。その場合、テスト制御装置１００（テスト制御部１５０）は、停止箇所（例えば、携帯端末装置２００、Ｂｌｕｅｔｏｏｔｈ通信部２０７およびパケット処理部２１０など）を再起動させて動作テストを継続する。何れの機能が停止したかはテスト結果の情報に基づいて判断できる。
【０１０２】
また、図１０のステップＳ１３および図１１のステップＳ２３，Ｓ２７では、パケットテーブル１１１からテストパケットを取得するものとしたが、テスト制御部１５０は送信する直前にテストパケットを生成してパケット送信部１６０に出力してもよい。その場合、テスト制御部１５０は、それまでに送信済のテストパケットの設定内容の履歴を保持しておく。そして、テスト制御部１５０は、次に送信するテストパケットが過去に送信済のテストパケットの内容と重複しないようにする。
【０１０３】
更に、図１０、図１１の処理手順は、全動作テストで利用する通信リンクを全て確立した状態で行われる。ただし、無線の通信リンクは、動作テストの都度、オン／オフを切り替えてもよい。例えば、動作テストで使用する前にオンにし、動作テストで使用しない場合にはオフにする。ただし、図１０で示した事前測定と図１１で示した本番の動作テストとは、同じ要領で実行することが好ましい。図１１のステップＳ２２，Ｓ２６で残りテストパケットを選択する際に、より適正な判断を行えるからである。
【０１０４】
図１２は、動作テストの例を示す図である。図１２では複数のタイミングにおけるバッテリ残量の変遷（折れ線グラフ）と実行した動作テストの変遷（棒グラフは当該動作テスト時のバッテリ２０８ａの放電量を示す）を例示している。
【０１０５】
テスト制御装置１００は、バッテリ残量が下限閾値よりも大きい状態で本番の動作テストを開始する（ステップＳＴ１）。この場合、充電量＜放電量となる動作テスト“Ｂ，Ｄ”のうち、優先度の最も高い動作テスト“Ｂ”が行われる。バッテリ残量は減少していく（折れ線グラフＣ１）。動作テスト“Ｂ”時の放電量（棒グラフＤ１１）が、バッテリ２０８ａの充電量を上回るからである。
【０１０６】
テスト制御装置１００は、バッテリ残量が下限閾値以下になると、充電量＜放電量となる動作テスト“Ｂ”から、充電量≧放電量となる動作テストに切り替える（ステップＳＴ２）。このとき、充電量≧放電量となる動作テスト“Ａ，Ｃ”のうち、優先度の最も高い動作テスト“Ａ”を選択する。バッテリ残量は増加していく（折れ線グラフＣ２）。棒グラフＤ２１は動作テスト“Ｂ”時の放電量を、棒グラフＤ２２は動作テスト“Ａ”時の放電量を示す。
【０１０７】
テスト制御装置１００は、バッテリ残量が回復閾値以上になると、充電量≧放電量となる動作テスト“Ａ”から、充電量＜放電量となる動作テストに切り替える（ステップＳＴ３）。このとき、充電量＜放電量となる動作テスト“Ｂ，Ｃ”について、動作テスト“Ｂ”が未完了であれば、優先度の高い動作テスト“Ｂ”を選択する。動作テスト“Ｂ”が完了していれば、動作テスト“Ｃ”を選択する。その後、テスト制御装置１００は、バッテリ残量が下限閾値以下となると、充電量＜放電量となる動作テストから、充電量≧放電量となる動作テストに切り替える。このとき、充電量≧放電量となる動作テスト“Ａ，Ｃ”について、動作テスト“Ａ”が未完了であれば、優先度の高い動作テスト“Ａ”を選択する。動作テスト“Ａ”が完了していれば、動作テスト“Ｃ”を選択する。以降、全動作テストを完了するまで、この処理を繰り返す。バッテリ残量は、増加／減少を繰り返す（折れ線グラフＣ３）。棒グラフＤ３１は動作テスト“Ｂ”時の放電量を、棒グラフＤ３２は動作テスト“Ａ”時の放電量を、棒グラフＤ３３は動作テスト“Ｄ”時の放電量を、棒グラフＤ３４は動作テスト“Ｃ”時の放電量を示す。
【０１０８】
次に、バッテリ残量に応じた動作テストの切り替えを行わない場合を例示する。
図１３は、動作テストの比較例を示す図である。動作テストの優先度や充電量と放電量との大小関係は、テストテーブル１２１の設定と同一であるとする。図１３では、この場合に、テスト制御装置１００が充電量と放電量との大小を考慮せずに携帯端末装置２００の動作テストを行ったときのバッテリ残量の変遷と実行した動作テストの変遷を例示している。折れ線グラフＣ４はバッテリ残量の変遷である。棒グラフＤ４１は動作テスト“Ａ”時の（バッテリ２０８ａの）放電量を、棒グラフＤ４２は動作テスト“Ｂ”時の放電量を、棒グラフＤ４３は動作テスト“Ｃ”時の放電量を、棒グラフＤ４４は動作テスト“Ｄ”時の放電量を示す。
【０１０９】
まず、最も優先度の高い動作テスト“Ａ”が実行される。動作テスト“Ａ”は、充電量≧放電量となる動作テストである。したがって、動作テスト“Ａ”は、バッテリ残量が満充電の状態で行われると、バッテリ残量が減少せずに完了する。次に、優先度が２番目に高い動作テスト“Ｂ”が実行される。動作テスト“Ｂ”は、充電量＜放電量となる動作テストである。したがって、動作テスト“Ｂ”を行うと、バッテリ残量が減少して、やがてバッテリ切れとなる。すると、バッテリ残量が回復するまでに待ち時間ＷＴ１が生ずる。この待ち時間には、携帯端末装置２００のＯＳやアプリケーションの起動時間が含まれ得る。以降、動作テスト“Ｂ，Ｃ，Ｄ”を行っていくと、動作テスト“Ｂ，Ｄ”で断続的にバッテリ切れが生じ、そのたびに待ち時間ＷＴ２，ＷＴ３，・・・が発生する。すると、待ち時間ＷＴ１，ＷＴ２，ＷＴ３，・・・を積算した分だけ動作テストに時間がかかり非効率的となる。
【０１１０】
そこで、図１２までで説明したように、テスト制御装置１００は、充電量＜放電量となる動作テストの合間に、バッテリ残量に応じて充電量≧放電量となる動作テストを行う。具体的には、充電量＜放電量となる動作テスト中に、バッテリ残量が下限閾値以下となったとき、充電量≧放電量となる動作テストに切り替える。また、充電量≧放電量となる動作テスト中に、バッテリ残量が回復閾値以上となったとき、充電量＜放電量となる動作テストに切り替える。これにより、バッテリ残量が低下した場合にバッテリ残量を回復でき、バッテリ切れを回避できる。その結果、待ち時間ＷＴ１，ＷＴ２，ＷＴ３，・・・の発生を抑制でき、動作テストを効率的に行えるようになる。
【０１１１】
特に、ファジングでは、１つの動作テストで大量のテストパケット（例えば、数百万個の単位）を用い得る。このため、携帯端末装置２００が高負荷状態となる時間も長くなる。したがって、断続的なバッテリ切れの回数も増大し易く、待ち時間の積算により動作テストの時間が過大となり易い。これに対し、テスト制御装置１００は、当該待ち時間の発生を抑制できる。よって、ファジングによる動作テストに用いる場合に特に有効である。
【０１１２】
また、テストパケットを送信してテスト結果の情報を取得するたびにバッテリ残量を行うことで、バッテリ残量を詳細に把握できる。その結果、バッテリ切れになる可能性を一層低減できる。
【０１１３】
また、動作テストごとの優先度に基づいて、切り替え後の動作テストを選択することで、優先度の高い（あるいは、早く終わらせたい）動作テストを早い段階で完了させることができる。また、動作テストの切り替えにより、前回中断した動作テストを、中断した箇所から再開できるので、当該動作テストを効率的に完了させることができる。更に、本番の動作テストを行う環境と同じ環境で、充電量と放電量との大小関係を事前測定する。このため、本番の動作テスト時に、充電量と放電量との大小関係による動作テストの選択を適正に行える。
【０１１４】
更に、第２の実施の形態では、複数の通信リンクを介した動作テストを例示したが、このような動作テストに限らずテスト制御装置１００の機能を利用できる。例えば、単一の通信リンクを用いて、携帯端末装置２００上の複数のアプリケーションの動作テストを行う際に、テスト制御装置１００の機能を利用してもよい。
【０１１５】
なお、テスト制御装置１００はコンピュータに所定のプログラムを実行させることで実現できる。当該プログラムは、コンピュータ読み取り可能な可搬型の記録媒体１２に記録しておくことができる。当該プログラムを流通させるには、例えば、そのプログラムが記録された記録媒体１２を配布する。または、そのプログラムをサーバコンピュータに格納しておき、ネットワーク経由でテスト制御装置１００に転送する。テスト制御装置１００は、例えば、記録媒体１２に記録されたプログラムまたはネットワークから取得したプログラムを、自装置の不揮発性の記憶媒体（例えば、ＨＤＤ１０３）に格納する。そして、当該不揮発性の記憶媒体からプログラムを読み取り実行する。ただし、テスト制御装置１００は、取得したプログラムを、不揮発性の記憶媒体に格納せずに逐次、ＲＡＭ１０２に展開して実行することも可能である。
【符号の説明】
【０１１６】
１  情報処理装置
１ａ  記憶手段
１ｂ  制御手段
２  テスト対象装置
２ａ  バッテリ
【図１】
0005768697.tif 000002
【図２】
0005768697.tif 000003
【図３】
0005768697.tif 000004
【図４】
0005768697.tif 000005
【図５】
0005768697.tif 000006
【図６】
0005768697.tif 000007
【図７】
0005768697.tif 000008
【図８】
0005768697.tif 000009
【図９】
0005768697.tif 000010
【図１０】
0005768697.tif 000011
【図１１】
0005768697.tif 000012
【図１２】
0005768697.tif 000013
【図１３】
0005768697.tif 000014