(57)【要約】【課題】  複数のテスト対象プログラムをテストするに際し、別々のタイミングの手動操作に起因するオペレータの操作誤りを減少させ、テストを効率良く実施すること。【解決手段】  テスト操作情報を配信するコンピュータが、複数のテストマシンのそれぞれに配信するテスト操作情報から自動操作情報と手動操作指示情報とを抽出し、同一内容の手動操作が複数のテストマシンの全てまたは一部で同じタイミングで実行されるように各テストマシンに対する手動操作指示情報を並べ替える手段と、並べ替えた手動操作指示情報と自動操作情報とからなるテスト操作情報を複数のテストマシンのそれぞれに配信する手段とを備え、複数のテストマシンが、配信されたテスト操作情報に従い各テストマシンに実装されたテスト対象プログラムのテストを実行する手段とを備える。【選択図】      図２
2010026706.tif 000002
【特許請求の範囲】
【請求項１】
テスト対象のプログラムを実装した複数のテストマシンのそれぞれに対しテスト操作情報を配信するコンピュータと、配信されたテスト操作情報に従いテスト対象プログラムのテストを実行する複数のテストマシンから構成されたプログラムの遠隔テスト実行システムにおいて、
前記テスト操作情報を配信するコンピュータが、複数のテストマシンのそれぞれに配信するテスト操作情報から自動操作情報と手動操作指示情報とを抽出し、同一内容の手動操作が複数のテストマシンの全てまたは一部で同じタイミングで実行されるように各テストマシンに対する手動操作指示情報を並べ替える手段と、並べ替えた手動操作指示情報と自動操作情報とからなるテスト操作情報を複数のテストマシンのそれぞれに配信する手段とを備え、
前記複数のテストマシンが、
前記コンピュータから配信されたテスト操作情報に従い各テストマシンに実装されたテスト対象プログラムのテストを実行する手段とを備える
ことを特徴とするプログラムの遠隔テスト実行システム。
【請求項２】
前記コンピュータが、
同一の手動操作指示情報による手動操作の内容とその内容のテストを実行するテストマシンの一覧を表示する手段をさらに備えることを特徴とする請求項１に記載のプログラムの遠隔テスト実行システム。
【請求項３】
前記テストマシンのそれぞれが、手動操作指示情報で示される手動操作内容を操作順に表示する手段をさらに備えることを特徴とする請求項１または２に記載のプログラムの遠隔テスト実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のテストマシンに実装したテスト対象のプログラムに対し、テスト操作情報や関連情報を配信し、各テストマシン上でテスト操作を実行するプログラムの遠隔テスト実行システムに関するものである。
【背景技術】
【０００２】
テスト対象のプログラムに対するテスト操作を遠隔のコンピュータ上で実行する方法はあり、コンピュータを連携させてテストを行うことは可能である。操作内容はスクリプトなどにより記述されたプログラムとして表現され、プログラムを実行することで、遠隔のコンピュータ上でテスト操作を再現する。プログラムはスクリプトなどの汎用的な言語で記述されるため、プログラム中で独自の処理を行うことが可能である。
テスト対象プログラムは同時並行に実行が可能であるので、複数のテストマシン上でテストを行うことも可能である。もし全てのテスト操作がスクリプトなどにより自動的に操作可能であり、手動操作を伴わないのであれば、連続して操作を継続することが可能である。なお、本発明に関連する公知技術文献としては下記の特許文献１がある。
【０００３】
【特許文献１】特開２００８−４０５３７「ＧＵＩテスト支援システム及びテスト支援用アプリケーションプログラム」
【特許文献２】特開２００６−１２７０００「プログラム遠隔起動装置及び方法並びにプログラム」
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、テストケース（テスト内容）の一連のテスト操作の中に手動操作が含まれると、自動的な操作を行うことができないため、テスト操作の実行を中断しなければならず、手動操作を行った後、残りのテストケースの実行を再開する必要がある。
通常、ログイン、変数入力、オブジェクトのクリック操作などの手動操作はテスト対象プログラム（テストマシン）毎に別々のタイミングで発生する。このため、複数のテスト対象プログラム（テストマシン）毎に別々のタイミングで手動操作が発生すると、オペレータが操作を誤り、テストが正常に行われない恐れがある。
本発明は、複数のテスト対象プログラムをテストするに際し、別々のタイミングの手動操作に起因するオペレータの操作誤りを減少させ、テストを効率良く実施することができるプログラムの遠隔テスト実行システムを提供することである。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明に係るプログラムの遠隔テスト実行システムは、テスト対象のプログラムを実装した複数のテストマシンのそれぞれに対しテスト操作情報を配信するコンピュータと、配信されたテスト操作情報に従いテスト対象プログラムのテストを実行する複数のテストマシンから構成された遠隔テスト実行システムにおいて、
前記テスト操作情報を配信するコンピュータが、複数のテストマシンのそれぞれに配信するテスト操作情報から自動操作情報と手動操作指示情報とを抽出し、同一内容の手動操作が複数のテストマシンの全てまたは一部で同じタイミングで実行されるように各テストマシンに対する手動操作指示情報を並べ替える手段と、並べ替えた手動操作指示情報と自動操作情報とからなるテスト操作情報を複数のテストマシンのそれぞれに配信する手段とを備え、
前記複数のテストマシンが、
前記コンピュータから配信されたテスト操作情報に従い各テストマシンに実装されたテスト対象プログラムのテストを実行する手段とを備える
ことを特徴とする。
また、前記コンピュータが、同一の手動操作指示情報による手動操作の内容とその内容のテストを実行するテストマシンの一覧を表示する手段をさらに備えることを特徴とする。
また、前記テストマシンのそれぞれが、手動操作指示情報で示される手動操作内容を操作順に表示する手段をさらに備えることを特徴とする。
【発明の効果】
【０００６】
本発明の遠隔テスト実行システムによれば、次のような効果がある。
（１）テスト操作情報を構成する手動操作指示情報を並べ替えることにより、１台以上のテストマシンで同じ手動操作を行う発生頻度が高くなる。
（２）１台以上のテストマシンで同じ手動操作を行う頻度が高くなるため、オペレータによる誤操作が減少し、テストを効率良く実施することができる。
（３）手動操作の手順と、操作が必要なテストマシンの一覧を表示することにより、テストに必要な手動操作の進捗が分かる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明を適用した遠隔テスト実行システムの一実施の形態について説明する。
図１は本発明の実施の形態を示すシステム構成図である。
この実施形態のシステムは、コントローラ（１０１）と呼ばれるコンピュータと、ホストマシン（１０２）および仮想マシン（１０３）とで構成されている。
コントローラ（１０１）は、ホストマシン（１０２）の複数の仮想マシン（１０３）にそれぞれ実装されたテスト対象プログラムのテストを行うためのテスト操作情報を配信するコンピュータである。
ホストマシン（１０２）には、１台以上の仮想マシン（１０３）が動作する。コントローラ（１０１）とホストマシン（１０２）および複数の仮想マシン（１０３）は、ネットワーク（１０６）を介して通信する。
ホストマシン（１０２）にはホストエージェント（１０６）が動作し、複数の仮想マシン（１０３）には仮想マシンエージェント（１０４）が動作する。
コントローラ（１０１）は、仮想マシンエージェント（１０４）に対し、テスト操作の命令などの各種情報を送信し、仮想マシンエージェント（１０４）は命令に基づいて仮想マシン（１０３）にそれぞれ実装されたテスト対象プログラムのテスト操作を行う。
コントローラ（１０１）は、ホストエージェント（１０６）に命令を送信し、仮想マシン（１０３）の起動やシャットダウン、および初期化を行う。
テスト管理者（１０８）は、コントローラ（１０１）上でテスト操作情報を登録し、テストを実行し、テストの進捗及びテスト結果の確認を行う。オペレータ（１０７）は、仮想マシン（１０３）上で手動操作指示情報に従い手動操作を行う。
【０００８】
図２は、コントローラ（１０１）、ホストマシン（１０２）の詳細構成を示す機能ブロック図である。
図２において、テスト情報データベース（１０１１）には図１０〜図１４に示すようなテスト操作に関する情報が格納される。
テスト並べ替えロジック部（１０１２）は、１つ以上のテスト操作情報から手動操作指示情報のみを抽出する機能と、テスト操作情報を並べ替える機能で構成される。
操作配信ロジック部（１０１３）は、１台以上のテストマシンで同じ手動操作を同じタイミングで実行するように、テスト操作情報の配信を制御する。
【０００９】
本発明では、図３に例示するように、複数のテストマシンに対して手動操作とスクリプトによる自動操作で構成されるテスト操作情報を操作配信キューとして配信するが、その配信の際に、同一の手動操作は同じタイミングで実施されるように並べ替えて配信する。
例えば、図３において、「手動１」、「手動２」という手動操作があるが、これら「手動１」、「手動２」の手動操作は同じ（またはほぼ同じ）タイミングで行われるように並び替えて配信する。この場合、タイミングを調整するために図３に空白欄で示す「何もしない」時間帯を挿入している。
なお、「手動１」、「手動２」の具体例は、ログイン、変数入力、クリック操作によるオブジェクト指定、ドラッグ＆ドロップなどの操作である。
【００１０】
遠隔命令送信部（１０１４）は、自動操作情報と手動操作指示情報を遠隔の仮想マシン（１０３）上のテストマシンエージェント（１０４）へ配信し、操作結果が失敗であると判断されるときは、以降のテストケースの操作を中断するかどうかの判断を行う。
テストスクリプト（１０１５）は、遠隔命令送信部（１０１４）が自動操作情報を配信する際に、テストマシンエージェント（１０４）が行う動作を定義したファイルである。
テスト（１０１５）は、図７のテスト操作登録画面のテストスクリプト（７０２）で設定されるファイルであり、図１３のファイルパス（１３０２）に格納されているファイルである。
エージェントスクリプト（１０１６）は、遠隔命令送信部（１０１４）からテストマシンエージェント（１０４）へ転送され、テストマシンエージェント（１０４）上で実行されるスクリプトファイルである。テストスクリプト（１０１５）にエージェントスクリプト（１０１６）の転送と実行処理が定義されている。
【００１１】
テストマシンエージェント（１０４）は、遠隔命令送信部（１０１４）から配信されたテスト操作情報に基づき、自動操作と手動操作によるテストを仮想マシン（１０３）上で実行する。
自動操作時は、テストスクリプト（１０１５）に記述された命令に基づいて動作し、エージェントスクリプト（１０１６）が転送された場合はエージェントスクリプト（１０１６）を実行する。実行結果はテストマシンエージェント（１０４）から遠隔命令送信部（１０１４）へ返信される。
手動操作時は、手動操作説明表示部（１０３２）により、コントローラ（１０１）の手動操作配信部（１０１８）へ手動操作内容の要求を行い、手動操作の表示を行う。
【００１２】
コントローラ（１０１）の手動操作配信部（１０１８）は、要求のあった手動操作の内容に従い、操作手順ＨＴＭＬファイル（１０１９）を読み出し、操作結果返信フォームを結合して、手動操作内容を生成する。手動操作内容は、図９に示す内容である。
操作結果返信フォームは、図３０に示すＨＴＭＬコードで定められ、図９の９０２、９０３、９０４が示す手動操作の結果を送信するフォームである。
手動操作配信部（１０１８）は、生成した手動操作手順内容を手動操作説明表示部（１０３２）に伝達する。
【００１３】
オペレータ（１０７）は、手動操作説明表示部（１０３２）に基づいて手動操作を行う。オペレータ（１０７）による手動操作が終了すると、操作結果を図９の９０２、９０３、９０４が示す手動操作の結果送信フォームから送信し、手動操作配信部（１０１８）が結果を受信する。結果は、実行結果データベース（１０１７）に記録され、遠隔命令送信部（１０１４）に伝達される。
【００１４】
遠隔命令送信部（１０１４）は手動操作の結果から、操作が失敗したのであれば、テスト操作情報による以降の操作を配信するかどうかを判断し、操作が成功したのであれば、それ以降のテスト操作情報を配信する。
ホストエージェント（１０５）はホストマシン（１０２）ごとに１つ存在する。遠隔命令送信部（１０１４）の命令を元に、仮想マシン（１０３）の起動、シャットダウン、初期化処理を行う。
【００１５】
図４はテスト管理者（１０８）がコントローラ（１０１）上で仮想マシン（１０３）を登録する画面である。テスト実行マシン一覧（４０１）に、登録された仮想マシンの一覧が表示され、テストが配信される。「追加」ボタン（４０２）で、仮想マシンを追加し、「登録」ボタン（４０３）で登録される。
【００１６】
図５は、テストケース管理画面である。
テストケースの追加は「テストケース追加」ボタン（５０２）を押す。テストを実行するときは、実行するテストを選択し、「テストケース実行」ボタン（５０１）を押す。テストの実行結果ログは、５０３でテストを選択すると左ペイン（５０４）に結果一覧が表示される。
【００１７】
図６は、テストケースへのテスト操作の追加を行う画面であり、図５の「テストケース追加」ボタン（５０２）を押したときに表示される。
テストケースは、テストツールを使用して自動的に実行できる自動操作と、テストツールによって操作できない手動操作の組み合わせで構成される。テストケースに含まれる操作の追加は、「操作追加」ボタン（６０３）で行う。追加されたテストケースは、操作一覧６０２に表示される。テストケースの操作の設定が完了すると、「登録」ボタン（６０４）で登録を行う。
【００１８】
図７は、テストケースの自動操作または手動操作の追加画面であり、図６の「操作追加」ボタン（６０２）を押したときに表示される。
自動操作または手動操作を選択（７０１）する。自動操作を選択した場合、テストツールを実行するためにテストスクリプト（７０２）を指定する。テストツールによる操作結果の成否を判断するため、正常終了時のテストスクリプトの戻り値を「戻り値」（７０３）に指定する。実際の戻り値を７０３の値と比較することで自動操作が正常に終了したかどうかの判断を行う。自動操作が正常に終了しなかったとき、以降のテストケースの操作を取りやめるには、７０４にチェックを入れる。
テストケースに追加する操作が手動操作の場合は、手動操作の手順が記述されたHTMLファイルのＵＲＬ（７０５）を指定する。手動操作が正常に行われなかったときに、以降のテストケースの操作を取りやめるには、７０６のチェックの情報を元に判断する。
【００１９】
図８は、テストケースを実行するときの手動操作の手順および手動操作を行う仮想マシンの一覧を示す画面であり、図５の「テストケース実行」ボタン（５０１）を押すと表示される。
手動操作手順(８０１)は、手動操作の順序（８０４）と、手動操作を行う仮想マシンの一覧（８０５）を示す。テストを行う際、次に行う手動操作または現在行う手動操作は、矢印(８０２)で示され、手動操作とテストマシンの一覧は、枠（８０３）で囲まれ表示される。
テスト管理者（１０８）は手動操作手順(８０１)の情報を元にテストの進捗と、手動操作を行うテストマシンを確認できる。また、テストケース全体の進捗を示す棒グラフ（８０６）が表示され、テストの進捗を確認する。
【００２０】
図９は、仮想マシン（１０３）の表示部に表示される手動操作の手順内容および手動操作の操作結果を送信するフォームである。
手動操作手順（９０１）に手動操作の指示内容が表示されている。オペレータ（１０７）は９０１の内容に基づいて手動操作を行う。手動操作が完了すると、手動操作の結果をコントローラ（１０１）に返信するため、「問題なく完了」ボタン（９０３）または「問題が発生し終了」ボタン（９０２）を押す。補足事項があれば、「コメント記入欄」（９０４）に記入する。
【００２１】
図１０は、テストマシン（仮想マシン）の一覧を格納したデータ構造の一例であり、１００１は一意な値であり、１００２にテストマシン名が格納される。
【００２２】
図１１は、テストケース名を格納するデータ構造の一例であり、テストＩＤ（１１０１）は一意な値である。１１０２にテストケース名が格納される。
【００２３】
図１２は、テストケースに含まれる操作情報を格納したデータ構造の一例である。
操作ＩＤ（１２０１）は一意な値である。テストＩＤ（１２０２）は、１１０１と外部キーの関係にある。前操作ＩＤ（１２０３）は、以前の操作ＩＤ（１２０１）の値が外部参照し、以前の操作ＩＤがないときは別の値（ＮＵＬＬや０など）が格納される。
操作名は１００５に格納される。手動操作であり自動操作でないことを示すため、手動操作フラグ（１２０５）にＴｒｕｅ、Ｆａｌｓｅなどの値が格納される。手動操作フラグ（１２０５）には図７の７０１の設定情報が格納される。
内容ＩＤ（１２０６）は、手動操作フラグ（１２０５）の値が手動操作を示すのであれば図１４の内容ＩＤ（１４０１）を外部参照する。１２０５の値が自動操作であれば、図１３の内容ＩＤ（１３０１）を外部参照する。
戻り値（１２０７）は自動操作または手動操作が成功したときの戻り値を示し、操作実行後の戻り値と比較することで、操作の成功・失敗を判断する。自動操作の戻り値（１２０７）の場合、図７の７０３の値が格納される。
エラー時中断フラグ（１２０８）は、操作が失敗したときテストケースを中断するかどうかを示すフラグを指す。エラー時中断フラグ（１２０８）は、図７の７０４、７０６の設定が入力される。
【００２４】
図１３は、自動操作で使用するテストスクリプト情報が格納されるデータ構造の一例である。内容ＩＤ（１３０１）は一意な値である。テストスクリプトのファイルパスは１３０２に格納される。１３０２には図７のスクリプトパス（７０２）が設定される。
【００２５】
図１４は、手動操作のドキュメントファイル情報が格納されるデータ構造の一例である。
内容ＩＤ（１４０１）は一意な値である。１４０２はコントローラ（１０１）のローカルディスクに存在するＨＴＭＬファイルのパスが入力される。１４０１には、図７の７０５の情報が格納される。
【００２６】
図１５は、テストケースの操作を実行した後の結果ログを格納するデータ構造の一例である。
記録ＩＤ（１３５１）は一意な値を示す。
操作ＩＤ（１５０２）は、図１２の操作ID（１２０１）と外部キーの関係にある。前操作ＩＤ（１５０３）は以前の操作ＩＤを示し、図１２の操作ID（１２０１）と外部キーの関係にある。操作開始日時（１５０４）は操作を開始したときの日時を示し、操作終了日時（１５０５）は操作終了時の日時を示す。操作の戻り値は１５０６に格納される。操作が成功したときは、成功（１５０７）フラグにＴｒｕｅまたはＦａｌｓｅが格納される。コメント（１５０８）は手動操作時のコメントが格納される。手動操作の場合、図９の「問題が発生し終了」（９０２）またはまたは「問題なく終了」（９０３）の情報が戻値（１５０６）に格納され、コメント情報（９０４）がコメント（１５０８）に格納される。
【００２７】
図１６は、テストマシンを追加する際の処理の流れを示すフローチャートである。
図４の画面からテストマシンが追加されると（ステップ１６０１）、コントローラ（１０１）はテスト実行マシンの一覧を図１０の形式でデータベースに登録する（ステップ１６０２）。
【００２８】
図１７は、テストケースの追加と、テストケースに含まれる自動操作または手動操作を追加する際の処理の流れを示すフローチャートである。
図６のテスト操作管理画面でテストケースを追加し、図７のテスト操作登録画面で自動操作または手動操作を追加するときの処理の流れである。
テストケース名は、図１１のテスト名（１１０２）に登録され、自動操作と手動操作の内容は、図１２、図１３、図１４に登録される。
コントローラ（１０１）は、テスト名が入力され（ステップ１７０１）、操作の追加を行うか否かに応じて自動操作または手動操作の内容が入力されると（ステップ１７０２，１７０３）、テスト名、自動操作・手動操作の一覧をデータベースに登録する（ステップ１７０４）。
【００２９】
図１８は、手動操作をなるべく同時にテストマシンに配信できるようにテストケースを並べ替える処理の流れを示し、図１４のテスト並べ替えロジック部（１０１２）の処理のフローチャートである。個々では、テストケースから手動操作を抽出（ステップ１８０１）し、テストを並べ替える処理を行う（ステップ１８０２）。
【００３０】
図１９は、図１８の手動操作抽出処理（ステップ１８０１）の処理の流れを示すフローチャートである。手動操作抽出処理（ステップ１９０１）の処理を行うと、テストケースの手動操作が得られる。テストケースごとに操作を取得（ステップ１９０２）し、手動操作であれば（ステップ１９０３、１９０４）、その手動操作を格納（ステップ１９０５）する。この処理を最後のテストケースになるまで繰り返す（ステップ１９０６，１９０７，１９０８）。
【００３１】
図２０は、図１８のテスト並べ替え操作（ステップ１８０２）の処理を示すフローチャートである。
図１８の処理により抽出された手動操作を元に、テストケースの並べ替えを行う。
「テストの並べ替え（Ｋ,テスト一覧）」のＫは、Ｋ番目の操作で並べ替えを行うことを示す。「テストの並べ替え（Ｋ,テスト一覧）」は、再起的に処理（ステップ２００７）を行う。全てのテストを最初の操作（Ｋ＝１）から順に、テストの並べ替え（ステップ２００３）を行う。Ｋ番目の操作が同じであるテストを、更に「テストの並べ替え（Ｋ＋１,テスト一覧）」（ステップ２００７）によって、Ｋ＋１番目の操作でソートする。操作がなくなるまで繰り返すと、全てのテストケースの並べ替えが行われる。
まず、Ｋ番目の操作がある場合には（ステップ２００２）、「テスト一覧」のテストの順番をＫ番目の操作でソートする（ステップ２００３）。次に、Ｋ番目の操作の種類を抽出し（ステップ２００４）、Ｋ番目の操作の種類を順に選択する（ステップ２００５）。
【００３２】
次に、テスト一覧２に対し、Ｋ番目の操作が、選択した操作に一致するテストを抽出する（ステップ２００６）。
次に、テスト一覧３に対し、テストの並べ替え(Ｋ＋１, テスト一覧２)を行い（ステップ２００７）、次に「テスト一覧３」で「テスト一覧」の「テスト一覧２」のテストを置換する（ステップ２００８）。
次に、Ｋ番目の操作のうち選択していない操作がないかどうかを判定し（ステップ２００９）、ない場合には「テスト一覧」を返し（ステップ２０１０）、ある場合にはステップ２００５に戻り、処理を繰り返す。
【００３３】
図２１は、並び替えられたテストケースから、自動操作または手動操作を順に配信処理を行うフローチャートである。
図１２の操作配信ロジック部（１０１３）の処理を示す。
図８の手動操作一覧（８０１）は、図２１〜図２５の処理を行った後の操作配信キューの結果から得られる。
まず、並び替えられたテストケースの最初（ステップ２１０１）から、空いている操作配信キューに割り当てる（ステップ２１０６）。
１つ以上の操作配信キューのうち、１つをカレントキューに指定し（ステップ２１０５）、カレントキューの手動操作に合わせて他の操作配信キューの手動操作を配信する（ステップ２１１０）。ここで手動操作の前に自動操作が存在していたときは配信しておく（ステップ２１０９）。
【００３４】
まず、テスト番号Ｔを“０”に初期化する（ステップ２１０１）。
次に、テスト番号Ｔは総テスト件数より小さいか否かを判定し（ステップ２１０２）、小さい場合はステップ２１０３に進み、大きい場合には終了する。
ステップ２１０３では、操作配信キューのキュー番号Ｑを初期化する。
次に、キューを順にループし、キュー番号Ｑ≧０、かつキュー番号Ｑ＜テストマシン数かを判定し（ステップ２１０４）、そうであればカレントキューＣＱの処理を行い（ステップ２１０５）、そうでなければステップ２１０２に戻る。
ステップ２１０５の処理を行った後、キュー番号Ｑの操作配信キューにテスト番号Ｔのテストケースを割り当てる処理を行い（ステップ２１０６）、キュー番号Ｑに割り当てられているテスト番号ＴＮを求める（ステップ２１０７）。
次に、キュー番号Ｑの操作配信キューにテストケースが割り当てられているかを判定し（ステップ２１０８）、割り当てられているならば、テスト番号ＴＮのテストケースの自動操作を配信する処理を行う（ステップ２１０９）。割り当てられていない場合にはステップ２１００に進む。
ステップ２１０９の後、テスト番号ＴＮのテストケースの手動操作を配信する処理を行い（ステップ２１１０）、次の操作配信キューを選択し（ステップ２１１１）、ステップ２１０４に戻る。
【００３５】
図２２は、図２１の操作配信キューの中からカレントキューＣＱを選択する処理（ステップ２１０５）の流れを示すフローチャートである。
個々では、カレントキューＣＱの操作をすべて配信したかどうかを判定し（ステップ２２０１）、配信していたならばカレントキューＣＱ番号を次の操作配信キューに移し（ステップ２２０２）、カレントキューＣＱ番号が最後のキュー番号であるときは初期値に戻す処理（ステップ２２０３）を行って終了する。
【００３６】
図２３は、図２１のキュー番号Ｑの操作配信キューにテスト番号Ｔのテストを割り当てる処理（ステップ２１０６）の処理の流れを示すフローチャートである。
ここでは、操作配信キューの操作を全て配信したのであれば（ステップ２３０１）、配信されていないテストケースが存在することを確認し（ステップ２３０４）、その操作配信キューに次のテストケースを割り当てる（ステップ２３０５）。配信されていないテストケースがなければ、操作配信キューを空にする（ステップ２３０６）。
【００３７】
詳しくは、キュー番号Qの操作配信キューに割り当てられたテストケースが終了している、または割り当てられていないかを判定し（ステップ２３０１）、終了している、または割り当てられていないならば、操作番号ＯＰＮを“０”に初期化し（ステップ２３０２）、テスト番号ＴをＴ＋１に繰り上げる（ステップ２３０３）。
次に、テスト番号Ｔのテストケースが存在し、かつテスト番号Ｔ≦総テスト件数であるかを判定し（ステップ２３０４）、そうであれば、キュー番号Ｑの操作配信キューに、テスト番号Ｔのテストケースを割り当てる（ステップ２３０５）。そうでなければ、キュー番号Ｑの操作配信キューを空にする（ステップ２３０６）。
【００３８】
図２４は、図２１におけるテスト番号ＴＮのテストケースの自動操作を配信する処理（２１０９）を示すフローチャートである。
ここでは、テストケースの操作の中で、次に配信する操作が自動操作であれば（ステップ２４０２）、次に配信する操作が手動操作になるまで操作配信キューに入れる（ステップ２４０３）。テストケースの残りの操作がなくなった時は終了する（ステップ２４０５）。
【００３９】
詳しくは、テスト番号ＴＮの操作番号ＯＰＮで示される操作内容ＯＰを取得し（ステップ２４０１）、操作内容ＯＰは自動操作であるかを判定し（ステップ２４０２）、自動操作であれば操作内容ＯＰをキュー番号Ｑの操作配信キューに入れる（ステップ２４０３）。
次に、テスト番号ＴＮの次の操作番号ＯＰＮで示される操作内容ＯＰを取得し（ステップ２４０４）、テスト番号ＴＮの操作がなく、かつテストケースが終了したかを判定し（ステップ２４０５）、そうであれば処理を終了する。
ステップ２４０２において、操作内容ＯＰが自動操作でなければ処理を終了する。
【００４０】
図２５は、図２１におけるテスト番号ＴＮのテストケースの手動操作を配信する処理（２１１０）を示すフローチャートである。
ここでは、操作配信キューがカレントキューであれば（ステップ２５０２）、手動操作を操作配信キューに入れる（ステップ２５０６）。操作配信キューがカレントキューでなければ（ステップ２５０２）、カレントキューである操作配信キューの手動操作と比較し（ステップ２５０５）、同じであれば手動操作を操作配信キューに入れる（ステップ２５０６）。
【００４１】
詳しくは、テスト番号ＴＮのテストケースが終了していないかを判定し（ステップ２５０１）、終了していないときはキュー番号Ｑとカレントキュー番号ＣＱは一致していないかを判定し（ステップ２５０２）、一致しているならばステップ２５０６に進む。
しかし、一致しているならば、次にカレントキューＣＱにテストケースが割り当てられ、かつテストケースは終了していないかを判定し（ステップ２５０３）、そうであれば、カレントキューＣＱに割り当てられたテストケースの手動操作ＣＯＰを取得する（ステップ２５０４）。そして、キュー番号Ｑの操作内容ＯＰと手動操作ＣＯＰが同じであるかを判定し（ステップ２５０５）、そうであれば、操作内容ＯＰをキュー番号Ｑの操作配信キューに入れる（ステップ２５０６）。次に、操作番号ＯＰＮを「操作番号ＯＰＮ＋１」としてテストケースの操作を進める（ステップ２５０７）。
ステップ２５０において、テストケースが終了していた場合は処理を終了する。また、ステップ２５０５において、キュー番号Ｑの操作内容ＯＰと手動操作ＣＯＰが同じでない場合には処理を終了する。
【００４２】
図２６は、図２の遠隔命令送信部（１０１４）での処理の流れを示すフローチャートである。
ここでは図２１から図２５までの処理により得られた操作配信キューからテスト操作情報を配信し（ステップ２６０５）、操作の実行結果を得て、以降の操作を中断するかどうかを判断する（ステップ２６０３、ステップ２６０７）。
【００４３】
詳しくは、ＳｋｉｐＴｅｓｔをＮＵＬＬに初期化した後（ステップ２６０１）、操作配信キューの操作ＯＰと操作ＯＰに対応するテスト番号Ｔを得る（ステップ２６０２）。
次に、テスト番号Ｔはスキップ対象のテストではないか（テスト番号Ｔ≠ＳｋｉｐＴｅｓｔ）を判定し（ステップ２６０３）、スキップ対象のテストではない場合には、ＳｋｉｐＴｅｓｔをＮＵＬＬに初期化し（ステップ２６０４）、次に、操作ＯＰを操作配信キューに対応したエージェント１０４に配信する（ステップ２６０５）。
次に、操作ＯＰの実行結果を得（ステップ２６０６）、操作ＯＰの実行結果が失敗、かつ操作失敗時にテストを中断する設定があるかを判定し（ステップ２６０７）、そうでなければステップ２６０９に進む。
しかし、操作ＯＰの実行結果が失敗、かつ操作失敗時にテストを中断する設定がある場合には、ＳｋｉｐＴｅｓｔにテスト番号Ｔを設定し、スキップ対象のテストに指定する（ステップ２６０８）。
次に、操作配信キューの操作ＯＰと操作ＯＰに対応するテスト番号Ｔを得る（ステップ２６０９）。
【００４４】
図２７は、図２１から図２５までの処理により得られた操作配信キューから、図８の手動操作手順一覧８０１を生成するフローチャートである。
ここでは、全ての操作配信キューから操作内容を取得し（ステップ２７０１）、手動操作であれば（ステップ２７０３）、手動操作を配信するテストマシンと対応付けて、操作手順一覧に追加する（ステップ７６０５）。
【００４５】
詳しくは、全ての操作配信キューから操作を得る（ステップ２７０１）。次に、操作配信キューに操作が残っているかを判定し（ステップ２７０２）、残っていなければ処理を終了する。
しかし、残っているならば、次に手動操作であるかを判定し（ステップ２７０３）、そうであれば手動操作を行う操作配信キューから操作を行うテストマシンを求める（ステップ２７０４）。
次に、手動操作と操作を行うテストマシンを対応付け、一覧に追加する（ステップ２７０５）。
【００４６】
図２８は、テストマシンエージェント（１０４）に手動操作の命令が届いたときの、テストマシンエージェント（１０４）と手動操作説明表示部（１０３２）の処理の流れを示すフローチャートである。
ここでは、手動操作説明表示部（１０３２）は、手動操作配信部（１０１８）へ手動操作手順を要求し（ステップ２８０２）、得られた手動操作の内容を順にテストマシンのデスクトップ上に表示する（ステップ２８０３）。オペレータ（１０７）は表示された手動操作内容に基づき手動操作を行う（ステップ２８０４）。手動操作が完了すると、オペレータは結果をフォームから返信する（ステップ２８０６）。手動操作配信部（１０１８）は、手動操作結果を受信し（ステップ２８０７）、その結果を元に遠隔命令送信部（１０１４）は以降のテストケースの操作を続行するか判断する（ステップ２８０７）。
【００４７】
詳しくは、テストマシンエージェント（１０４）は手動操作手順を表示する命令を受信する（ステップ２８０１）。そして、手動操作説明表示部（１０３２）は手動操作配信部（１１８）へ手動手順の要求を出す（ステップ２８０２）。
次に、手動操作内容が届き、その内容を手動操作説明表示部（１０３２）に表示する（ステップ２８０３）。
オペレータは表示された手動操作内容のうち現在の時点で操作すべき指示マークがある手動操作内容の手動操作を行う（ステップ２８０４）。
次に、手動操作が完了したかを判定し（ステップ２８０５）、終了しているならば、オペレータは手動操作結果をフォームから返信する（ステップ２８０６）。次に、手動操作配信部（１０１８）は、手動操作の結果を受信する（ステップ２８０８）。
ステップ２８０５において、手動操作が完了していない場合には、完了するまで待機する（ステップ２８０８）。
【００４８】
図２９は、図２の手動操作配信部（１０１８）に手動操作説明表示部（１０３２）から手動操作手順の要求があったときに、手動操作配信部（１０１８）が行う処理の流れを示すフローチャートである。
手動操作配信部（１０１８）は、手動操作説明表示部（１０３２）から手動操作手順の要求があったとき、操作手順ＨＴＭＬファイル（１０１９）を読み出し（ステップ２９０２）、手動操作結果を返信するためのフォームを挿入（ステップ２９０４）する。生成された手動操作手順は、手動操作説明表示部（１０３２）に伝達され（ステップ２９０５）、仮想マシン（テストマシン）（１０３）のデスクトップ上に、図９のような形式で表示される。
【００４９】
詳しくは、仮想マシン（１０３）から特定のWebページを開き（ステップ２９０１）、該当する操作手順ＨＴＭＬファイルを読み出す（ステップ２９０２）。
次に、手動操作結果をコントローラ（１０１）に送信するためのＨＴＭＬコードを生成し（ステップ２８０３）、＜/BODY＞タグの直前に挿入する（ステップ２９０４）。そして、ＨＴＭＬコードをテストマシンエージェント（１０４）に送信する（ステップ２９０５）。
図９の手順本文（９０１）は、操作手順ＨＴＭＬファイル（１０１９）の内容であり、結果送信のためのフォーム（９０２、９０３、９０４）は、挿入された図３０のＨＴＭＬコードである。
【００５０】
図３０は、図２９のＨＴＭＬコード挿入処理（ステップ２９０４）により挿入されるＨＴＭＬコードの例ある。仮想マシン（１０３）のデスクトップ上では、図９の操作結果送信のためのフォーム（９０２、９０３、９０４）として表示される。
【００５１】
以降、自動操作と手動操作で組み合わされたテストケースの例を説明する。
図３１は、自動操作と手動操作で組み合わされたテストケースの例を示す図である。
左列がテストケース名を示す。横軸が、テストに必要な操作の順番を示し、操作名が「自動」で始まる場合は自動操作を示し、操作名が「手動」で始まる場合は手動操作であることを示す。
例えばテストケース名＝テスト１の操作順序については、「自動２」、「自動３」、「手動１」、「手動１」の順で操作が行われることを示している。
【００５２】
図３２は、図３１のテストケースから手動操作のみを抽出した操作一覧であり、図１９に示すフローチャートの処理を行った結果であり、テストケースは並び替えられていない。
【００５３】
図３３は、図３２の手動操作の抽出結果を元に、テストケースの並び替えを行った図である。図２０に示すフローチャートの処理を行った結果である。
【００５４】
図３４は、図３３のテストケースの並べ替え順序を元に、図３１のテストケースを並べ替えた図である。
【００５５】
図３５は、図３４の並べ替えられたテストケースを元に、図２１から図２５までのフローチャートの処理を行ったときの、操作配信キューを示す図である。
図３５では操作配信キューが３つ存在することを想定している。テストケース名の下線は、カレントキューであることを示し、操作配信キューのテストケースが終了するとカレントキューが移り変わる様子を示している。カレントキューの手動操作に合わせて他の操作配信キューの手動操作の配信のタイミングがずらされている状況を示している。
【００５６】
図３６は、図３５の操作配信キューの情報を元に、手動操作の順序と手動操作を行うテストマシンの一覧を示す図である。図３６の手動操作の情報を元に、図８の手動操作手順一覧８０１が表示される。
【００５７】
以上説明した実施形態によれば、
（１）テスト操作情報を構成する手動操作指示情報を並べ替えることにより、１台以上のテストマシンで同じ手動操作を行う発生頻度が高くなる。
（２）１台以上のテストマシンで同じ手動操作を行う頻度が高くなるため、オペレータによる誤操作が減少し、テストを効率良く実施することができる。
（３）手動操作の手順と、操作が必要なテストマシンの一覧を表示することにより、テストに必要な手動操作の進捗が分かるという効果がある。
【００５８】
なお、上記実施形態においては、複数のテスト対象プログラムを複数の仮想マシンに実装してテストを実施しているが、仮想マシンでなく、独立したマシンで実施する場合であっても同様に適用できることは言うまでもない。
【図面の簡単な説明】
【００５９】
【図１】本発明の一実施の形態を示すシステム構成図である。
【図２】図１のコントローラ、テストマシンエージェントの詳細構成を示す機能ブロック図である。
【図３】同一の手動操作内容の手動操作が同じタイミングで実行されるように手動操作指示情報を並べ替えた例を示す説明図である。
【図４】テストマシンを登録する際の画面例を示す図である。
【図５】テストケースを追加し、テストケースの実行結果を参照するためのテスト管理画面の例を示す図である。
【図６】テストケースに含まれる操作を追加するための画面例を示す図である。
【図７】自動操作、手動操作を設定するための画面例を示す図である。
【図８】テストケースの手動操作およびテストマシンの一覧と、テストの進捗を示す画面例を示す図である。
【図９】テストマシン上に表示される手動操作手順と結果返信フォームの表示例を示す図である。
【図１０】テストマシン情報のデータ構成図である。
【図１１】テストケース名のデータ構成図である。
【図１２】テストの操作情報を格納するデータ構成図である。
【図１３】テストスクリプトファイルのパスを格納するデータ構成図である。
【図１４】手動操作手順ファイルのパスを格納するデータ構成図である。
【図１５】テスト操作の結果を記録するデータ構成図である。
【図１６】テストマシンの登録処理を行うフローチャートである。
【図１７】テストケース及びテスト操作を登録するフローチャートである。
【図１８】テスト操作並べ替えを行うフローチャートである。
【図１９】手動操作情報の抽出を行うフローチャートである。
【図２０】手動操作情報に基づきテストケースを並べ替えるフローチャートである。
【図２１】テストケースの操作情報を配信する際の操作配信キューへの操作の割り当てを示すフローチャートである。
【図２２】カレントキューの割り当て処理を示すフローチャートである。
【図２３】操作配信キューにテストケースを割り当てるための処理の流れを示すフローチャートである。
【図２４】テストケースの自動操作情報を配信するための処理の流れを示すフローチャートである。
【図２５】テストケースの手動操作指示情報を配信するための処理の流れを示すフローチャートである。
【図２６】操作配信キューの処理の流れを示すフローチャートである。
【図２７】操作配信キューから手動操作と配信するテストマシン一覧を求める処理の流れを示すフローチャートである。
【図２８】テストマシン上での手動操作手順の表示と、操作結果の返信処理の流れを示すフローチャートである。
【図２９】手動操作手順のＨＴＭＬコードを生成する際の処理の流れを示すフローチャートである。
【図３０】手動操作結果の返信フォームのＨＴＭＬコードの例を示す図である。
【図３１】操作配信キューの処理の流れを示すためのテストの例を示す図である。
【図３２】テストから手動操作のみが抽出されたテストの例を示す図である。
【図３３】手動操作によってソートされたテストの例を示す図である。
【図３４】ソートされたテストの自動操作と手動操作の例を示す図である。
【図３５】操作配信キューにテスト操作を配信したときの例を示す図である。
【図３６】操作配信キューから手動操作が必要な仮想マシンを示す例を示す図である。
【符号の説明】
【００６０】
１０１    コントローラ
１０２    ホストマシン
１０３    仮想マシン（テストマシン）
１０４    テストマシンエージェント
１０５    ホストエージェント
１０７    オペレータ
１０８    テスト管理者
１０１１    テスト情報データベース
１０１２    テスト並べ替えロジック部
１０１３    操作配信ロジック部
１０１４    遠隔命令送信部
１０１５    テストスクリプト
１０１６    エージェントスクリプト
１０１７    実行結果データベース
１０１８    手動操作配信部
１０１９    操作手順ＨＴＭＬファイル
１０３２    手動操作説明表示部
【図１】
2010026706.tif 000003
【図２】
2010026706.tif 000004
【図３】
2010026706.tif 000005
【図４】
2010026706.tif 000006
【図５】
2010026706.tif 000007
【図６】
2010026706.tif 000008
【図７】
2010026706.tif 000009
【図８】
2010026706.tif 000010
【図９】
2010026706.tif 000011
【図１０】
2010026706.tif 000012
【図１１】
2010026706.tif 000013
【図１２】
2010026706.tif 000014
【図１３】
2010026706.tif 000015
【図１４】
2010026706.tif 000016
【図１５】
2010026706.tif 000017
【図１６】
2010026706.tif 000018
【図１７】
2010026706.tif 000019
【図１８】
2010026706.tif 000020
【図１９】
2010026706.tif 000021
【図２０】
2010026706.tif 000022
【図２１】
2010026706.tif 000023
【図２２】
2010026706.tif 000024
【図２３】
2010026706.tif 000025
【図２４】
2010026706.tif 000026
【図２５】
2010026706.tif 000027
【図２６】
2010026706.tif 000028
【図２７】
2010026706.tif 000029
【図２８】
2010026706.tif 000030
【図２９】
2010026706.tif 000031
【図３０】
2010026706.tif 000032
【図３１】
2010026706.tif 000033
【図３２】
2010026706.tif 000034
【図３３】
2010026706.tif 000035
【図３４】
2010026706.tif 000036
【図３５】
2010026706.tif 000037
【図３６】
2010026706.tif 000038