(57)【特許請求の範囲】
【請求項１】
テスト対象ＧＵＩアプリケーションに対する操作を記録・再生する複数のテスト自動化装置と、複数のテスト自動化装置を使ってテスト対象ＧＵＩアプリケーションに対する操作を記録・再生する併合テスト自動化装置と、前記テスト自動化装置と前記併合テスト自動化装置とテスト対象ＧＵＩアプリケーションを配するテスト実行マシンと、テスト実行マシンの入力部および表示部とからなり、
前記テスト自動化装置が、前記テスト対象ＧＵＩアプリケーションに対して入力した操作手順をテストスクリプトとして記録するテストスクリプト記録装置と、前記テストスクリプトを再生するテストスクリプト再生装置と、前記テストスクリプトを登録するテストスクリプトデータベースとを備え、
前記併合テスト自動化装置が、当該併合テスト自動化装置が使用する前記テスト自動化装置の一覧を登録したテスト自動化装置リストに登録されたテスト自動化装置と連携してテストスクリプトを記録する併合テストスクリプト記録装置と、前記テスト自動化装置リストに登録されたテスト自動化装置と連携して併合テストスクリプトを再生する併合テストスクリプト再生装置と、前記併合テストスクリプト記録装置が生成するテストスクリプトを登録する併合テストスクリプトデータベースとを備え、
前記併合テストスクリプト記録装置が、前記テスト自動化装置が生成したテストスクリプトを複数個のテストスクリプトに分割するテストスクリプト分割部と、テストスクリプトの再現性が高いかどうかを記述内容から静的に評価するテストスクリプト静的評価部と、分割したテストスクリプトを結合し、その結合パターンが有効かどうかを実際に再生して評価するテストスクリプト動的評価部と、指定した結合パターンに従ってテストスクリプトを併合するテストスクリプト併合部と、前記テストスクリプト動的評価部で再生可能と評価されたスクリプトを格納する再生可能スクリプトデータベースと、テストスクリプト中に現れる再現性の低いコマンドの一覧を登録する不安定コマンドデータベースと、前記テストスクリプト動的評価部で再生可能と評価されたスクリプト結合パターンを登録するスクリプト結合パターンデータベースと、前記テストスクリプト分割部で分割されたスクリプトおよび前記テストスクリプト静的評価部において算出された静的評価結果を登録する分割スクリプトデータベースとを備える
ことを特徴とするテスト自動化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のテスト自動化装置を併用することで、幅広いアプリケーションフレームワークに対してテストスクリプトを記録・再生するテスト自動化システムに関するものである。
【背景技術】
【０００２】
コンピュータに対する操作手順を記述したスクリプトを与えると、スクリプトを解釈して操作手順を再生することができるテストスクリプト再生装置がある。
この装置を利用して、従来は人がテスト対象アプリケーションを直接操作することによって行っていたテストを、そのテストの操作手順を記述したテストスクリプトを作成することで、コンピュータに自動実行させることができる。
また、コンピュータに対して入力した操作手順をテストスクリプトとして記録することができるテストスクリプト記録装置がある。
これら１組のテストスクリプト記録装置とテストスクリプト再生装置を使用し、テスト対象ＧＵＩアプリケーションに対するテスト操作をテストスクリプトとして記録する機能と、記録したテストスクリプトを再生する機能を併せ持つテスト自動化装置がある。
【０００３】
図３４は、そのテスト自動化装置を使った従来におけるテスト自動化システムの概略を示すブロック構成図であり、テスト自動化装置２２０１と、テスト対象ＧＵＩアプリケーション２２０２と、テスト自動化装置２２０１とテスト対象ＧＵＩアプリケーション２２０２を配するテスト実行マシン２２０３と、このテスト実行マシン２２０３の入力部２２０４と表示部２２０５とから構成される。
テスト自動化装置２２０１には、テスト対象ＧＵＩアプリケーション２２０２に対して入力した操作手順をテストスクリプトとして記録するテストスクリプト記録装置２２０６、テストスクリプトを再生するテストスクリプト再生装置２２０７、テストスクリプトを登録するテストスクリプトデータベース２２０８が備えられている。
【０００４】
このような構成のテスト自動化システムにおいては、入力部２２０４への記録開始操作によってテストスクリプト記録装置２２０６が記録状態に遷移する。このとき入力部２２０４を介してテスト対象ＧＵＩアプリケーション２２０２を操作すると、テストスクリプト記録装置２２０６において、入力した操作手順がテストスクリプトに変換され、テストスクリプトデータベース２２０８に記録される。
このテストスクリプト記録装置２２０６の記録状態は、入力部２２０４への記録終了操作によって解除することができる。
また、入力部２２０４への再生操作によってテストスクリプト再生装置２２０７にテストスクリプトを指定して実行すると、指定したテストスクリプトが再生される。再生が終了すると、表示部２２０５に再生結果が表示される。
先行技術として下記の特許文献１がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１９５３１８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年、アプリケーションフレームワークが急速に増加している。このため、全てのアプリケーションフレームワークに対応するテスト自動化装置を開発することは困難である。
一方、一部のアプリケーションフレームワークにのみ対応するテスト自動化装置は多く開発されている。
近年増加している複数のアプリケーションフレームワークを組み合わせて開発されたＧＵＩアプリケーションにおいては、１つのテスト自動化装置を使ってテスト操作を正常に記録、および再生させることは困難である。
テスト操作の記録または再生に失敗した場合は、正常に再生できるようになるまで、テストスクリプトを手作業で修正する必要がある。
また、正常に再生できるスクリプトであっても、対象のアプリケーションがテスト自動化装置に対応していないアプリケーションフレームワークである場合は、ボタンやテキストボックスといった画面部品に固有の属性値を認識できないために、再現性の低い操作内容に変換されて記録されることがある。例えば、特定のボタンをマウスで押下する操作が、記録時にそのボタンが表示されていたスクリーン座標に向かってマウスのボタンを押下する操作に変換されることがある。また、特定のテキストボックスに対して文字列を入力する操作が、テスト実行マシンのキーボードを押下する操作に変換されることがある。
【０００７】
このように、再現性の低い操作内容に変換されて記録されたスクリプト(以降、不安定なスクリプトという)は、テスト実行マシン、テスト対象ＧＵＩアプリケーション等の状態によって正常に再生できない事がある。
例えば、あるスクリーン座標に向かってマウスのボタンを押下する操作は、テスト対象ＧＵＩアプリケーションの画面の仕様変更によって、操作対象の画面部品の位置が変更された場合に再現できなくなる。テスト対象ＧＵＩアプリケーションの仕様変更以外でも、テストデータによって画面部品の表示位置が変わる場合は、テストデータの変更によっても再現できなくなる。
【０００８】
また、テスト実行マシンのキーボードを押下する操作は、テスト実行マシンの負荷状態によって操作対象の画面部品の表示タイミングが遅延した場合に、操作対象の画面部品の表示を待たずにキーボードを押下して失敗することがある。
このように不安定なスクリプトは再現性が低くなるため、再現性の高いスクリプト(以降、安定なスクリプトという)が生成されることが望ましい。
【０００９】
本発明の目的は、複数のテスト自動化装置を組み合わせることで幅広いアプリケーションフレームワークの記録に対応し、かつ、記録したテストスクリプトの再現性を静的に評価することで、再現性の高いテストスクリプトを生成できるテスト自動化システムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明のテスト自動化システムは、テスト対象ＧＵＩアプリケーションに対する操作を記録・再生する複数のテスト自動化装置と、複数のテスト自動化装置を使ってテスト対象ＧＵＩアプリケーションに対する操作を記録・再生する併合テスト自動化装置と、前記テスト自動化装置と前記併合テスト自動化装置とテスト対象ＧＵＩアプリケーションを配するテスト実行マシンと、テスト実行マシンの入力部および表示部とからなり、
前記テスト自動化装置が、前記テスト対象ＧＵＩアプリケーションに対して入力した操作手順をテストスクリプトとして記録するテストスクリプト記録装置と、前記テストスクリプトを再生するテストスクリプト再生装置と、前記テストスクリプトを登録するテストスクリプトデータベースとを備え、
前記併合テスト自動化装置が、当該併合テスト自動化装置が使用する前記テスト自動化装置の一覧を登録したテスト自動化装置リストに登録されたテスト自動化装置と連携してテストスクリプトを記録する併合テストスクリプト記録装置と、前記テスト自動化装置リストに登録されたテスト自動化装置と連携して併合テストスクリプトを再生する併合テストスクリプト再生装置と、前記併合テストスクリプト記録装置が生成するテストスクリプトを登録する併合テストスクリプトデータベースとを備え、
前記併合テストスクリプト記録装置が、前記テスト自動化装置が生成したテストスクリプトを複数個のテストスクリプトに分割するテストスクリプト分割部と、テストスクリプトの再現性が高いかどうかを記述内容から静的に評価するテストスクリプト静的評価部と、分割したテストスクリプトを結合し、その結合パターンが有効かどうかを実際に再生して評価するテストスクリプト動的評価部と、指定した結合パターンに従ってテストスクリプトを併合するテストスクリプト併合部と、前記テストスクリプト動的評価部で再生可能と評価されたスクリプトを格納する再生可能スクリプトデータベースと、テストスクリプト中に現れる再現性の低いコマンドの一覧を登録する不安定コマンドデータベースと、前記テストスクリプト動的評価部で再生可能と評価されたスクリプト結合パターンを登録するスクリプト結合パターンデータベースと、前記テストスクリプト分割部で分割されたスクリプトおよび前記テストスクリプト静的評価部において算出された静的評価結果を登録する分割スクリプトデータベースとを備えることを特徴とする。
【発明の効果】
【００１１】
本発明のテスト自動化装置によれば、次のような効果がある。
（１）対応するアプリケーションフレームワークの異なる複数のテスト自動化装置でテストスクリプトの記録・再生を行い、記録・再生が正常に行えたテストスクリプトを組み合わせて１つのテストスクリプトを生成するため、幅広いアプリケーションフレームワークに対してテスト操作の記録および再生を行うことができる。
（２）再現性が高いかどうかをテストスクリプトの記述内容から静的に評価し、静的評価値の良いものから優先して動作確認するため、テストスクリプトの動作確認コストを必要最小限に抑えることができる。
（３）テストスクリプトを部分的に静的評価し、静的評価の良い部分を優先して併合するため、全体的に再現性の高いテストスクリプトを生成することができる。
（４）動作確認済みのテストスクリプトの記述パターン・結合パターンを学習し、静的評価時に学習済みのパターンと一致するテストスクリプトに良い評価値を与えるため、動作確認済みのパターンを優先して動作確認することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施の形態例を示すシステム構成図である。
【図２】テスト対象ＧＵＩアプリケーションの第１の具体例を示す図である。
【図３】テスト対象ＧＵＩアプリケーションの第２の具体例を示す図である。
【図４】テスト対象ＧＵＩアプリケーションに対する操作手順の具体例である。
【図５】テスト自動化装置リストに登録されるレコードのデータ構成図である
【図６】不安定コマンドデータベースに登録されるレコードのデータ構成図である。
【図７】テストスクリプトデータベースに登録されるテストスクリプトの第１の具体例を示す図である。
【図８】テストスクリプトデータベースに登録されるテストスクリプトの第２の具体例を示す図である。
【図９】分割スクリプトデータベースに登録されるレコードの第１の例をデータ構成図である。
【図１０】分割スクリプトデータベースに登録されるレコードの第２の例をデータ構成図である。
【図１１】再生可能スクリプトデータベースに登録されるレコードのデータ構成図である。
【図１２】スクリプト結合パターンデータベースに登録されるレコードのデータ構成図である。
【図１３】併合テストスクリプトデータベースに登録されるテストスクリプトの第１の具体例を示す図である。
【図１４】併合テストスクリプトデータベースに登録されるテストスクリプトの第２の具体例を示す図である。
【図１５】併合テストスクリプト記録装置のテストスクリプト記録開始処理の概要を示すフローチャートである。
【図１６】併合テストスクリプト記録装置のテストスクリプト記録終了処理の概要を示すフローチャートである。
【図１７】併合テストスクリプト記録装置のテストスクリプト併合処理の概要を示すフローチャートである。
【図１８】併合テストスクリプト記録装置のテストスクリプト分割処理の概要を示すフローチャートである。
【図１９】図１８の続きを示すフローチャートである。
【図２０】併合テストスクリプト記録装置のテストスクリプト静的評価処理の概要を示すフローチャートである。
【図２１】図２０の続きを示すフローチャートである。
【図２２】併合テストスクリプト記録装置のテストスクリプト動的評価処理の概要を示すフローチャートである。
【図２３】併合テストスクリプト記録装置のテストスクリプト動的評価処理のサブルーチン１の概要を示すフローチャートである。
【図２４】図２３の続きを示すフローチャートである。
【図２５】併合テストスクリプト記録装置のテストスクリプト動的評価処理のサブルーチン２の概要を示すフローチャートである。
【図２６】図２５の続きを示すフローチャートである。
【図２７】図２６の続きを示すフローチャートである。
【図２８】併合テストスクリプト記録装置のテストスクリプト生成処理の概要を示すフローチャートである。
【図２９】併合テストスクリプト記録装置のテストスクリプト再生処理の概要を示すフローチャートである。
【図３０】図２９の続きを示すフローチャートである。
【図３１】併合テストスクリプト記録装置のテストスクリプト再生処理のサブルーチンの概要を示すフローチャートである。
【図３２】図２３のテストスクリプト動的評価処理結果の例を示す図である。
【図３３】図２３のテストスクリプト動的評価処理結果の例を示す図である。
【図３４】従来のテスト実行システムの概略構成図である。
【発明を実施するための形態】
【００１３】
以下、本発明のテスト自動化システムの一実施の形態について説明する。
図１は、本発明の一実施の形態例を示すシステム構成図である。
本テスト自動化システムは、テスト対象ＧＵＩアプリケーション０１０１と、テスト対象ＧＵＩアプリケーション０１０１に対する操作を記録・再生する複数のテスト自動化装置０１０２ａ，０１０２ｂと、複数のテスト自動化装置０１０２ａ，０１０２ｂを使ってテスト対象ＧＵＩアプリケーション０１０１に対する操作を記録・再生する併合テスト自動化装置０１０３と、複数のテスト自動化装置０１０２ａ，０１０２ｂと併合テスト自動化装置０１０３とテスト対象ＧＵＩアプリケーション０１０１を配するテスト実行マシン０１０４と、テスト実行マシン０１０４の入力部０１０５および表示部０１０６とから構成されている。
【００１４】
本テスト自動化システムのテスト対象ＧＵＩアプリケーション０１０１は、ウィンドウ、ボタン、テキストボックス等のオブジェクトから構成され、それらのオブジェクトはName属性やCaption属性と言ったプロパティを持ち、そのプロパティを用いてオブジェクトを指定でき、それによって、テスト対象ＧＵＩアプリケーション０１０１に対する操作をテストスクリプトとして記述できるような、図２のような外観のアプリケーションである。
テスト自動化装置０１０２ａ，０１０２ｂには、テスト対象ＧＵＩアプリケーション０１０１に対して入力した操作手順をテストスクリプトとして記録するテストスクリプト記録装置０１０７、テストスクリプトを再生するテストスクリプト再生装置０１０８、テストスクリプトを登録するテストスクリプトデータベース０１０９が備えられている。
各テスト自動化装置のテストスクリプトデータベース０１０９には、そのテスト自動化装置によって生成された、テスト対象ＧＵＩアプリケーション０１０１に対する操作手順を記述したテストスクリプトが複数登録される。
【００１５】
なお、本テスト自動化システムでは、テスト対象ＧＵＩアプリケーション０１０１に対する操作を表現できるのであれば、テストスクリプトが使用する言語は問わない。
併合テスト自動化装置０１０３には、この併合テスト自動化装置０１０３が使用するテスト自動化装置の一覧を登録するテスト自動化装置リスト０１１０、テスト自動化装置リスト０１１０に登録されたテスト自動化装置と連携してテストスクリプトを記録する併合テストスクリプト記録装置０１１１、テスト自動化装置リスト０１１０に登録されたテスト自動化装置と連携してテストスクリプトを再生する併合テストスクリプト再生装置０１１２、併合テストスクリプト記録装置０１１１が生成するテストスクリプトを登録する併合テストスクリプトデータベース０１１３が備えられている。
【００１６】
併合テストスクリプト記録装置０１１１には、テスト自動化装置０１０２ａ〜０１０２ｂが生成したテストスクリプトを複数個のテストスクリプトに分割するテストスクリプト分割部０１１４、テストスクリプトの再現性が高いかどうかを記述内容から静的に評価するテストスクリプト静的評価部０１１５、分割したテストスクリプトを結合し、その結合パターンが有効かどうかを実際に再生して評価するテストスクリプト動的評価部０１１６、指定した結合パターンに従ってテストスクリプトを併合するテストスクリプト併合部０１１７、テストスクリプト動的評価部で再生可能と評価されたスクリプトを格納する再生可能スクリプトデータベース０１１８、テストスクリプト中に現れる再現性の低いコマンドの一覧を登録する不安定コマンドデータベース０１１９、前記テストスクリプト動的評価部で再生可能と評価されたスクリプト結合パターンを登録するスクリプト結合パターンデータベース０１２０、前記テストスクリプト分割部で分割されたスクリプト、および前記テストスクリプト静的評価部０１１５において算出された静的評価結果を登録する分割スクリプトデータベース０１２１が備えられている。
【００１７】
併合テスト自動化装置０１０３のテスト自動化装置リスト０１１０には、テストスクリプトの記録・再生に使用するテスト自動化装置を起動するコマンドを登録する。
テスト自動化装置の起動コマンドは、記録開始コマンド、記録終了コマンド、参照コマンド、再生コマンド、の4種類を登録する。また、これらの起動コマンドに加え、テストスクリプトを分割する単位となるテストスクリプト分割文も併せて登録する。
併合テスト自動化装置０１０３の併合テストスクリプトデータベース０１１３には、複数のテストスクリプトを併合して作成したテストスクリプトが複数登録される。
併合テストスクリプトデータベース０１１３に登録されるテストスクリプトには、異なる言語によるテストスクリプト記述が混在することもある。
【００１８】
図２は、テスト対象ＧＵＩアプリケーションの例として、アプリケーションフレームワーク「Ｍ」を使って開発したＷｅｂブラウザ「FBrowser」で、Ｗｅｂアプリケーション「ファイル検索アプリケーション」を表示した画面を示した図である。
テスト実行マシン上でコマンド「fbrowser.exe」にURLを引数として与えて実行すると、Ｗｅｂブラウザ「FBrowser」が起動し、指定したＵＲＬのＷｅｂページを表示できる。
いま、テスト実行マシン上でコマンド「fbrowser.exe http://targetapp.com/search.jsp」を指定すると、Ｗｅｂブラウザ「FBrowser」が起動してファイル検索ページ０２０１が表示され、検索キーを入力することを促す。このファイル検索ページ０２０１のテキストボックス０２０４に任意の文字列を入力して検索ボタン０２０５を押下すると、テキストボックス０２０４に入力された文字列を含む名前のファイルを検索し、検索結果のファイル名の一覧を表示する検索結果一覧ページ０２０２に遷移する。
【００１９】
一方、ファイル検索ページ０２０１の閉じるボタン０２０６を押下すると、ブラウザ「FBrowser」が終了する。
検索結果一覧ページ０２０２に表示されるファイル名はハイパーリンクとなっており、このハイパーリンク０２０７を押下すると、図３に示すファイルのダウンロード方法を指定するファイルのダウンロード画面０２０３がポップアップする。
ここで、検索結果一覧ページ０２０２に表示されるハイパーリンクは、使用するテストデータを変更した場合に表示位置が変わることがある。例えば、テストデータにファイルを１つ追加した場合は、そのファイル名を含む検索キーで検索したときに、検索結果が１行増えることになる。ファイルのダウンロード画面０２０３は、テスト実行マシンのオペレーションシステムが表示する画面であり、ブラウザ「FBrowser」とは異なるアプリケーションフレームワーク「Ｗ」を使用する。
【００２０】
ファイルのダウンロード画面０２０３の保存ボタン０２０８を押下すると、ファイルのダウンロード画面０２０３が閉じ、検索結果一覧画面０２０２で押下したハイパーリンクの名前のファイルがテスト実行マシン０１０１上にダウンロードされる。
一方、ファイルのダウンロード画面０２０３でキャンセルボタン０２０９を押下すると、ファイルのダウンロード画面０２０３が閉じるだけで、ファイルのダウンロードは行われない。なお、ファイル検索ページ０２０１のテキストボックス０２０４のName属性は"検索キー"とする。
【００２１】
図４は、図２のファイル検索アプリケーションに対する操作手順の例である。
図４（ａ）の操作手順は、ファイル検索アプリケーションを起動して検索キー"pumpkin"を検索し、検索結果からキャプションが"pumpkin035.txt"のハイパーリンクを押下し、ダウンロードを実行する操作手順である。
図４（ｂ）の操作手順は、ファイル検索アプリケーションを起動して検索キー"pumpkin"を検索し、検索結果からキャプションが"pumpkin035.txt"のハイパーリンクを押下し、ダウンロードをキャンセルする操作手順である。
この２つの操作手順は、5行目のファイルのダウンロード画面で押下するボタンが「保存」か「キャンセル」かという違いだけである。
【００２２】
図５は、テスト自動化装置リスト０１１０のデータ構造図である。
テスト自動化装置リスト０１１０のレコードは、１つのテスト自動化装置について、テスト自動化装置名属性０４０１、記録開始コマンド属性０４０２、記録終了コマンド属性０４０３、参照コマンド属性０４０４、再生コマンド属性０４０５、スクリプト分割文属性０４０６を指定して登録する。
スクリプト分割文属性０４０６には、テストスクリプト分割処理において、スクリプトを分割する行を特定するために使用する文を指定する。
図５で示すレコードは、テスト自動化装置「testCR」と「fastTest」の２つに関するものである。
図５の例では、スクリプト分割文属性０４０６に、画面をフォーカスするコマンドを指定している。具体的には、「testCR」はコマンド「AttachWindow」を、テスト自動化装置「fastTest」はコマンド「assertTitle」を指定している。これは、スクリプトの分割および結合を画面単位で行うことを意図している。
【００２３】
なお、記録開始コマンド属性０４０２、記録終了コマンド属性０４０３、参照コマンド属性０４０４、再生コマンド属性０４０５、スクリプト分割文属性０４０６については、「％１」という文字列を記述することができる。この文字列「％１」は、テストスクリプト記録開始処理、テストスクリプト記録終了処理、テストスクリプト併合処理、テストスクリプト再生処理において、これらのコマンドに引数を与えて実行するためのものである。例えば、テスト自動化装置「testCR」の記録開始コマンド属性０４０２は「testCR_Rec.exe "%1"」であるが、これはテストスクリプト記録開始処理において、記録開始コマンド実行時にテストスクリプト名を引数として与えるためのものである。
【００２４】
図６は、不安定コマンドデータベース０１１９のデータ構造図である。
不安定コマンドデータベース０１１９のレコードは、テスト自動化装置の名前を指定するテスト自動化装置名属性０５０１と、そのテスト自動化装置において、再現性の低いコマンドのパターンを指定する不安定コマンド属性０５０２の２つの属性を指定して登録する。
ここで登録した不安定コマンドは、テストスクリプト静的評価処理において、静的評価値を算出する際に使用される。
【００２５】
図６で示すレコードは、テスト自動化装置「testCR」と「fastTest」の不安定コマンドである。例えば、テスト自動化装置「testCR」では、座標を指定して押下するコマンド「ClickAt *, *」と、テスト実行マシンのキーボードを押下するコマンド「Type *」が不安定コマンドである。文字列「*」はワイルドカードであり、任意の文字列に合致させることができる。
本テスト実行システムでは、テスト自動化装置ごとに不安定コマンドを事前に登録しておき、実際に記録されたテストスクリプトに対し、不安定コマンドがいくつ含まれているかを算出することによって、そのテストスクリプトが安定なスクリプトであるか不安定なスクリプトであるかを評価する。具体的には、テストスクリプトが含む不安定コマンドの数が少ないほど良い評価を与えることとする。
【００２６】
図７及び図８は、テストスクリプトデータベース０１０９に格納されるテストスクリプトの例である。
図７で示すテストスクリプトは、テスト自動化装置「testCR」と「fastTest」を使い、テスト対象ＧＵＩアプリケーションに対する図３の操作手順をテストスクリプトとして記録したものである。
図７（ａ）のテストスクリプトは、テスト自動化装置「testCR」を使って、図４（ａ）の操作手順を記録した、名前が「TC0001」のテストスクリプトである。
テスト自動化装置「testCR」は、アプリケーションフレームワーク「Ｗ」に対応するが、アプリケーションフレームワーク「Ｍ」には対応しない。このため、Ｗｅｂブラウザ「FBrowser」に対する操作を正しく記録できず、不安定コマンドを使って記録される。
例えば、３行目，５行目，７行目，１１行目のスクリプトは、Ｗｅｂページに表示されたボタンやハイパーリンクを押下する操作を記録したものであるが、座標を指定して押下する不安定コマンド「ClickAt」を使用したスクリプトに変換されている。さらに、４行目のスクリプトは、Ｗｅｂページに表示されたテキストボックスに文字列を入力する操作を記録したものであるが、テスト実行マシンのキーボードを押下する不安定コマンド「Type」を使用したスクリプトに変換されている。
【００２７】
一方、アプリケーションフレームワーク「Ｗ」を使用するファイルのダウンロード画面０２０３に対する操作については、正しく記録することができる。例えば、９行目のスクリプトは、ファイルのダウンロード画面０２０３にある保存ボタン０２０８を押下する操作を記録したものであるが、キャプション属性を指定してボタンを押下する
「ClickButton」コマンドを使用したスクリプトに変換されている。
図７（ｂ）のテストスクリプトは、テスト自動化装置「fastTest」を使って、図４（ａ）の操作手順を記録した、名前が「TC0001」のテストスクリプトである。
テスト自動化装置「fastTest」は、アプリケーションフレームワーク「Ｍ」に対応するが、アプリケーションフレームワーク「Ｗ」には対応しない。このため、ファイルのダウンロード画面０２０３に対する操作を記録することができない。
例えば、６行目のスクリプトはファイル「pumpkin035.txt」のハイパーリンク０２０７を押下する操作であるが、続く７行目のスクリプトは、画面をフォーカスするコマンド「assertTitle」を使ってファイル検索ページ０２０１をフォーカスする操作となっており、ファイルのダウンロード画面０２０３に対する操作内容が一切記録されていない。このため、このテストスクリプト（ｂ）は正しく再生することができない。
【００２８】
図８（ａ）のテストスクリプトは、テスト自動化装置「testCR」を使って、図４（ｂ）の操作手順を記録した、名前が「TC0002」のテストスクリプトである。
殆どの記述は図７（ａ）のテストスクリプトと同一であるが、９行目で押下するボタンがファイルのダウンロード画面０２０３のキャンセルボタン０２０９となっている。
図８（ｂ）のテストスクリプトは、テスト自動化装置「fastTest」を使って、図４（ｂ）の操作手順を記録した、名前が「TC0002」のテストスクリプトである。
ファイルのダウンロード画面０２０３を記録できないため、図７（ｂ）のテストスクリプトと同一のテストスクリプトとなっている。
【００２９】
図９及び図１０は、分割スクリプトデータベース０１２１のデータ構成図である。
分割スクリプトデータベース０１２１のレコードは、スクリプトを記録したテスト自動化装置の名前であるテスト自動化装置名属性０７０１と、スクリプト名属性０７０２と、分割位置を表す分割番号属性０７０３と、分割したスクリプト部分が操作する画面の名前である画面名属性０７０４と、分割スクリプト属性０７０５と、分割スクリプトの静的評価値属性０７０６と、分割スクリプトが既に動作確認済みかどうかを表す再生可能フラグ属性０７０７との７つの属性で登録する。
【００３０】
図９で示すレコードは、テストスクリプト分割処理において、図７及び図８のテストスクリプトを分割したものである。
図９の分割スクリプトは、図７（ａ）のテストスクリプトをスクリプト分割文
「AttachWindow("%1")」で分割したレコードと、図７（ｂ）のテストスクリプトをスクリプト分割文「assertTitle("%1")」で分割したレコードが複数登録されている。
また、図９（ｂ）の分割スクリプトは、図８（ａ）のテストスクリプトをスクリプト分割文「AttachWindow("%1")」で分割したレコードと、図８（ｂ）のテストスクリプトをスクリプト分割文「assertTitle("%1")」で分割したレコードが複数登録されている。
静的評価値属性０７０６には、分割スクリプト属性０７０５の中に現れる、不安定コマンドの回数を負数にして指定する。
【００３１】
例えば、図９の上から2つ目のレコードは、テスト自動化装置名が「testCR」の不安定スクリプト、つまり、図６の不安定コマンドデータベースに登録された「ClickAt *,*」と「Type *」の２つのコマンドが、分割スクリプト属性０７０５の中に現れる回数が「3」であることを表しており、この負数である「-3」が静的評価値となっている。実際に、このレコードの分割スクリプト属性０７０５には不安定コマンド「ClickAt *,*」と合致する「ClickAt 100, 30」「ClickAt 100,120」、不安定コマンド「Type *」と合致する「Type "pumpkin"」が含まれており、合計３個の不安定コマンドが含まれている。
再生可能フラグ属性０７０７には、テストスクリプト静的評価処理において、分割スクリプト属性０７０５が再生可能スクリプトデータベース０１１８に登録されたスクリプトと一致していた場合は「True」、未登録であった場合は「False」を指定する。
【００３２】
本テスト実行システムでは、テストスクリプト動的評価処理において、再生可能フラグ属性０７０７が「True」であるが、テスト自動化装置による再生が失敗したスクリプトを、再生可能スクリプトデータベース０１１８から削除する。この機能によって、テスト対象ＧＵＩアプリケーション０１０１の仕様変更やテストデータ変更による、既存スクリプトの再現性の変化をシステムに学習させることができる。
【００３３】
図１１は、再生可能スクリプトデータベース０１１８のデータ構造図である。
再生可能スクリプトデータベース０１１８のレコードは、スクリプトを記録したテスト自動化装置の名前であるテスト自動化装置名属性０８０１と、スクリプトが操作する画面の名前である画面名属性０８０２と、スクリプト属性０８０３と、このスクリプトの静的評価値属性０８０４との４つの属性で登録する。
【００３４】
図１１で示すレコードは、テストスクリプト動的評価処理において、図９の分割スクリプトのうち、実際にテスト自動化装置を使って再生を行って動作を確認したスクリプトであり、図９の分割スクリプトデータベース０１２１にある５つのレコードに相当するレコードが登録されている。
具体的には、図１１の上から１つ目のレコードは、図９の上から１つ目のレコードに相当し、図１１の上から２つ目のレコードは、図９の上から４つ目のレコードに相当し、図１１の上から３つ目のレコードは、図９の上から７つ目のレコードに相当し、図１１の上から４つ目のレコードは、図９の上から８つ目のレコードに相当し、図１１の上から５つ目のレコードは、図９の上から９つ目のレコードに相当する。
静的評価値属性０８０４は、テストスクリプト動的評価処理において、分割スクリプトデータベース０１２１にある静的評価値属性０７０６に対して「10」加算したものが登録されている。
【００３５】
本テスト実行システムでは、一度動作確認したスクリプトを再生可能スクリプトデータベース０１１８に保存しておき、次回以降のテストスクリプト静的評価処理において、評価対象のスクリプトが再生可能スクリプトデータベース０１１８に登録されたものと一致する場合は、優先して動作確認を試みる。この機能によって、不要な動作確認のコスト削減を実現する。
例えば、再生可能スクリプトデータベース０１１８が図１１の状態で、図８（ａ）（ｂ）のテストスクリプトを対象に、テストスクリプト分割処理、テストスクリプト静的評価処理を行った結果が、図１０で示すようなものとなっている。
図１０の上から１つ目、上から７つ目、上から８つ目、上から９つ目のスクリプトの分割スクリプトは、図１１の再生可能スクリプトと一致するため、静的評価値属性０７０６が静的評価値属性０８０４の値に更新され、また、再生可能フラグ属性０７０７の値が「True」に更新されている。
【００３６】
図１２は、スクリプト結合パターンデータベース０１２０のデータ構造図である。
スクリプト結合パターンデータベース０１２０のレコードは、テストスクリプト動的評価処理において動作を確認した画面遷移パターンについて、遷移前画面名属性０９０１と、遷移後画面名属性０９０２の２つの属性で登録する。
図１２で示すレコードは、テストスクリプト動的評価処理において、図９の分割スクリプトについて動作確認を行った際、再生に成功した画面遷移パターンが登録されている。遷移前画面属性０９０１には、「NULL」を指定することができる。この場合は、最初の画面に遷移する前の状態を表す。
【００３７】
例えば、図１２の上から１つ目のレコードは、Ｗｅｂブラウザ「FBrowser」を起動する前の状態から、ファイル検索ページ０２０１に遷移する画面遷移パターンを表している。
本テスト実行システムでは、一度動作確認した画面遷移パターンをスクリプト結合パターンデータベース０１２０に保存しておき、次回以降のテストスクリプト動的評価処理において、スクリプト結合パターンデータベース０１２０に登録された画面遷移を優先して動作確認を試みる。この機能によって、不要な動作確認のコスト削減を実現する。
【００３８】
図１３及び図１４は、併合テストスクリプトデータベース０１１３に格納されるテストスクリプトの例である。
図１３で示すテストスクリプトは、テストスクリプト併合処理において、テスト自動化装置「testCR」と「fastTest」によって記録された２つのテストスクリプトを、１つのテストスクリプトとして併合したものである。
図１３のテストスクリプトは、図７（ａ）と（ｂ）のテストスクリプトを併合したものであり、図１４のテストスクリプトは、図８（ａ）と（ｂ）のテストスクリプトを併合したものとなっている。
【００３９】
テストスクリプト中にある「<TestEngine="testCR">」、および「<TestEngine="fastTest">」は、「テスト自動化装置選択文」である。テスト自動化装置選択文は、テストスクリプト再生処理において、再生に使用するテスト自動化装置を指定する文である。例えば、名前がＸのテスト自動化装置を指定する場合は、テスト自動化装置選択文は「<TestEngine="X">」と記述する。
テスト自動化装置Ｘを指定するテスト自動化装置選択文を記述した行から、次のテスト自動化装置選択文が現れる行までは、テスト自動化装置Ｘによって再生可能なスクリプトを記述する。例えば、図１４の７行目はテスト自動化装置「testCR」を指定するテスト自動化装置選択文であり、１０行目はテスト自動化装置「fastTest」を指定するテスト自動化装置選択文である。そして、この２つのテスト自動化装置選択文の間にある８行目と９行目のスクリプトは、テスト自動化装置「testCR」によって再生可能なスクリプトとなっている。
【００４０】
本テスト実行システムでは、テスト自動化選択文を用いてスクリプトを結合することによって、使用する言語やアプリケーションプログラミングインタフェースが異なるスクリプトであっても、１つのスクリプトとして併合することを実現する。
以下、以上のように構成されたテスト実行システムの動作を説明する。
【００４１】
図１５は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１のテストスクリプト記録開始処理の概要を示すフローチャートである。
併合テスト自動化装置０１０３で本処理を開始する前に、テスト自動化装置リスト０１１０に、テストスクリプトを記録するテスト自動化装置の一覧を登録しておく必要がある。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１１０１)。ＴＳＮは、これから記録する操作手順に対するテストスクリプトの名前を格納する変数である。
続いて、ステップ１１０２〜ステップ１１０５にて、テスト自動化装置リスト０１１０に登録された各テスト自動化装置の記録開始コマンド属性０４０２を使用し、名前をＴＳＮとして、テストスクリプトの記録を開始する。全てのテスト自動化装置リスト０１１０について記録開始コマンドを実行したら、処理を終了する。
併合テスト自動化装置０１０３は、以上の処理を、テスト実行マシン０１０４の入力部０１０５に記録開始操作が行われる度に実行する。
【００４２】
テスト自動化装置リスト０１１０が図５の状態で、テスト対象ＧＵＩアプリケーション０１０１に対して図４（ａ）の操作手順を実行すると、図７の（ａ）と（ｂ）のテストスクリプトが生成される。また、同状態でテスト対象ＧＵＩアプリケーション０１０１に対して図４（ｂ）の操作手順を実行すると、図８の（ａ）と（ｂ）のテストスクリプトが生成される。
なお、生成されるテストスクリプトは、そのスクリプトを生成したテスト自動化装置が備えるテストスクリプトデータベース０１０９に登録される。例えば、テスト自動化装置「testCR」が生成するテストスクリプトは、テスト自動化装置「testCR」が備えるテストスクリプトデータベースに登録される。
【００４３】
図１６は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１のテストスクリプト記録終了処理の概要を示すフローチャートである。
本処理は、併合テスト自動化装置０１０３でテストスクリプト記録開始処理を実行した場合のみ実行することができる。
本処理では、テスト自動化装置リスト０１１０に登録された各テスト自動化装置の記録終了コマンド属性０４０３を実行し、テストスクリプトの記録状態を終了させる（ステップ１２０１〜ステップ１２０４）。
併合テスト自動化装置０１０３は、以上の処理を、テスト実行マシン０１０４の入力部０１０５に記録終了操作が行われる度に実行する。
【００４４】
図１７は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１のテストスクリプト併合処理の概要を示すフローチャートである。
本処理は、併合テスト自動化装置０１０３でテストスクリプト記録開始処理、およびテストスクリプト記録終了処理を行い、各テスト自動化装置によってテストスクリプトを生成した状態でのみ実行することができる。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１３０１)。
ＴＳＮは、これから併合するテストスクリプトの名前を格納する変数である。
ＳＣＬは、テストスクリプト動的評価処理において、分割スクリプトデータベース０１２１のレコードが、連続して再生可能な順番で格納される。ＳＣＬは、長さ０のリストとして初期化する。
【００４５】
続いて、分割スクリプトデータベース０１２１に格納された全てのレコードを削除する（ステップ１３０２）。分割スクリプトデータベース０１２１は、本処理の中で呼び出される各処理において、分割したスクリプト、静的評価値といった処理結果を格納するために利用する。
分割スクリプトデータベース０１２１のレコードを削除したら、引数としてＴＳＮを指定し、テストスクリプト分割処理を実行する（ステップ１３０３）。このテストスクリプト分割処理において、テスト自動化装置リスト０１１０のスクリプト分割文属性０４０６によって１つのテストスクリプトを複数個のスクリプトに分割し、分割スクリプトデータベース０１２１に登録する。
【００４６】
続いて、引数としてＴＳＮを指定し、テストスクリプト静的評価処理を実行する（ステップ１３０４）。このテストスクリプト評価処理において、分割したスクリプトごとに、不安定コマンドが含まれるか、再生可能スクリプトと一致するか、といった記述内容に関する評価を行い、その結果を分割スクリプトデータベース０１２１に登録する。
続いて、引数としてＴＳＮとＳＣＬを指定し、テストスクリプト動的評価処理を実行する（ステップ１３０５）。このテストスクリプト動的評価処理において、静的評価値の高いスクリプトを優先して動作確認を行い、連続して再生可能なスクリプトのリストを変数ＳＣＬに格納する。
【００４７】
続いて、引数としてＴＳＮとＳＣＬを与え、テストスクリプト生成処理を実行する（ステップ１３０６）。このテストスクリプト生成処理において、変数ＳＣＬに格納されたスクリプトを、先頭のものから順に結合して１つのテストスクリプトを生成し、併合テストスクリプトデータベース０１１３に登録する。
併合テスト自動化装置０１０３は、以上の処理を、テスト実行マシン０１０４の入力部０１０５に併合操作が行われる度に実行する。
【００４８】
テスト自動化装置リスト０１１０が図５、２つのテストスクリプトデータベース０１０９が図７（ａ）（ｂ）、不安定コマンドデータベース０１１９が図６の状態で、テストスクリプト名「TC0001」を指定して本処理を実行すると、図１３の併合テストスクリプトが生成され、併合テストスクリプトデータベース０１１３に格納される。
【００４９】
一方、テスト自動化装置リスト０１１０が図５、２つのテストスクリプトデータベース０１０９が図８（ａ）（ｂ）、不安定コマンドデータベース０１１９が図６の状態で、テストスクリプト名「TC0002」を指定して本処理を実行すると、図１４のテストスクリプトが生成され、併合テストスクリプトデータベース０１１３に格納される。
【００５０】
図１８及び図１９は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１の、テストスクリプト分割処理の概要を示すフローチャートである。
本処理は、複数のテスト自動化装置０１０２ａ，０１０２ｂによって記録されたスクリプトを、スクリプト分割文が現れる行によって分割し、分割スクリプトデータベース０１２１に登録するものである。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１４０１)。ＴＳＮは、これから分割するテストスクリプトの名前を格納する変数である。
【００５１】
続いて、ステップ１４０２〜ステップ１４１２において、各テスト自動化装置のテストスクリプトデータベース０１０９に登録された、名前がＴＳＮのテストスクリプトを参照し、参照した各テストスクリプトについて、テスト自動化装置Ｒごとに設定されたスクリプト分割文ＳＣと合致する行を分割点として、複数のスクリプトに分割する。
なお、本処理で分割されたスクリプトは、ステップ１４０７において、分割スクリプトデータベース０１２１に登録される。この登録の際には、予め算出したスクリプトの分割位置Ｎ、テストスクリプト分割文ＳＣと合致する行から取得した画面名ＳＮも併せて登録する。
ステップ１４０２〜１４１２が終了したら、本処理は終了する。
併合テスト自動化装置０１０３は、以上の処理を、テストスクリプト併合処理において呼び出される度に実行する。
【００５２】
図２０及び図２１は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１のテストスクリプト静的評価処理の概要を示すフローチャートである。
本処理は、分割スクリプトデータベース０１２１に登録されたスクリプトを記述内容によって静的に評価し、その評価結果を分割スクリプトデータベース０１２１に登録するものである。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１５０１)。TSNは、これから静的評価するテストスクリプトの名前を格納する変数である。
続いて、ステップ１５０２〜ステップ１５１６において、分割スクリプトデータベース０１２１に登録された、スクリプト名属性０７０２がTSNである全ての分割スクリプトBSRの静的評価値を算出する。
【００５３】
分割スクリプトBSRと一致する再生可能スクリプトデータベース０１１８のスクリプトSSCIが存在する場合は、BSRの静的評価値属性０７０６をSSCIの静的評価値属性０８０４に更新し、BSRの再生可能フラグ属性０７０７をTrueに更新する(ステップ１５０３〜１５０８)。
分割スクリプトBSRと一致する再生可能スクリプトデータベース０１１８のスクリプトが存在しない場合は、不安定コマンドデータベース０１１９に登録された再現性の低い不安定コマンドが、BSRのスクリプト中に現れる回数を算出し、その回数の負数であるEでBSRの静的評価値属性０７０６を更新し、BSRの再生可能フラグ属性０７０７をFalseに更新する（ステップ１５０３〜ステップ１５０５、ステップ１５０９〜１５１５、ステップ１５０８）。
併合テスト自動化装置０１０３は、以上の処理を、テストスクリプト併合処理において呼び出される度に実行する。
【００５４】
図２２は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１の、テストスクリプト動的評価処理の概要を示すフローチャートである。
本処理は、分割スクリプトデータベース０１２１に登録されたスクリプトを、その静的評価値の高いものを優先して動作確認し、連続して再生可能な順番で分割スクリプトを並べたリストを返すものである。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１６０１)。TSNは、これから静的評価するテストスクリプトの名前を格納する変数である。
SCLは、本処理の結果を格納する参照変数であり、この変数の値は呼び出し元から参照することができる。Nは、現在の分割番号をテスト自動化装置ごとに格納するマップ変数である。テスト自動化装置によっては、特定の画面に対する操作を記録できないことがあるため、テストスクリプトを画面単位で分割する場合、スクリプトの分割数が一致しない事がある。この分割数のズレを補正するために、マップ変数Nを使用し、現在の動的評価の対象である分割スクリプトの分割番号をテスト自動化装置ごとに管理する。ステップ１６０２〜１６０４は、このマップ変数Nに対し、全てのテスト自動化装置の分割位置を１で初期化する処理である。
【００５５】
初期化が終わったら、テストスクリプト名TSNとマップ変数NとSCLを与えてテストスクリプト動的評価処理のサブルーチン１を実行し(ステップ１６０５)、戻り値の分割スクリプトリストを参照変数SCLに設定し(ステップ１６０６)、処理を終了する。
なお、本処理を終了する際は、呼び出し元に変数SCLの値を戻り値として返す。
併合テスト自動化装置０１０３は、以上の処理を、テストスクリプト併合処理において呼び出される度に実行する。
【００５６】
図２３及び図２４は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１のテストスクリプト動的評価処理のサブルーチン１の概要を示すフローチャートである。
本処理は再帰呼び出しが可能であり、各呼び出しごとに、固有の変数を作成する。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１７０１〜１７０７)。SCL2は、これまでの動的評価によって、連続して再生可能な順番で分割スクリプトが格納されているリスト変数である。
N2は、各テスト自動化装置における、現在の分割番号を格納するマップ変数である。RRは、各テスト自動化装置における、現在の分割番号の分割スクリプトを格納する集合変数である。ステップ１７０２〜１７０７は、このRRの初期化処理である。
RRに分割スクリプトが存在しない場合は、本処理の戻り値として、引数であるSCL2をそのまま設定し(ステップ１７０８〜ステップ１７０９)、処理を終了する。
上記フローは、全ての分割位置についての探索が終了し、分割スクリプトのリストSCL2が完成したことを表している。
【００５７】
RRに分割スクリプトが存在する場合は、現在の分割スクリプトを再生するに至るまでに遷移した画面のうち、最後の画面である遷移前画面BSを取得する(ステップ１７１０〜１７１２)。まだ一度も画面に遷移していない場合は、BSにNULLを設定する(ステップ１７１２)。
続くステップ１７１３では、スクリプト結合パターンデータベース０１２０より、遷移前画面がBSである場合に、その遷移後画面として再生実績のある画面の集合BSSを取得する。
【００５８】
続いて、BSSに含まれる画面名を操作する分割スクリプトの集合PRと、BSSに含まれない画面を操作する分割スクリプトの集合IRを作成する。（ステップ１７１４）。
そして、まず最初に、集合PRに対し、サブルーチン２を実行して動作確認し(ステップ１７１５)、戻り値RSを確認する(ステップ１７１６)。サブルーチン２の戻り値RSがNULLでない場合は、PRの１つの要素を遷移後画面とする、連続して再生可能な分割スクリプトのリストがRSに格納されている。よって、戻り値がNULLでない場合は、本処理の戻り値としてRSを設定し(ステップ１７１７)、処理を終了する。
【００５９】
一方、戻り値RSがNULLである場合は、PRの要素を遷移後画面とする場合は、連続して再生可能な分割スクリプトを生成できない事を表している。この場合は、残りの分割スクリプト集合であるIRを遷移後画面として、PRの場合と同様にサブルーチン２を実行し(ステップ１７１８)、戻り値RS2を確認する(ステップ１７１９)。RS2がNULLでない場合は、本処理の戻り値にRS2を設定し(ステップ１７２０)、本処理を終了する。
【００６０】
一方、RS2がNULLの場合は、再生可能なスクリプトが１つも得られなかったことを表している。この場合は、処理が失敗したことを示すNULLを本処理の戻り値として設定し、本処理を終了する。
併合テスト自動化装置０１０３は、以上の処理を、テストスクリプト動的評価処理において、本処理が再帰的に呼び出される度に実行する。
図３２及び図３３にこの動的評価処理結果の例を示している。
【００６１】
図２５〜図２７は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１の、テストスクリプト動的評価処理のサブルーチン２の概要を示すフローチャートである。
本処理は再帰呼び出しが可能であり、各呼び出しごとに、固有の変数を作成する。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１８０１)。SCL3は、これまでの動的評価によって、連続して再生可能な順番で分割スクリプトが格納されているリスト変数である。
N3は、各テスト自動化装置における、現在の分割番号を格納するマップ変数である。
Rは、現在動作確認対象となっている分割スクリプトの集合であり、テストスクリプト動的評価処理のサブルーチン１のステップ１７１４で作成した変数PRとIRのいずれかが代入される。
【００６２】
続くステップ１８０２〜ステップ１８１９では、分割スクリプト集合Ｒの中で、再生に成功する分割スクリプトRIがあるかどうかを調べる処理を行う。
併合テストスクリプト再生処理のサブルーチンを実行することで分割スクリプトRIの動作確認を行い(ステップ１８０４〜１８０５)、再生に成功したら、その分割スクリプトRIを再生可能スクリプトデータベース０１１８のレコードとして追加し(ステップ１８０６〜１８０７)、再生に成功した画面遷移パターンをスクリプト結合パターンデータベース０１２０に追加する(ステップ１８０８)。再生可能スクリプトデータベース０１１８に分割スクリプトのレコードを追加する場合は、分割スクリプトの静的評価値属性０７０６に「１０」を加算したものを登録する。これは、スクリプトに含まれる不安定コマンドの数が同じであっても、動作確認実績のあるスクリプトの優先度を高くするためである。
【００６３】
これらのデータベースへの登録処理が終了したら、再生に成功した分割スクリプトRIをSCL3に加えた変数SCL4を生成し、これを与えて再度サブルーチン１を実行し(ステップ１８１１)、戻り値RSを判定する(ステップ１８１２)。サブルーチン１の処理が失敗し、戻り値RSがNULLとなる場合は、SCL4で指定する順で分割スクリプトを再生するときは、その後の画面から最後の画面まで連続して再生可能な分割スクリプトのリストを生成できないことを表している。よって、戻り値がNULLとなる場合は、残りの分割スクリプトの動作確認に移る(ステップ１８１９)。
【００６４】
一方、サブルーチンの処理が成功し、戻り値がNULLでない場合は、SCL4で指定する順で分割スクリプトを再生したときに、その後の画面に対しても連続して再生可能な分割スクリプトのリストがRSに格納されている。よって、戻り値がNULLでない場合は、このRSを本処理の戻り値に設定し(ステップ１８１３)、本処理を終了する。
併合テスト自動化装置０１０３は、以上の処理を、テストスクリプト動的評価処理において、本処理が再帰的に呼び出される度に実行する。
【００６５】
図２８は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト記録装置０１１１の、テストスクリプト生成処理の概要を示すフローチャートである。
本処理は、テストスクリプト動的評価処理において、連続して再生可能な順番で格納された分割スクリプトのリストに従い、併合テストスクリプト再生処理において再生可能な、１つのテストスクリプトを生成するものである。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ１９０１)。SCLは、テストスクリプト動的評価処理によって生成された、連続して再生可能な順番で分割スクリプトが格納されているリスト変数である。
TSNは、これから生成するテストスクリプトの名前を格納する変数である。
Mは、併合後のスクリプトを格納する変数であり、NULLで初期化する。
【００６６】
変数の初期化が終わったら、ループＡ（ステップ１９０２〜ステップ１９０６）において、リスト変数SCLに格納された分割スクリプトRを、リストの先頭のものから順番に、Mに書き込む処理を行う。但し、各分割スクリプトＲをMに書き込む際には、その分割スクリプトRを再生するテスト自動化装置TAを指定するための、テスト自動化装置選択文を挿入する(ステップ１９０４)。
【００６７】
ループＡの全ての処理が終わったら、その時点のスクリプトＭを、名前をTSNとして、併合テストスクリプトデータベース０１１３に登録する。
併合テスト自動化装置０１０３は、以上の処理を、テストスクリプト併合処理において呼び出される度に実行する。
【００６８】
図２９及び図３０は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト再生装置０１１２のテストスクリプト再生処理の概要を示すフローチャートである。
本処理は、テストスクリプトの名前を与えることで、併合テストスクリプトデータベース０１１３に登録されたテストスクリプトを再生するものである。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ２００１)。TSNは、これから再生するテストスクリプトの名前を格納する変数である。
Sは、テスト自動化装置選択文によって分割したスクリプトを格納する変数である。
TAは、スクリプトSを再生するテスト自動化装置の名前である。
変数の初期化が終わったら、併合テストスクリプトデータベース０１１３より、名前がTSNであるテストスクリプトTSを開く(ステップ２００２)。
【００６９】
続いて、ループＡ(ステップ２００３〜２００９)において、TSをテスト自動化装置選択文によって分割し、分割した各スクリプトSを、Sを再生するテスト自動化装置TAを使って再生する。
分割したスクリプトSの再生は、併合テストスクリプト再生処理のサブルーチンを使用して行う(ステップ２００６)。Sを再生するテスト自動化装置TAは、テスト自動化装置選択文を文字列解析することによって取得する(ステップ２００７)。
ループＡの全ての処理が終わったら、ステップ２０１０の処理に移る
ステップ２０１０〜２０１１では、ループＡにおいて再生できなかった、テストスクリプトTSの最後の分割スクリプトを再生する。
併合テスト自動化装置０１０３は、以上の処理を、テスト実行マシン０１０４の入力部０１０５に再生操作が行われる度に実行する。
【００７０】
図３１は、併合テスト自動化装置０１０３に備えられた併合テストスクリプト再生装置０１１２のテストスクリプト再生処理のサブルーチンの概要を示すフローチャートである。
本処理は、テストスクリプトの名前を与えてテストスクリプトデータベース０１０９からテストスクリプトを検索するのではなく、テストスクリプトの記述内容を直接与えて再生する処理であり、併合テストスクリプト再生処理、テストスクリプト動的評価処理において、実行されるものである。
まず、呼び出し元から与えられた引数を用いて、変数を初期化する(ステップ２１０１)。
S2は、再生するスクリプトを格納する変数である。
TA2は、スクリプトS2の再生に使用するテスト自動化装置の名前である。
続いて、テスト自動化装置TA2を使用してスクリプトＳ２を再生し(ステップ２１０２〜２１０４)、その再生結果を戻り値として設定し（ステップ２１０５〜２１０７）、処理を終了する。
【００７１】
本処理では、S2の内容をテストスクリプトデータベースにFとして書き出し、このFを再生することによって行う(ステップ２１０３〜２１０４)。また、テスト自動化装置TA2を使用するコマンドは、テスト自動化装置リスト０１１０より取得する。
併合テスト自動化装置０１０３は、以上の処理を、併合テストスクリプト再生処理、テストスクリプト動作確認処理において呼び出される度に実行する。
【符号の説明】
【００７２】
０１０１  テスト対象ＧＵＩアプリケーション
０１０２  テスト自動化装置
０１０３  併合テスト自動化装置
０１０４  テスト実行マシン
０１０７  テストスクリプト記録装置
０１０８  テストスクリプト再生装置
０１１１  併合テストスクリプト記録装置
０１１４  テストスクリプト分割部
０１１５  テストスクリプト静的評価部
０１１６  テストスクリプト動的評価部
０１１７  テストスクリプト併合部
０１１２  併合テストスクリプト再生装置
【図１】
0005677924.tif 000002
【図２】
0005677924.tif 000003
【図３】
0005677924.tif 000004
【図４】
0005677924.tif 000005
【図５】
0005677924.tif 000006
【図６】
0005677924.tif 000007
【図７】
0005677924.tif 000008
【図８】
0005677924.tif 000009
【図９】
0005677924.tif 000010
【図１０】
0005677924.tif 000011
【図１１】
0005677924.tif 000012
【図１２】
0005677924.tif 000013
【図１３】
0005677924.tif 000014
【図１４】
0005677924.tif 000015
【図１５】
0005677924.tif 000016
【図１６】
0005677924.tif 000017
【図１７】
0005677924.tif 000018
【図１８】
0005677924.tif 000019
【図１９】
0005677924.tif 000020
【図２０】
0005677924.tif 000021
【図２１】
0005677924.tif 000022
【図２２】
0005677924.tif 000023
【図２３】
0005677924.tif 000024
【図２４】
0005677924.tif 000025
【図２５】
0005677924.tif 000026
【図２６】
0005677924.tif 000027
【図２７】
0005677924.tif 000028
【図２８】
0005677924.tif 000029
【図２９】
0005677924.tif 000030
【図３０】
0005677924.tif 000031
【図３１】
0005677924.tif 000032
【図３２】
0005677924.tif 000033
【図３３】
0005677924.tif 000034
【図３４】
0005677924.tif 000035