説明

プログラムの遠隔テスト実行システム

【課題】 複数のテスト対象プログラムをテストするに際し、別々のタイミングの手動操作に起因するオペレータの操作誤りを減少させ、テストを効率良く実施すること。
【解決手段】 テスト操作情報を配信するコンピュータが、複数のテストマシンのそれぞれに配信するテスト操作情報から自動操作情報と手動操作指示情報とを抽出し、同一内容の手動操作が複数のテストマシンの全てまたは一部で同じタイミングで実行されるように各テストマシンに対する手動操作指示情報を並べ替える手段と、並べ替えた手動操作指示情報と自動操作情報とからなるテスト操作情報を複数のテストマシンのそれぞれに配信する手段とを備え、複数のテストマシンが、配信されたテスト操作情報に従い各テストマシンに実装されたテスト対象プログラムのテストを実行する手段とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のテストマシンに実装したテスト対象のプログラムに対し、テスト操作情報や関連情報を配信し、各テストマシン上でテスト操作を実行するプログラムの遠隔テスト実行システムに関するものである。
【背景技術】
【0002】
テスト対象のプログラムに対するテスト操作を遠隔のコンピュータ上で実行する方法はあり、コンピュータを連携させてテストを行うことは可能である。操作内容はスクリプトなどにより記述されたプログラムとして表現され、プログラムを実行することで、遠隔のコンピュータ上でテスト操作を再現する。プログラムはスクリプトなどの汎用的な言語で記述されるため、プログラム中で独自の処理を行うことが可能である。
テスト対象プログラムは同時並行に実行が可能であるので、複数のテストマシン上でテストを行うことも可能である。もし全てのテスト操作がスクリプトなどにより自動的に操作可能であり、手動操作を伴わないのであれば、連続して操作を継続することが可能である。なお、本発明に関連する公知技術文献としては下記の特許文献1がある。
【0003】
【特許文献1】特開2008−40537「GUIテスト支援システム及びテスト支援用アプリケーションプログラム」
【特許文献2】特開2006−127000「プログラム遠隔起動装置及び方法並びにプログラム」
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、テストケース(テスト内容)の一連のテスト操作の中に手動操作が含まれると、自動的な操作を行うことができないため、テスト操作の実行を中断しなければならず、手動操作を行った後、残りのテストケースの実行を再開する必要がある。
通常、ログイン、変数入力、オブジェクトのクリック操作などの手動操作はテスト対象プログラム(テストマシン)毎に別々のタイミングで発生する。このため、複数のテスト対象プログラム(テストマシン)毎に別々のタイミングで手動操作が発生すると、オペレータが操作を誤り、テストが正常に行われない恐れがある。
本発明は、複数のテスト対象プログラムをテストするに際し、別々のタイミングの手動操作に起因するオペレータの操作誤りを減少させ、テストを効率良く実施することができるプログラムの遠隔テスト実行システムを提供することである。
【課題を解決するための手段】
【0005】
上記目的を達成するために、本発明に係るプログラムの遠隔テスト実行システムは、テスト対象のプログラムを実装した複数のテストマシンのそれぞれに対しテスト操作情報を配信するコンピュータと、配信されたテスト操作情報に従いテスト対象プログラムのテストを実行する複数のテストマシンから構成された遠隔テスト実行システムにおいて、
前記テスト操作情報を配信するコンピュータが、複数のテストマシンのそれぞれに配信するテスト操作情報から自動操作情報と手動操作指示情報とを抽出し、同一内容の手動操作が複数のテストマシンの全てまたは一部で同じタイミングで実行されるように各テストマシンに対する手動操作指示情報を並べ替える手段と、並べ替えた手動操作指示情報と自動操作情報とからなるテスト操作情報を複数のテストマシンのそれぞれに配信する手段とを備え、
前記複数のテストマシンが、
前記コンピュータから配信されたテスト操作情報に従い各テストマシンに実装されたテスト対象プログラムのテストを実行する手段とを備える
ことを特徴とする。
また、前記コンピュータが、同一の手動操作指示情報による手動操作の内容とその内容のテストを実行するテストマシンの一覧を表示する手段をさらに備えることを特徴とする。
また、前記テストマシンのそれぞれが、手動操作指示情報で示される手動操作内容を操作順に表示する手段をさらに備えることを特徴とする。
【発明の効果】
【0006】
本発明の遠隔テスト実行システムによれば、次のような効果がある。
(1)テスト操作情報を構成する手動操作指示情報を並べ替えることにより、1台以上のテストマシンで同じ手動操作を行う発生頻度が高くなる。
(2)1台以上のテストマシンで同じ手動操作を行う頻度が高くなるため、オペレータによる誤操作が減少し、テストを効率良く実施することができる。
(3)手動操作の手順と、操作が必要なテストマシンの一覧を表示することにより、テストに必要な手動操作の進捗が分かる。
【発明を実施するための最良の形態】
【0007】
以下、本発明を適用した遠隔テスト実行システムの一実施の形態について説明する。
図1は本発明の実施の形態を示すシステム構成図である。
この実施形態のシステムは、コントローラ(101)と呼ばれるコンピュータと、ホストマシン(102)および仮想マシン(103)とで構成されている。
コントローラ(101)は、ホストマシン(102)の複数の仮想マシン(103)にそれぞれ実装されたテスト対象プログラムのテストを行うためのテスト操作情報を配信するコンピュータである。
ホストマシン(102)には、1台以上の仮想マシン(103)が動作する。コントローラ(101)とホストマシン(102)および複数の仮想マシン(103)は、ネットワーク(106)を介して通信する。
ホストマシン(102)にはホストエージェント(106)が動作し、複数の仮想マシン(103)には仮想マシンエージェント(104)が動作する。
コントローラ(101)は、仮想マシンエージェント(104)に対し、テスト操作の命令などの各種情報を送信し、仮想マシンエージェント(104)は命令に基づいて仮想マシン(103)にそれぞれ実装されたテスト対象プログラムのテスト操作を行う。
コントローラ(101)は、ホストエージェント(106)に命令を送信し、仮想マシン(103)の起動やシャットダウン、および初期化を行う。
テスト管理者(108)は、コントローラ(101)上でテスト操作情報を登録し、テストを実行し、テストの進捗及びテスト結果の確認を行う。オペレータ(107)は、仮想マシン(103)上で手動操作指示情報に従い手動操作を行う。
【0008】
図2は、コントローラ(101)、ホストマシン(102)の詳細構成を示す機能ブロック図である。
図2において、テスト情報データベース(1011)には図10〜図14に示すようなテスト操作に関する情報が格納される。
テスト並べ替えロジック部(1012)は、1つ以上のテスト操作情報から手動操作指示情報のみを抽出する機能と、テスト操作情報を並べ替える機能で構成される。
操作配信ロジック部(1013)は、1台以上のテストマシンで同じ手動操作を同じタイミングで実行するように、テスト操作情報の配信を制御する。
【0009】
本発明では、図3に例示するように、複数のテストマシンに対して手動操作とスクリプトによる自動操作で構成されるテスト操作情報を操作配信キューとして配信するが、その配信の際に、同一の手動操作は同じタイミングで実施されるように並べ替えて配信する。
例えば、図3において、「手動1」、「手動2」という手動操作があるが、これら「手動1」、「手動2」の手動操作は同じ(またはほぼ同じ)タイミングで行われるように並び替えて配信する。この場合、タイミングを調整するために図3に空白欄で示す「何もしない」時間帯を挿入している。
なお、「手動1」、「手動2」の具体例は、ログイン、変数入力、クリック操作によるオブジェクト指定、ドラッグ&ドロップなどの操作である。
【0010】
遠隔命令送信部(1014)は、自動操作情報と手動操作指示情報を遠隔の仮想マシン(103)上のテストマシンエージェント(104)へ配信し、操作結果が失敗であると判断されるときは、以降のテストケースの操作を中断するかどうかの判断を行う。
テストスクリプト(1015)は、遠隔命令送信部(1014)が自動操作情報を配信する際に、テストマシンエージェント(104)が行う動作を定義したファイルである。
テスト(1015)は、図7のテスト操作登録画面のテストスクリプト(702)で設定されるファイルであり、図13のファイルパス(1302)に格納されているファイルである。
エージェントスクリプト(1016)は、遠隔命令送信部(1014)からテストマシンエージェント(104)へ転送され、テストマシンエージェント(104)上で実行されるスクリプトファイルである。テストスクリプト(1015)にエージェントスクリプト(1016)の転送と実行処理が定義されている。
【0011】
テストマシンエージェント(104)は、遠隔命令送信部(1014)から配信されたテスト操作情報に基づき、自動操作と手動操作によるテストを仮想マシン(103)上で実行する。
自動操作時は、テストスクリプト(1015)に記述された命令に基づいて動作し、エージェントスクリプト(1016)が転送された場合はエージェントスクリプト(1016)を実行する。実行結果はテストマシンエージェント(104)から遠隔命令送信部(1014)へ返信される。
手動操作時は、手動操作説明表示部(1032)により、コントローラ(101)の手動操作配信部(1018)へ手動操作内容の要求を行い、手動操作の表示を行う。
【0012】
コントローラ(101)の手動操作配信部(1018)は、要求のあった手動操作の内容に従い、操作手順HTMLファイル(1019)を読み出し、操作結果返信フォームを結合して、手動操作内容を生成する。手動操作内容は、図9に示す内容である。
操作結果返信フォームは、図30に示すHTMLコードで定められ、図9の902、903、904が示す手動操作の結果を送信するフォームである。
手動操作配信部(1018)は、生成した手動操作手順内容を手動操作説明表示部(1032)に伝達する。
【0013】
オペレータ(107)は、手動操作説明表示部(1032)に基づいて手動操作を行う。オペレータ(107)による手動操作が終了すると、操作結果を図9の902、903、904が示す手動操作の結果送信フォームから送信し、手動操作配信部(1018)が結果を受信する。結果は、実行結果データベース(1017)に記録され、遠隔命令送信部(1014)に伝達される。
【0014】
遠隔命令送信部(1014)は手動操作の結果から、操作が失敗したのであれば、テスト操作情報による以降の操作を配信するかどうかを判断し、操作が成功したのであれば、それ以降のテスト操作情報を配信する。
ホストエージェント(105)はホストマシン(102)ごとに1つ存在する。遠隔命令送信部(1014)の命令を元に、仮想マシン(103)の起動、シャットダウン、初期化処理を行う。
【0015】
図4はテスト管理者(108)がコントローラ(101)上で仮想マシン(103)を登録する画面である。テスト実行マシン一覧(401)に、登録された仮想マシンの一覧が表示され、テストが配信される。「追加」ボタン(402)で、仮想マシンを追加し、「登録」ボタン(403)で登録される。
【0016】
図5は、テストケース管理画面である。
テストケースの追加は「テストケース追加」ボタン(502)を押す。テストを実行するときは、実行するテストを選択し、「テストケース実行」ボタン(501)を押す。テストの実行結果ログは、503でテストを選択すると左ペイン(504)に結果一覧が表示される。
【0017】
図6は、テストケースへのテスト操作の追加を行う画面であり、図5の「テストケース追加」ボタン(502)を押したときに表示される。
テストケースは、テストツールを使用して自動的に実行できる自動操作と、テストツールによって操作できない手動操作の組み合わせで構成される。テストケースに含まれる操作の追加は、「操作追加」ボタン(603)で行う。追加されたテストケースは、操作一覧602に表示される。テストケースの操作の設定が完了すると、「登録」ボタン(604)で登録を行う。
【0018】
図7は、テストケースの自動操作または手動操作の追加画面であり、図6の「操作追加」ボタン(602)を押したときに表示される。
自動操作または手動操作を選択(701)する。自動操作を選択した場合、テストツールを実行するためにテストスクリプト(702)を指定する。テストツールによる操作結果の成否を判断するため、正常終了時のテストスクリプトの戻り値を「戻り値」(703)に指定する。実際の戻り値を703の値と比較することで自動操作が正常に終了したかどうかの判断を行う。自動操作が正常に終了しなかったとき、以降のテストケースの操作を取りやめるには、704にチェックを入れる。
テストケースに追加する操作が手動操作の場合は、手動操作の手順が記述されたHTMLファイルのURL(705)を指定する。手動操作が正常に行われなかったときに、以降のテストケースの操作を取りやめるには、706のチェックの情報を元に判断する。
【0019】
図8は、テストケースを実行するときの手動操作の手順および手動操作を行う仮想マシンの一覧を示す画面であり、図5の「テストケース実行」ボタン(501)を押すと表示される。
手動操作手順(801)は、手動操作の順序(804)と、手動操作を行う仮想マシンの一覧(805)を示す。テストを行う際、次に行う手動操作または現在行う手動操作は、矢印(802)で示され、手動操作とテストマシンの一覧は、枠(803)で囲まれ表示される。
テスト管理者(108)は手動操作手順(801)の情報を元にテストの進捗と、手動操作を行うテストマシンを確認できる。また、テストケース全体の進捗を示す棒グラフ(806)が表示され、テストの進捗を確認する。
【0020】
図9は、仮想マシン(103)の表示部に表示される手動操作の手順内容および手動操作の操作結果を送信するフォームである。
手動操作手順(901)に手動操作の指示内容が表示されている。オペレータ(107)は901の内容に基づいて手動操作を行う。手動操作が完了すると、手動操作の結果をコントローラ(101)に返信するため、「問題なく完了」ボタン(903)または「問題が発生し終了」ボタン(902)を押す。補足事項があれば、「コメント記入欄」(904)に記入する。
【0021】
図10は、テストマシン(仮想マシン)の一覧を格納したデータ構造の一例であり、1001は一意な値であり、1002にテストマシン名が格納される。
【0022】
図11は、テストケース名を格納するデータ構造の一例であり、テストID(1101)は一意な値である。1102にテストケース名が格納される。
【0023】
図12は、テストケースに含まれる操作情報を格納したデータ構造の一例である。
操作ID(1201)は一意な値である。テストID(1202)は、1101と外部キーの関係にある。前操作ID(1203)は、以前の操作ID(1201)の値が外部参照し、以前の操作IDがないときは別の値(NULLや0など)が格納される。
操作名は1005に格納される。手動操作であり自動操作でないことを示すため、手動操作フラグ(1205)にTrue、Falseなどの値が格納される。手動操作フラグ(1205)には図7の701の設定情報が格納される。
内容ID(1206)は、手動操作フラグ(1205)の値が手動操作を示すのであれば図14の内容ID(1401)を外部参照する。1205の値が自動操作であれば、図13の内容ID(1301)を外部参照する。
戻り値(1207)は自動操作または手動操作が成功したときの戻り値を示し、操作実行後の戻り値と比較することで、操作の成功・失敗を判断する。自動操作の戻り値(1207)の場合、図7の703の値が格納される。
エラー時中断フラグ(1208)は、操作が失敗したときテストケースを中断するかどうかを示すフラグを指す。エラー時中断フラグ(1208)は、図7の704、706の設定が入力される。
【0024】
図13は、自動操作で使用するテストスクリプト情報が格納されるデータ構造の一例である。内容ID(1301)は一意な値である。テストスクリプトのファイルパスは1302に格納される。1302には図7のスクリプトパス(702)が設定される。
【0025】
図14は、手動操作のドキュメントファイル情報が格納されるデータ構造の一例である。
内容ID(1401)は一意な値である。1402はコントローラ(101)のローカルディスクに存在するHTMLファイルのパスが入力される。1401には、図7の705の情報が格納される。
【0026】
図15は、テストケースの操作を実行した後の結果ログを格納するデータ構造の一例である。
記録ID(1351)は一意な値を示す。
操作ID(1502)は、図12の操作ID(1201)と外部キーの関係にある。前操作ID(1503)は以前の操作IDを示し、図12の操作ID(1201)と外部キーの関係にある。操作開始日時(1504)は操作を開始したときの日時を示し、操作終了日時(1505)は操作終了時の日時を示す。操作の戻り値は1506に格納される。操作が成功したときは、成功(1507)フラグにTrueまたはFalseが格納される。コメント(1508)は手動操作時のコメントが格納される。手動操作の場合、図9の「問題が発生し終了」(902)またはまたは「問題なく終了」(903)の情報が戻値(1506)に格納され、コメント情報(904)がコメント(1508)に格納される。
【0027】
図16は、テストマシンを追加する際の処理の流れを示すフローチャートである。
図4の画面からテストマシンが追加されると(ステップ1601)、コントローラ(101)はテスト実行マシンの一覧を図10の形式でデータベースに登録する(ステップ1602)。
【0028】
図17は、テストケースの追加と、テストケースに含まれる自動操作または手動操作を追加する際の処理の流れを示すフローチャートである。
図6のテスト操作管理画面でテストケースを追加し、図7のテスト操作登録画面で自動操作または手動操作を追加するときの処理の流れである。
テストケース名は、図11のテスト名(1102)に登録され、自動操作と手動操作の内容は、図12、図13、図14に登録される。
コントローラ(101)は、テスト名が入力され(ステップ1701)、操作の追加を行うか否かに応じて自動操作または手動操作の内容が入力されると(ステップ1702,1703)、テスト名、自動操作・手動操作の一覧をデータベースに登録する(ステップ1704)。
【0029】
図18は、手動操作をなるべく同時にテストマシンに配信できるようにテストケースを並べ替える処理の流れを示し、図14のテスト並べ替えロジック部(1012)の処理のフローチャートである。個々では、テストケースから手動操作を抽出(ステップ1801)し、テストを並べ替える処理を行う(ステップ1802)。
【0030】
図19は、図18の手動操作抽出処理(ステップ1801)の処理の流れを示すフローチャートである。手動操作抽出処理(ステップ1901)の処理を行うと、テストケースの手動操作が得られる。テストケースごとに操作を取得(ステップ1902)し、手動操作であれば(ステップ1903、1904)、その手動操作を格納(ステップ1905)する。この処理を最後のテストケースになるまで繰り返す(ステップ1906,1907,1908)。
【0031】
図20は、図18のテスト並べ替え操作(ステップ1802)の処理を示すフローチャートである。
図18の処理により抽出された手動操作を元に、テストケースの並べ替えを行う。
「テストの並べ替え(K,テスト一覧)」のKは、K番目の操作で並べ替えを行うことを示す。「テストの並べ替え(K,テスト一覧)」は、再起的に処理(ステップ2007)を行う。全てのテストを最初の操作(K=1)から順に、テストの並べ替え(ステップ2003)を行う。K番目の操作が同じであるテストを、更に「テストの並べ替え(K+1,テスト一覧)」(ステップ2007)によって、K+1番目の操作でソートする。操作がなくなるまで繰り返すと、全てのテストケースの並べ替えが行われる。
まず、K番目の操作がある場合には(ステップ2002)、「テスト一覧」のテストの順番をK番目の操作でソートする(ステップ2003)。次に、K番目の操作の種類を抽出し(ステップ2004)、K番目の操作の種類を順に選択する(ステップ2005)。
【0032】
次に、テスト一覧2に対し、K番目の操作が、選択した操作に一致するテストを抽出する(ステップ2006)。
次に、テスト一覧3に対し、テストの並べ替え(K+1, テスト一覧2)を行い(ステップ2007)、次に「テスト一覧3」で「テスト一覧」の「テスト一覧2」のテストを置換する(ステップ2008)。
次に、K番目の操作のうち選択していない操作がないかどうかを判定し(ステップ2009)、ない場合には「テスト一覧」を返し(ステップ2010)、ある場合にはステップ2005に戻り、処理を繰り返す。
【0033】
図21は、並び替えられたテストケースから、自動操作または手動操作を順に配信処理を行うフローチャートである。
図12の操作配信ロジック部(1013)の処理を示す。
図8の手動操作一覧(801)は、図21〜図25の処理を行った後の操作配信キューの結果から得られる。
まず、並び替えられたテストケースの最初(ステップ2101)から、空いている操作配信キューに割り当てる(ステップ2106)。
1つ以上の操作配信キューのうち、1つをカレントキューに指定し(ステップ2105)、カレントキューの手動操作に合わせて他の操作配信キューの手動操作を配信する(ステップ2110)。ここで手動操作の前に自動操作が存在していたときは配信しておく(ステップ2109)。
【0034】
まず、テスト番号Tを“0”に初期化する(ステップ2101)。
次に、テスト番号Tは総テスト件数より小さいか否かを判定し(ステップ2102)、小さい場合はステップ2103に進み、大きい場合には終了する。
ステップ2103では、操作配信キューのキュー番号Qを初期化する。
次に、キューを順にループし、キュー番号Q≧0、かつキュー番号Q<テストマシン数かを判定し(ステップ2104)、そうであればカレントキューCQの処理を行い(ステップ2105)、そうでなければステップ2102に戻る。
ステップ2105の処理を行った後、キュー番号Qの操作配信キューにテスト番号Tのテストケースを割り当てる処理を行い(ステップ2106)、キュー番号Qに割り当てられているテスト番号TNを求める(ステップ2107)。
次に、キュー番号Qの操作配信キューにテストケースが割り当てられているかを判定し(ステップ2108)、割り当てられているならば、テスト番号TNのテストケースの自動操作を配信する処理を行う(ステップ2109)。割り当てられていない場合にはステップ2100に進む。
ステップ2109の後、テスト番号TNのテストケースの手動操作を配信する処理を行い(ステップ2110)、次の操作配信キューを選択し(ステップ2111)、ステップ2104に戻る。
【0035】
図22は、図21の操作配信キューの中からカレントキューCQを選択する処理(ステップ2105)の流れを示すフローチャートである。
個々では、カレントキューCQの操作をすべて配信したかどうかを判定し(ステップ2201)、配信していたならばカレントキューCQ番号を次の操作配信キューに移し(ステップ2202)、カレントキューCQ番号が最後のキュー番号であるときは初期値に戻す処理(ステップ2203)を行って終了する。
【0036】
図23は、図21のキュー番号Qの操作配信キューにテスト番号Tのテストを割り当てる処理(ステップ2106)の処理の流れを示すフローチャートである。
ここでは、操作配信キューの操作を全て配信したのであれば(ステップ2301)、配信されていないテストケースが存在することを確認し(ステップ2304)、その操作配信キューに次のテストケースを割り当てる(ステップ2305)。配信されていないテストケースがなければ、操作配信キューを空にする(ステップ2306)。
【0037】
詳しくは、キュー番号Qの操作配信キューに割り当てられたテストケースが終了している、または割り当てられていないかを判定し(ステップ2301)、終了している、または割り当てられていないならば、操作番号OPNを“0”に初期化し(ステップ2302)、テスト番号TをT+1に繰り上げる(ステップ2303)。
次に、テスト番号Tのテストケースが存在し、かつテスト番号T≦総テスト件数であるかを判定し(ステップ2304)、そうであれば、キュー番号Qの操作配信キューに、テスト番号Tのテストケースを割り当てる(ステップ2305)。そうでなければ、キュー番号Qの操作配信キューを空にする(ステップ2306)。
【0038】
図24は、図21におけるテスト番号TNのテストケースの自動操作を配信する処理(2109)を示すフローチャートである。
ここでは、テストケースの操作の中で、次に配信する操作が自動操作であれば(ステップ2402)、次に配信する操作が手動操作になるまで操作配信キューに入れる(ステップ2403)。テストケースの残りの操作がなくなった時は終了する(ステップ2405)。
【0039】
詳しくは、テスト番号TNの操作番号OPNで示される操作内容OPを取得し(ステップ2401)、操作内容OPは自動操作であるかを判定し(ステップ2402)、自動操作であれば操作内容OPをキュー番号Qの操作配信キューに入れる(ステップ2403)。
次に、テスト番号TNの次の操作番号OPNで示される操作内容OPを取得し(ステップ2404)、テスト番号TNの操作がなく、かつテストケースが終了したかを判定し(ステップ2405)、そうであれば処理を終了する。
ステップ2402において、操作内容OPが自動操作でなければ処理を終了する。
【0040】
図25は、図21におけるテスト番号TNのテストケースの手動操作を配信する処理(2110)を示すフローチャートである。
ここでは、操作配信キューがカレントキューであれば(ステップ2502)、手動操作を操作配信キューに入れる(ステップ2506)。操作配信キューがカレントキューでなければ(ステップ2502)、カレントキューである操作配信キューの手動操作と比較し(ステップ2505)、同じであれば手動操作を操作配信キューに入れる(ステップ2506)。
【0041】
詳しくは、テスト番号TNのテストケースが終了していないかを判定し(ステップ2501)、終了していないときはキュー番号Qとカレントキュー番号CQは一致していないかを判定し(ステップ2502)、一致しているならばステップ2506に進む。
しかし、一致しているならば、次にカレントキューCQにテストケースが割り当てられ、かつテストケースは終了していないかを判定し(ステップ2503)、そうであれば、カレントキューCQに割り当てられたテストケースの手動操作COPを取得する(ステップ2504)。そして、キュー番号Qの操作内容OPと手動操作COPが同じであるかを判定し(ステップ2505)、そうであれば、操作内容OPをキュー番号Qの操作配信キューに入れる(ステップ2506)。次に、操作番号OPNを「操作番号OPN+1」としてテストケースの操作を進める(ステップ2507)。
ステップ250において、テストケースが終了していた場合は処理を終了する。また、ステップ2505において、キュー番号Qの操作内容OPと手動操作COPが同じでない場合には処理を終了する。
【0042】
図26は、図2の遠隔命令送信部(1014)での処理の流れを示すフローチャートである。
ここでは図21から図25までの処理により得られた操作配信キューからテスト操作情報を配信し(ステップ2605)、操作の実行結果を得て、以降の操作を中断するかどうかを判断する(ステップ2603、ステップ2607)。
【0043】
詳しくは、SkipTestをNULLに初期化した後(ステップ2601)、操作配信キューの操作OPと操作OPに対応するテスト番号Tを得る(ステップ2602)。
次に、テスト番号Tはスキップ対象のテストではないか(テスト番号T≠SkipTest)を判定し(ステップ2603)、スキップ対象のテストではない場合には、SkipTestをNULLに初期化し(ステップ2604)、次に、操作OPを操作配信キューに対応したエージェント104に配信する(ステップ2605)。
次に、操作OPの実行結果を得(ステップ2606)、操作OPの実行結果が失敗、かつ操作失敗時にテストを中断する設定があるかを判定し(ステップ2607)、そうでなければステップ2609に進む。
しかし、操作OPの実行結果が失敗、かつ操作失敗時にテストを中断する設定がある場合には、SkipTestにテスト番号Tを設定し、スキップ対象のテストに指定する(ステップ2608)。
次に、操作配信キューの操作OPと操作OPに対応するテスト番号Tを得る(ステップ2609)。
【0044】
図27は、図21から図25までの処理により得られた操作配信キューから、図8の手動操作手順一覧801を生成するフローチャートである。
ここでは、全ての操作配信キューから操作内容を取得し(ステップ2701)、手動操作であれば(ステップ2703)、手動操作を配信するテストマシンと対応付けて、操作手順一覧に追加する(ステップ7605)。
【0045】
詳しくは、全ての操作配信キューから操作を得る(ステップ2701)。次に、操作配信キューに操作が残っているかを判定し(ステップ2702)、残っていなければ処理を終了する。
しかし、残っているならば、次に手動操作であるかを判定し(ステップ2703)、そうであれば手動操作を行う操作配信キューから操作を行うテストマシンを求める(ステップ2704)。
次に、手動操作と操作を行うテストマシンを対応付け、一覧に追加する(ステップ2705)。
【0046】
図28は、テストマシンエージェント(104)に手動操作の命令が届いたときの、テストマシンエージェント(104)と手動操作説明表示部(1032)の処理の流れを示すフローチャートである。
ここでは、手動操作説明表示部(1032)は、手動操作配信部(1018)へ手動操作手順を要求し(ステップ2802)、得られた手動操作の内容を順にテストマシンのデスクトップ上に表示する(ステップ2803)。オペレータ(107)は表示された手動操作内容に基づき手動操作を行う(ステップ2804)。手動操作が完了すると、オペレータは結果をフォームから返信する(ステップ2806)。手動操作配信部(1018)は、手動操作結果を受信し(ステップ2807)、その結果を元に遠隔命令送信部(1014)は以降のテストケースの操作を続行するか判断する(ステップ2807)。
【0047】
詳しくは、テストマシンエージェント(104)は手動操作手順を表示する命令を受信する(ステップ2801)。そして、手動操作説明表示部(1032)は手動操作配信部(118)へ手動手順の要求を出す(ステップ2802)。
次に、手動操作内容が届き、その内容を手動操作説明表示部(1032)に表示する(ステップ2803)。
オペレータは表示された手動操作内容のうち現在の時点で操作すべき指示マークがある手動操作内容の手動操作を行う(ステップ2804)。
次に、手動操作が完了したかを判定し(ステップ2805)、終了しているならば、オペレータは手動操作結果をフォームから返信する(ステップ2806)。次に、手動操作配信部(1018)は、手動操作の結果を受信する(ステップ2808)。
ステップ2805において、手動操作が完了していない場合には、完了するまで待機する(ステップ2808)。
【0048】
図29は、図2の手動操作配信部(1018)に手動操作説明表示部(1032)から手動操作手順の要求があったときに、手動操作配信部(1018)が行う処理の流れを示すフローチャートである。
手動操作配信部(1018)は、手動操作説明表示部(1032)から手動操作手順の要求があったとき、操作手順HTMLファイル(1019)を読み出し(ステップ2902)、手動操作結果を返信するためのフォームを挿入(ステップ2904)する。生成された手動操作手順は、手動操作説明表示部(1032)に伝達され(ステップ2905)、仮想マシン(テストマシン)(103)のデスクトップ上に、図9のような形式で表示される。
【0049】
詳しくは、仮想マシン(103)から特定のWebページを開き(ステップ2901)、該当する操作手順HTMLファイルを読み出す(ステップ2902)。
次に、手動操作結果をコントローラ(101)に送信するためのHTMLコードを生成し(ステップ2803)、</BODY>タグの直前に挿入する(ステップ2904)。そして、HTMLコードをテストマシンエージェント(104)に送信する(ステップ2905)。
図9の手順本文(901)は、操作手順HTMLファイル(1019)の内容であり、結果送信のためのフォーム(902、903、904)は、挿入された図30のHTMLコードである。
【0050】
図30は、図29のHTMLコード挿入処理(ステップ2904)により挿入されるHTMLコードの例ある。仮想マシン(103)のデスクトップ上では、図9の操作結果送信のためのフォーム(902、903、904)として表示される。
【0051】
以降、自動操作と手動操作で組み合わされたテストケースの例を説明する。
図31は、自動操作と手動操作で組み合わされたテストケースの例を示す図である。
左列がテストケース名を示す。横軸が、テストに必要な操作の順番を示し、操作名が「自動」で始まる場合は自動操作を示し、操作名が「手動」で始まる場合は手動操作であることを示す。
例えばテストケース名=テスト1の操作順序については、「自動2」、「自動3」、「手動1」、「手動1」の順で操作が行われることを示している。
【0052】
図32は、図31のテストケースから手動操作のみを抽出した操作一覧であり、図19に示すフローチャートの処理を行った結果であり、テストケースは並び替えられていない。
【0053】
図33は、図32の手動操作の抽出結果を元に、テストケースの並び替えを行った図である。図20に示すフローチャートの処理を行った結果である。
【0054】
図34は、図33のテストケースの並べ替え順序を元に、図31のテストケースを並べ替えた図である。
【0055】
図35は、図34の並べ替えられたテストケースを元に、図21から図25までのフローチャートの処理を行ったときの、操作配信キューを示す図である。
図35では操作配信キューが3つ存在することを想定している。テストケース名の下線は、カレントキューであることを示し、操作配信キューのテストケースが終了するとカレントキューが移り変わる様子を示している。カレントキューの手動操作に合わせて他の操作配信キューの手動操作の配信のタイミングがずらされている状況を示している。
【0056】
図36は、図35の操作配信キューの情報を元に、手動操作の順序と手動操作を行うテストマシンの一覧を示す図である。図36の手動操作の情報を元に、図8の手動操作手順一覧801が表示される。
【0057】
以上説明した実施形態によれば、
(1)テスト操作情報を構成する手動操作指示情報を並べ替えることにより、1台以上のテストマシンで同じ手動操作を行う発生頻度が高くなる。
(2)1台以上のテストマシンで同じ手動操作を行う頻度が高くなるため、オペレータによる誤操作が減少し、テストを効率良く実施することができる。
(3)手動操作の手順と、操作が必要なテストマシンの一覧を表示することにより、テストに必要な手動操作の進捗が分かるという効果がある。
【0058】
なお、上記実施形態においては、複数のテスト対象プログラムを複数の仮想マシンに実装してテストを実施しているが、仮想マシンでなく、独立したマシンで実施する場合であっても同様に適用できることは言うまでもない。
【図面の簡単な説明】
【0059】
【図1】本発明の一実施の形態を示すシステム構成図である。
【図2】図1のコントローラ、テストマシンエージェントの詳細構成を示す機能ブロック図である。
【図3】同一の手動操作内容の手動操作が同じタイミングで実行されるように手動操作指示情報を並べ替えた例を示す説明図である。
【図4】テストマシンを登録する際の画面例を示す図である。
【図5】テストケースを追加し、テストケースの実行結果を参照するためのテスト管理画面の例を示す図である。
【図6】テストケースに含まれる操作を追加するための画面例を示す図である。
【図7】自動操作、手動操作を設定するための画面例を示す図である。
【図8】テストケースの手動操作およびテストマシンの一覧と、テストの進捗を示す画面例を示す図である。
【図9】テストマシン上に表示される手動操作手順と結果返信フォームの表示例を示す図である。
【図10】テストマシン情報のデータ構成図である。
【図11】テストケース名のデータ構成図である。
【図12】テストの操作情報を格納するデータ構成図である。
【図13】テストスクリプトファイルのパスを格納するデータ構成図である。
【図14】手動操作手順ファイルのパスを格納するデータ構成図である。
【図15】テスト操作の結果を記録するデータ構成図である。
【図16】テストマシンの登録処理を行うフローチャートである。
【図17】テストケース及びテスト操作を登録するフローチャートである。
【図18】テスト操作並べ替えを行うフローチャートである。
【図19】手動操作情報の抽出を行うフローチャートである。
【図20】手動操作情報に基づきテストケースを並べ替えるフローチャートである。
【図21】テストケースの操作情報を配信する際の操作配信キューへの操作の割り当てを示すフローチャートである。
【図22】カレントキューの割り当て処理を示すフローチャートである。
【図23】操作配信キューにテストケースを割り当てるための処理の流れを示すフローチャートである。
【図24】テストケースの自動操作情報を配信するための処理の流れを示すフローチャートである。
【図25】テストケースの手動操作指示情報を配信するための処理の流れを示すフローチャートである。
【図26】操作配信キューの処理の流れを示すフローチャートである。
【図27】操作配信キューから手動操作と配信するテストマシン一覧を求める処理の流れを示すフローチャートである。
【図28】テストマシン上での手動操作手順の表示と、操作結果の返信処理の流れを示すフローチャートである。
【図29】手動操作手順のHTMLコードを生成する際の処理の流れを示すフローチャートである。
【図30】手動操作結果の返信フォームのHTMLコードの例を示す図である。
【図31】操作配信キューの処理の流れを示すためのテストの例を示す図である。
【図32】テストから手動操作のみが抽出されたテストの例を示す図である。
【図33】手動操作によってソートされたテストの例を示す図である。
【図34】ソートされたテストの自動操作と手動操作の例を示す図である。
【図35】操作配信キューにテスト操作を配信したときの例を示す図である。
【図36】操作配信キューから手動操作が必要な仮想マシンを示す例を示す図である。
【符号の説明】
【0060】
101 コントローラ
102 ホストマシン
103 仮想マシン(テストマシン)
104 テストマシンエージェント
105 ホストエージェント
107 オペレータ
108 テスト管理者
1011 テスト情報データベース
1012 テスト並べ替えロジック部
1013 操作配信ロジック部
1014 遠隔命令送信部
1015 テストスクリプト
1016 エージェントスクリプト
1017 実行結果データベース
1018 手動操作配信部
1019 操作手順HTMLファイル
1032 手動操作説明表示部

【特許請求の範囲】
【請求項1】
テスト対象のプログラムを実装した複数のテストマシンのそれぞれに対しテスト操作情報を配信するコンピュータと、配信されたテスト操作情報に従いテスト対象プログラムのテストを実行する複数のテストマシンから構成されたプログラムの遠隔テスト実行システムにおいて、
前記テスト操作情報を配信するコンピュータが、複数のテストマシンのそれぞれに配信するテスト操作情報から自動操作情報と手動操作指示情報とを抽出し、同一内容の手動操作が複数のテストマシンの全てまたは一部で同じタイミングで実行されるように各テストマシンに対する手動操作指示情報を並べ替える手段と、並べ替えた手動操作指示情報と自動操作情報とからなるテスト操作情報を複数のテストマシンのそれぞれに配信する手段とを備え、
前記複数のテストマシンが、
前記コンピュータから配信されたテスト操作情報に従い各テストマシンに実装されたテスト対象プログラムのテストを実行する手段とを備える
ことを特徴とするプログラムの遠隔テスト実行システム。
【請求項2】
前記コンピュータが、
同一の手動操作指示情報による手動操作の内容とその内容のテストを実行するテストマシンの一覧を表示する手段をさらに備えることを特徴とする請求項1に記載のプログラムの遠隔テスト実行システム。
【請求項3】
前記テストマシンのそれぞれが、手動操作指示情報で示される手動操作内容を操作順に表示する手段をさらに備えることを特徴とする請求項1または2に記載のプログラムの遠隔テスト実行システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate