(57)【要約】【課題】  プログラム処理に与える負荷を低減し、より正確なテスト結果が得られることを課題とする。【解決手段】  第１段階の処理として、テスト対象機器で第１の処理及び第２の処理を実行させて第１の処理及び第２の処理の全体の実行時間を測定し、参照時間と比較して長い場合には、第２段階の処理として、テスト対象機器で第１の処理及び第２の処理を再度実行させて第１の処理の実行時間及び第２の処理の実行時間をそれぞれ個別に測定し、第１段階の処理の実行時間が、参照時間と比較して短い場合には、第２段階の処理を実行することなく、テスト対象機器におけるテスト処理を終了する。【選択図】  図２
2014142844.tif 000002
【特許請求の範囲】
【請求項１】
テスト対象機器と通信する通信部と、
前記テスト対象機器における処理の実行時間を参照時間として予め記憶する記憶部と、
前記テスト対象機器における処理を前記通信部を介して制御する制御部と、を備えるテスト実行機器であって、
前記制御部は、
第１段階の処理として、前記テスト対象機器で第１の処理及び第２の処理を実行させて前記第１の処理及び前記第２の処理の全体の実行時間を測定し、
前記第１段階の処理の実行時間が、前記記憶部に記憶された前記第１段階の処理の参照時間と比較して長い場合には、第２段階の処理として、前記テスト対象機器で前記第１の処理及び前記第２の処理を再度実行させて前記第１の処理の実行時間及び前記第２の処理の実行時間をそれぞれ個別に測定し、
前記第１段階の処理の実行時間が、前記記憶部に記憶された前記第１段階の処理の参照時間と比較して短い場合には、前記第２段階の処理を実行することなく、前記テスト対象機器におけるテスト処理を終了することを特徴とするテスト実行機器。
【請求項２】
請求項１記載のテスト実行機器において、
前記制御部は、
前記第１段階の処理では、前記第１の処理の終了及び前記第２の処理の開始のイベントコマンドを発行せずに、前記第１の処理の開始及び前記第２の処理の終了のイベントコマンドの発行により前記第１の処理及び前記第２の処理の全体の実行時間を測定し、
前記第２段階の処理では、前記第１の処理の開始及び終了並びに前記第２の処理の開始及び終了のイベントコマンドの発行により前記第１の処理の実行時間及び前記第２の処理の実行時間をそれぞれ個別に測定することを特徴とするテスト実行機器。
【請求項３】
請求項１記載のテスト実行機器において、
前記通信手段は、前記テスト対象機器における前記第１段階の処理のパラメータ情報を受信し、
前記制御部は、前記第２段階の処理を実行する際、前記第１段階の処理のパラメータ情報を用いて、前記テスト対象機器で前記第１の処理及び前記第２の処理を再度実行させることを特徴とするテスト実行機器。
【請求項４】
請求項３記載のテスト実行機器において、
前記通信手段は、前記テスト対象機器における前記第１段階の処理の実行履歴または実行タイミングを受信し、
前記制御部は、前記第２段階の処理を実行する際、前記第１段階の処理の実行履歴または実行タイミングを用いて、前記テスト対象機器で前記第１の処理及び前記第２の処理を再度実行させることを特徴とするテスト実行機器。
【請求項５】
請求項１記載のテスト実行機器において、
前記通信部は、前記テスト対象機器で実行される処理の挙動データを受信し、
前記制御部は、前記挙動データを解析することでテスト結果を判定することを特徴とすることを特徴とするテスト実行機器。
【請求項６】
請求項５記載のテスト実行機器において、
前記通信部は、前記テスト対象機器で実行される複数の処理の挙動データ及び処理切替情報を受信し、
前記制御部は、前記処理切替情報を用いて前記挙動データを解析することでテスト結果を判定することを特徴とすることを特徴とするテスト実行機器。
【請求項７】
請求項１記載のテスト実行機器において、
前記制御部は、前記第２段階の処理を実行する前に、前記第２段階の処理の実行時間の測定を行うか否かのメッセージを表示部へ出力することを特徴とするテスト実行機器。
【請求項８】
テスト対象機器と通信する通信部と、前記テスト対象機器における処理の実行時間を参照時間として予め記憶する記憶部と、前記テスト対象機器における処理を前記通信部を介して制御する制御部と、を備えるテスト実行機器におけるテスト実行方法であって、
前記制御部は、
第１段階の処理として、前記テスト対象機器で第１の処理及び第２の処理を実行させて前記第１の処理及び前記第２の処理の全体の実行時間を測定し、
前記第１段階の処理の実行時間が、前記記憶部に記憶された前記第１段階の処理の参照時間と比較して長い場合には、第２段階の処理として、前記テスト対象機器で前記第１の処理及び前記第２の処理を再度実行させて前記第１の処理の実行時間及び前記第２の処理の実行時間をそれぞれ個別に測定し、
前記第１段階の処理の実行時間が、前記記憶部に記憶された前記第１段階の処理の参照時間と比較して短い場合には、前記第２段階の処理を実行することなく、前記テスト対象機器におけるテスト処理を終了することを特徴とするテスト実行方法。
【請求項９】
テスト対象機器と通信する通信部と、前記テスト対象機器における処理の実行時間を参照時間として予め記憶する記憶部と、前記テスト対象機器における処理を前記通信部を介して制御する制御部と、を備えるテスト実行機器において実行されるテスト実行プログラムであって、
前記制御部を、
第１段階の処理として、前記テスト対象機器で第１の処理及び第２の処理を実行させて前記第１の処理及び前記第２の処理の全体の実行時間を測定させ、
前記第１段階の処理の実行時間が、前記記憶部に記憶された前記第１段階の処理の参照時間と比較して長い場合には、第２段階の処理として、前記テスト対象機器で前記第１の処理及び前記第２の処理を再度実行させて前記第１の処理の実行時間及び前記第２の処理の実行時間をそれぞれ個別に測定させ、
前記第１段階の処理の実行時間が、前記記憶部に記憶された前記第１段階の処理の参照時間と比較して短い場合には、前記第２段階の処理を実行することなく、前記テスト対象機器におけるテスト処理を終了させるように実行させることを特徴とするテスト実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト実行機器、テスト実行方法及びテスト実行プログラムに関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特開２００２−１０８６５６号公報（特許文献１）がある。特許文献１には、テスト対象プログラム内に時間測定用のフックポイントを設定しておき、プログラム実行時に処理時間を測定する方法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１０８６５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の技術のように、多数のフックポイントを設定し、複数区間の処理時間を測定してテストする場合、本来のプログラム処理に負荷が加わり、プログラムの挙動が変わってしまう可能性がある。プログラムの挙動が変わってしまった場合には、本来のプログラム処理を正確に再現できなくなり、適切なテスト結果が得られなくなるおそれもある。
【０００５】
そこで、本発明は、プログラム処理に与える負荷を低減し、より正確なテスト結果が得られるテスト実行機器、テスト実行方法及びテスト実行プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明にかかるテスト実行機器は、以下の構成を備える。即ち、テスト対象機器と通信する通信部と、テスト対象機器における処理の実行時間を参照時間として予め記憶する記憶部と、テスト対象機器における処理を通信部を介して制御する制御部と、を備える。制御部は、第１段階の処理として、テスト対象機器で第１の処理及び第２の処理を実行させて第１の処理及び第２の処理の全体の実行時間を測定し、第１段階の処理の実行時間が、記憶部に記憶された第１段階の処理の参照時間と比較して長い場合には、第２段階の処理として、テスト対象機器で第１の処理及び第２の処理を再度実行させて第１の処理の実行時間及び第２の処理の実行時間をそれぞれ個別に測定し、第１段階の処理の実行時間が、記憶部に記憶された第１段階の処理の参照時間と比較して短い場合には、第２段階の処理を実行することなく、テスト対象機器におけるテスト処理を終了する。
【発明の効果】
【０００７】
本発明によれば、プログラム処理に与える負荷を軽減し、より正確なテスト結果が得られるテスト実行機器及びテスト実行方法を提供することが可能になる。
【図面の簡単な説明】
【０００８】
【図１】図１は、多段階テストツール使用時の概略構成の例である。
【図２】図２は、多段階テストツールの機能を説明する例である。
【図３】図３は、テスト対象プログラムの処理の例である。
【図４（ａ）】図４（ａ）は、テストに用いる参照データの例である。
【図４（ｂ）】図４（ｂ）は、テスト履歴の例である。
【図５】図５は、多段階テストの処理の流れを示す例である。
【図６】図６は、多段階テストツール使用時の概略構成の例である。
【図７】図７は、テスト対象プログラムの処理の実行状態を示す例である。
【図８】図８は、多段階テストの処理の流れを示す例である。
【図９】図９は、処理時間の変化があったことをユーザに通知する画面の例である。
【発明を実施するための形態】
【０００９】
まず、本発明の実施形態の概要を説明する。
【００１０】
本発明の実施形態に係るテストツールでは、ソフトウェアのテストを多段階（複数段階）に分けて実施する。例えば、２段階のテストでは、第１段階では大まかな処理単位で全体の実行時間を測定し、第１段階で全体の実行時間に異常が見られた場合に、第２段階では当該処理を更に細かい処理単位で実行時間を測定する。つまり第１段階と第２段階とで測定する処理単位の粒度を変更する。
【００１１】
例えば、テスト対象の処理が、関数Ａ、Ｂ及びＣから成る場合、第１段階では全体の時間を測定する。測定時間は、関数Ａ、関数Ｂ及び関数Ｃの複数の関数の実行時間の総和となる。第１段階で想定以上の時間が測定された場合には、第２段階に移行する。第２段階では、テスト対象の処理を構成するそれぞれの関数の実行時間を測定する。測定時間は、関数Ａ、関数Ｂ及び関数Ｃのそれぞれの実行時間となる。
【００１２】
なお、ここで多段階とは２段階以上の複数段階を意味する。つまり、１段階ではない複数段階であれば良く、例に挙げた２段階のみならず、３段階、４段階、５段階…であっても構わない。また、ここで説明したのは概要であって詳細な処理については以下の実施例で説明する。
【実施例１】
【００１３】
本実施例では、テスト対象機器における実行処理に要する時間を測定し、処理時間の長さが所定の条件を満たした場合、原因個所を特定するために、再度処理を実行すると共に、処理を構成する関数ごとの詳細な処理時間を測定する処理を有する多段階テストツールの例を説明する。
【００１４】
まず、本実施例における多段階テストツール使用時の概略構成の例について図１を用いて説明する。なお、本実施例では、多段階テストツールの形態がプログラムである場合を例に示す。
【００１５】
図１に示すように、本実施例で示すテスト環境は、テスト対象とする機器制御プログラム１２２を有するテスト対象機器１と、多段階テストツール２２２を有するテスト実行機器２から構成される。
【００１６】
テスト対象機器１は、制御部１１と、メモリ１２と、通信部１３と、入力部１４を有している。
【００１７】
制御部１１は、メモリ１２が保持しているプログラムを実行し、機器全体の動作を制御する部分である。例えば、ＣＰＵ等である。
【００１８】
メモリ１２は、テスト対象機器１の動作を制御する機器制御プログラム１２２や、機器全体を管理するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１２１などを記憶する部分である。メモリ１２の例としては、ディスク、テープ、半導体などがある。ＯＳ１２１と機器制御プログラム１２２は、メモリ１２から読み出され、制御部１１により実行される。
【００１９】
通信部１３は、外部機器との通信を行う部分である。テスト対象機器１と、テスト実行機器２との間で通信を行う場合に使用する。例えば、テスト実行機器２からの処理の実行指示の受信や、テスト対象機器１が実行した処理の識別情報、処理の開始および終了通知、実行時の入力パラメータ情報などをテスト実行機器２へ送信する場合に使用する。
【００２０】
入力部１４は、電源を入れるなど、テスト対象機器１を操作するためのインタフェース部である。入力部１４の例としては、ボタン、スイッチ、キー、ダイアル、スティック、マウス、リモートコントローラ、タッチパネルなどがある。
【００２１】
テスト実行機器２は、制御部２１と、メモリ２２と、通信部２３と、入力部２４、出力部２５を有している。本実施例では、テスト実行機器２として、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）を想定し、多段階テストツールをインストールしている場合について説明する。
【００２２】
制御部２１は、メモリ２２が保持しているプログラムを実行し、機器全体の動作を制御する部分である。
【００２３】
メモリ２２は、テスト実行機器２全体を管理するＯＳ２２１や、多段階テストツール２２２などのプログラムの他、テスト結果の判定に用いる過去の処理時間データやテスト履歴、実行タイミングなどのテスト情報２２３を記憶する記憶部である。メモリ２２の例としては、ディスク、テープ、半導体などがある。ＯＳ２２１と多段階テストツール２２２は、メモリ２２から読み出され、制御部２１により実行される。後述する多段階テストツール２２２による各処理も、制御部２１により実行される。
【００２４】
通信部２３は、外部機器との通信を行う部分である。テスト対象機器１と、テスト実行機器２との間で通信を行う場合に使用する。例えば、テスト対象機器１に対して処理の実行指示を送信する場合や、テスト対象機器１が実行した処理の識別情報、処理の開始および終了通知、実行時の入力パラメータ情報などを受信する場合に使用する。
【００２５】
入力部２４は、多段階テストツール２２２の実行など、テスト実行機器２を操作するためのインタフェース部である。入力部２４の例としては、ボタン、スイッチ、キー、ダイアル、スティック、マウス、リモートコントローラ、タッチパネルなどがある。
【００２６】
出力部２５は、機器操作用画面や機器の処理結果など、ユーザに提供するための画像データを出力する部分である。出力先として、液晶パネル、プラズマディスプレイパネル、有機ELパネルなどの表示部を接続することで、各種画像データの表示を可能にする。
【００２７】
図２は、多段階テストツール２２２の有する機能の一例を示したものである。
【００２８】
多段階テストツール２２２は、通信部２２２１、処理時間算出部２２２２、テスト情報記憶部２２２３、処理時間比較部２２２４、テスト結果判定部２２２５を有する。多段階テストツール２２２はこれらの各部を機能として備えるプログラムであることを想定している。
【００２９】
ここで、本実施例の多段階テストの実施方法について、図２〜図５用いて説明する。なお、ここでは簡単のため、２段階でのテスト方法を例に示す。
【００３０】
図３は、テスト対象機器１における、機器制御プログラム１２２の有する処理（処理Ａ）の実行について一例を示したものである。
【００３１】
処理Ａのテストを行う場合、ユーザは、ＵＩ（入力部１４）を通し、処理Ａを実行する。ここで、処理Ａは、関数１と関数２を順に実行する処理である。例えば、処理Ａが、テスト対象機器１の電源を入れる処理であるとした場合、関数１で機器制御プログラム１２２の初期化処理を実行、関数２で電源ランプの点灯処理を実行といった処理が挙げられる。
【００３２】
１段階目のテストでは、処理Ａに要する処理時間を測定する。この処理時間の長さが所定の条件を満たした場合、２段階目のテストとして処理Ａを再実行する。ここでいう所定の条件とは、「処理時間が1.5倍になった」 または「処理時間が10秒を超えた」など、処理時間が所定の割合を超過した場合や所定の時間を超過した場合などの予めユーザが任意に設定した条件とする。２段階目のテストでは、処理Ａを構成する関数１および関数２の処理時間を測定し、詳細な原因個所の特定を行う。
【００３３】
このように処理時間の変化によりテストを行う場合、まずは参照データとなる処理時間を事前に測定しておく必要がある。そこで、テスト実行前に、関数１および関数２の処理時間を測定し、以降のテスト結果の判定に用いる参照データを取得する。処理時間の測定方法は如何なる方法であってもよく、例えば、各関数の処理の最初と最後で、処理の開始および終了を通知するイベントコマンドを発行するようにすればよい。関数１及び関数２の全体の処理時間、関数１と関数２それぞれの個別の処理時間は、参照時間としてテスト実行機器２に送信され、メモリ２２に記憶される。多段階テストツール２２２は、このイベントコマンドを通信部１３および２３を介して通信部２２２１で受信し、受信時の時刻をＯＳ２２１の内部クロックから取得する。そして、処理時間算出部２２２２で処理の開始および終了時の時刻の差分を取ることで、処理時間を算出する。
【００３４】
実際に多段階テストを実行する場合にも、同様の方法で処理時間を測定するが、１段階目の処理Ａに要する処理時間の測定では、関数１の処理の最初と関数２の処理の最後で処理の開始および終了を通知するイベントコマンドを発行するようにしておく。つまり、１段階目の処理では、関数１の処理の終了及び関数２の処理の開始のイベントコマンドは発行されず、関数１の処理の開始及び関数２の処理の終了のイベントコマンドのみが発行される。このようにすることで、１段階目の測定では、発行するイベントコマンドの数を減らすことが可能になり、本来のプログラム処理に対する負荷を減らすことができる。これにより、本来のプログラム処理に対する影響を軽減したテストが実現できる。無論、１段階目のテスト結果で問題が発生し、２段階目の詳細テストを実施する場合は、各関数について処理時間を測定する必要がある。つまり、２段階目の処理では、関数１の処理の開始及び終了並びに関数２の処理の開始及び終了のイベントコマンドが発行される。  図４は、テスト結果の判定に用いる過去の処理時間データやテスト履歴、実行タイミングなどのテスト情報２２３について一例を示したものである。
【００３５】
テスト情報記憶部２２２３は、処理の識別情報（処理Ａなど）と、先に述べた方法により算出した処理時間を図４（ａ）のように記憶しておく。ここに示した例は、処理Ａを構成する関数１および関数２の処理時間を測定し、関数１が25.4[ms]、関数２が0.6[ms]であった場合である。また、全体処理時間は、関数１と関数２の処理時間の合計であり、26.0[ms]と記憶している。同様に、機器制御プログラム１２２の有する他の処理についても、テスト実行前に処理時間を算出し、テスト結果の判定に用いる参照データとして記憶しておく。
【００３６】
また、テスト情報記憶部２２２３は、図４（ｂ）のように、実行履歴、実行タイミング、実行時の入力パラメータ情報を記憶しておく。ここに示した例では、実行履歴として処理の識別情報を実行した順に記憶している。また、実行タイミングとして各処理の実行開始時刻をテスト開始からの経過時間として記憶している。この経過時間の取得方法については、如何なる方法であってもよいが、先に述べたようにＯＳ２２１の内部クロックから取得した時刻情報を利用することで容易に実現できる。また、各処理を実行したときの入力パラメータ情報を記憶している。つまり、第１段階目の処理のパラメータ情報を記憶しておき、第２段階目の処理を実行する際、第１段階の処理で用いたパラメータ情報、実行履歴、実行タイミングを用いる。このように、各処理の実行履歴や実行タイミング、入力パラメータ情報を記憶しておき、テストを再実行する場合に使用することで、再現性を高めることが可能になる。
【００３７】
なお、ここで示した、実行処理の識別情報、実行時の入力パラメータ情報など、テスト対象機器１から取得する情報については、通信部１３および２３を介して通信部２２２１で受信するものとする。
【００３８】
図５は、本実施例における多段階テストの処理の流れについて一例を示したものである。なお、前提条件として、先に述べた方法により、機器制御プログラム１２２のテスト対象処理について処理時間の測定を行い、テスト結果の判定に用いる参照データを取得し、図４（ａ）のようなテスト情報２２３が取得済の状態にあるとする。
【００３９】
処理の流れを順に説明する。まず、ユーザが、テスト対象プログラム（ここでは処理Ａとする）を実行する（ＳＰ１００）。これが１段階目のテスト実行となる。テスト情報記憶部２２２３で、実行タイミングと入力パラメータを図４（ｂ）のように記憶する（ＳＰ１０１）。処理時間算出部２２２２で、処理Ａに要する処理時間の測定を行う（ＳＰ１０２）。処理時間比較部２２２４は、事前に取得し、テスト情報２２３に記憶している参照データと処理時間の比較を行う。テスト結果判定部２２２５は、所定の条件「処理時間が1.5倍になった」などを満たすか否かを判定し（ＳＰ１０３）、満たす場合には、テスト情報２２３に記憶している実行履歴を参照し、同じ実行タイミングおよび入力パラメータを用いて、処理Ａを再実行する（ＳＰ１０４）。これが２段階目のテスト実行となる。処理時間算出部２２２２は、処理Ａを構成する関数１および関数２について、処理時間の測定を行う（ＳＰ１０５）。処理時間比較部２２２４は、事前にテスト情報２２３に記憶している参照データと、関数レベルでの処理時間の比較を行い、問題個所となっている関数を特定（ＳＰ１０６）、テスト処理を終了する（ＳＰ１０７）。また、ＳＰ１０３において、所定の条件を満たさない場合には問題がないとして、２段階目のテストを実行せずにテスト処理を終了する（ＳＰ１０７）。
【００４０】
本実施例では、多段階テストツールの形態がプログラムである場合を例に示した。また、テスト実行機器２としてＰＣを想定し、多段階テストツールをインストールして動作させる構成を示した。しかし、実施の形態は、プログラムである必要はなく、本実施例と同等の処理を実行できる場合にはハードウェアの形態で実現しても良い。また、テスト対象機器１の中に、多段階テストツールを含む構成にしてもよい。また、多段階テストの説明において、簡単のために２段階でのテスト方法を示したが、テストの段階数は任意であり、本実施例により規定されるものではない。また、関数レベルでの処理時間の測定を例に示したが、測定単位はスレッド単位やタスク単位など任意であり、システムコールや割り込みなどをトリガに測定の開始および終了ポイントを設定してもよい。また、多段階テストで詳細テストを実行する条件として、処理時間が所定の割合を超過した場合や所定の時間を超過した場合を例に示したが、これらの条件を設定する機能を多段階テストツールに持たせることで、ユーザが任意の条件下でテストを実行することが可能になる。また、テストの実行方法として、ユーザがテスト対象機器１を操作する方法を示したが、事前にテストする処理を選定しておき、ＰＣなどから機械的に実行させてもよい。この場合のＰＣはテスト実行機器２でもよい。また、多段階テストツールに順次処理を実行することで自動テストさせる機能を持たせてもよい。
【００４１】
以上を纏めると、本実施例における処理動作は以下のようになる。
【００４２】
（１）第１段階の処理として、テスト対象機器で第１の処理及び第２の処理を実行させて第１の処理及び前記第２の処理の全体の実行時間を測定する。
【００４３】
（２）第１段階の処理の実行時間が、記憶部に記憶された第１段階の処理の参照時間と比較して長い場合には、第２段階の処理として、テスト対象機器で第１の処理及び第２の処理を再度実行させて第１の処理の実行時間及び第２の処理の実行時間をそれぞれ個別に測定する。
【００４４】
（３）第１段階の処理の実行時間が、記憶部に記憶された第１段階の処理の参照時間と比較して短い場合には、第２段階の処理を実行することなく、テスト対象機器におけるテスト処理を終了する。
【００４５】
このように本実施例によれば、テスト対象機器における実行処理に要する時間を測定し、処理時間の長さが所定の条件を満たした場合、原因個所を特定するために、再度処理を実行すると共に、処理を構成する関数ごとの詳細な処理時間を測定することができる。本実施例によれば、テストを多段階に分けて実行することで、本来のプログラム処理に与える負荷を軽減する多段階テストツールを提供できる。
【実施例２】
【００４６】
本実施例では、多段階テストにおいて、テスト対象機器における実行処理に要する時間を測定し、処理時間の長さが所定の条件を満たした場合、その処理ではなく、同時刻に並列実行されているプログラムを考慮した原因の解析を行う例を説明する。
【００４７】
多段階テストにより、機器制御プログラム１２２の処理時間の長さが所定の条件を満たした場合であっても、その処理自体には問題がないことがある。例えば、並列実行されている他のプログラムとの処理の優先度の関係で、処理が待たされてしまい、結果として処理が遅延することがある。このような問題を解決するには、処理時間が遅延している処理だけを解析しても原因は特定できない。同時刻に並列実行されているプログラムを含めた解析が必要になる。
【００４８】
ここで、本実施例における多段階テストツール使用時の概略構成を図６に示す。図６は、実施例１のテスト環境（図１）に対し、テスト実行機器２のメモリ２２の中に、挙動データ２２４を記憶する構成にしたものである。挙動データ２２４とは、テスト対象機器１で実行される機器制御プログラム１２２の実行状態の情報を記憶したデータである。本実施例の構成及び処理内容は、特段の説明がない限りは実施例１と同様とする。
【００４９】
図７は、挙動データ２２４について一例を示したものである。
【００５０】
ここでは、機器制御プログラム１２２を実行した場合に、仮に３つのタスク（Task a, Task b, Task c）が動作するとした場合を示しており、そのときに取得される挙動データを可視化した例である。横軸を時間軸とし、それぞれのタスクが実行された期間を黒で示している。このような挙動データ２２４を取得するため、多段階テストツール２２２は、機器制御プログラム１２２の実行時に、ＯＳ１２１のタスク切替情報を、通信部１３および２３を介して通信部２２２１で受信すると共に、受信時の時刻をＯＳ２２１の内部クロックから取得し、併せて挙動データ２２４として記憶しておくものとする。
【００５１】
ここで、多段階テストにおいて処理時間の長さが所定の条件を満たした場合に、挙動データ２２４を用いて原因を解析する方法を示す。
【００５２】
まず、実施例１に示した方法により、多段階テストを実行する。このとき、多段階テストツール２２２は、テスト対象機器１からタスク切替情報の取得を同時に行い、時刻情報と共に挙動データ２２４として記憶を行う。仮に、多段階テストにより、処理時間の遅延した処理を検出した場合には、テスト情報２２３の実行履歴を参照する。この実行履歴には、テスト開始からの経過時間、即ち、各処理の実行開始時刻に関する情報が記録されている。よって、処理時間の遅延した処理を実行していた時刻を取得ことが可能である。ここで、処理時間の遅延が発生した処理の実行時刻が、テスト開始から3[s]経過した時刻だとした場合、挙動データ２２４の該当時刻における機器制御プログラム１２２の実行状態を参照することで並列実行されているプログラムを含めた解析が可能になる。図７に示した挙動データの場合、テスト開始から3[s]経過した時刻の機器制御プログラム１２２の実行状態を確認すると、該当時刻において、Task a が処理を占有し、Task b および Task c が実行できない状態にあったことがわかる。このことから、処理遅延の原因は、Task a の処理の占有によるものと判断できる。
【００５３】
本実施例では、テスト対象機器１からタスク切替情報の取得を行うことを述べたが、これは如何なる方法であってもよい。例えば、テスト対象機器１のＯＳ１２１がＬｉｎｕｘ(登録商標)である場合、ＬＫＳＴ（Ｌｉｎｕｘ  Ｋｅｒｎｅｌ  Ｓｔａｔｅ  Ｔｒａｃｅｒ）を使用する方法が挙げられる。ＬＫＳＴはＬｉｎｕｘカーネル向けのイベントトレーサであり、カーネル内の処理の遷移情報を取得することができる。システムコールやディスクＩ／Ｏ、プロセス切替などをフックポイントとして、カーネル内部で発生したイベントの情報を通信部１３および２３を介して通信部２２２１で受信することで、本処理を実現することが可能である。
【００５４】
このように本実施例によれば、多段階テストにおいて、テスト対象機器における実行処理に要する時間を測定し、処理時間の長さが所定の条件を満たした場合、その処理ではなく、同時刻に並列実行されているプログラムを考慮した原因の解析を行うことができるようになる。
【実施例３】
【００５５】
本実施例では、多段階テストをプログラム開発時に適用する場合において、１段階目のテストで処理時間の長さが所定の条件を満たした場合に、２段階目のテストを実行するか否かをユーザに確認する多段階テストの実行方法について例を説明する。
【００５６】
ここで、テスト対象機器１の機器制御プログラム１２２を開発することを考える。機器制御プログラム１２２の開発時に、多段階テストを適用した場合、多くのケースで処理時間の遅延を検出してしまうことが予想される。これは、本実施例における多段階テストが処理時間の変化に基づいたテストを実行しているためである。プログラム開発時は、処理の追加や削除、処理フローの変更などの要因により、処理時間が大きく変動する。そこで、多段階テストツール２２２に、多段階テストにおける２段階目のテストについて、実行するか否かをユーザに確認する機能を持たせる。
【００５７】
図８は、本実施例における多段階テストの処理の流れについて一例を示したものである。なお、前提条件として、実施例１で述べた方法により、機器制御プログラム１２２のテスト対象処理について処理時間の測定を行い、テスト結果の判定に用いる参照データを取得し、図４（ａ）のようなテスト情報２２３が取得済の状態にあるとする。本実施例の構成及び処理内容は、特段の説明がない限りは実施例１と同様である。また、本実施例と実施例１を組み合わせたり、本実施例と実施例２を組み合わせることも可能である。
【００５８】
処理の流れを順に説明する。まず、ユーザが、テスト対象プログラム（ここでは処理Ａとする）を実行する（ＳＰ１００）。これが１段階目のテスト実行となる。テスト情報記憶部２２２３で、実行タイミングと入力パラメータを図４（ｂ）のように記憶する（ＳＰ１０１）。処理時間算出部２２２２で、処理Ａに要する処理時間の測定を行う（ＳＰ１０２）。処理時間比較部２２２４は、事前に取得し、テスト情報２２３に記憶している参照データと処理時間の比較を行う。テスト結果判定部２２２５は、所定の条件「処理時間が1.5倍になった」などを満たすか否かを判定し（ＳＰ１０３）、満たす場合には、ユーザに通知を行う（ＳＰ１０８）。通知の方法は如何なる方法であってもよいが、例えば、モニタに表示する方法が挙げられる。テスト実行機器２としてＰＣを想定した場合、出力部２５の先にモニタを接続しておくことで、ユーザに通知することが可能になる。図９は、処理時間の変化があったことをユーザに通知する画面の一例を示したものである。処理時間の変化があったことを通知すると同時に、詳細テスト（２段階目のテスト）を実行するか否かを確認する画面を示している。ユーザは、入力部２４としてマウスなどを用いて、実行有無を選択することができる。もし、１段階目の処理で処理時間の変化が検出された場合でも、現時点での詳細テストが不要な場合は実行しない旨を選択し（ＳＰ１０９）、テスト処理を終了する（ＳＰ１０７）。もし、詳細テストを行いたい場合には、実行する旨を選択することで（ＳＰ１０９）、２段階目のテスト実行が開始される。その場合は、テスト情報２２３に記憶している実行履歴を参照し、同じ実行タイミングおよび入力パラメータを用いて、処理Ａを再実行する（ＳＰ１０４）。これが２段階目のテスト実行となる。処理時間算出部２２２２は、処理Ａを構成する関数１および関数２について、処理時間の測定を行う（ＳＰ１０５）。処理時間比較部２２２４は、事前にテスト情報２２３に記憶している参照データと、関数レベルでの処理時間の比較を行い、問題個所となっている関数を特定（ＳＰ１０６）、テスト処理を終了する（ＳＰ１０７）。
【００５９】
本実施例では、多段階テストの１段階目のテストで処理時間の長さが所定の条件を満たした場合に、２段階目のテストを実行するか否かをユーザに確認する方法として、モニタに情報を通知し、テストの実行有無を選択させる方法を示したが、音声により確認する方法など、同等の処理が実現できる方法ならば如何なる方法であってもよい。また、本実施例では、２段階目のテストの実行有無を確認する例を示したが、多段階テストを行う場合においては、２段階目のテストまでは実行し、３段階目のテストの実行有無を確認するような方法にしてもよい。
【００６０】
このように多段階テストをプログラム開発時に適用する場合において、１段階目のテストで処理時間の長さが所定の条件を満たした場合に、２段階目のテストを実行するか否かをユーザに確認する多段階テストを実行できるようになる。  なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００６１】
また、上記の各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶部、または、ＩＣカード、ＳＤカード、ＤＶＤ、ＢＤ等の記録媒体に置くことができる。
【００６２】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００６３】
１    テスト対象機器
１１  制御部
１２  メモリ
１３  通信部
１４  入力部
２    テスト実行機器
２１  制御部
２２  メモリ
２３  通信部
２４  入力部
２５  出力部
【図１】
2014142844.tif 000003
【図２】
2014142844.tif 000004
【図３】
2014142844.tif 000005
【図４（ａ）】
2014142844.tif 000006
【図４（ｂ）】
2014142844.tif 000007
【図５】
2014142844.tif 000008
【図６】
2014142844.tif 000009
【図７】
2014142844.tif 000010
【図８】
2014142844.tif 000011
【図９】
2014142844.tif 000012