(57)【要約】【課題】１つの側面では、アプリケーションソフトウェアに対する操作をシナリオを用いて実行させる場合に、シナリオ再生時の操作対象の特定をより容易にする。【解決手段】シナリオ装置１０では、操作記録部２２でシナリオ生成処理が開始される。操作記録部２２は、表示部２０の画面に表示されるオブジェクトに対するユーザの操作、対象オブジェクト、及び画像上で対象オブジェクトを特定するための目印となる周辺オブジェクトを検出する。周辺オブジェクトには対象オブジェクトとの位置関係も検出されて目印情報として検出する。これら検出した対象オブジェクト、ユーザの操作を示す情報、及び目印情報を操作情報として含むシナリオを生成し、記録する。これにより、アプリケーションソフトウェア３２におけるＧＵＩによる操作について、操作の対象オブジェクトの目印情報を含めて画面に対する操作を特定するための操作情報を操作単位で記録することができる。【選択図】図１
2015049520.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
ことを含む処理をコンピュータに実行させるためのシナリオ生成プログラム。
【請求項２】
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
請求項１に記載のシナリオ生成プログラム。
【請求項３】
前記位置関係を示す情報は、前記周辺オブジェクトから前記対象オブジェクトへ向かう方向を示す情報である
請求項１または請求項２に記載のシナリオ生成プログラム。
【請求項４】
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
ことを含む処理をコンピュータに実行させるためのシナリオ実行プログラム。
【請求項５】
前記ユーザ操作が可能な領域の画像を示す情報として、前記アプリケーションソフトウェアの実行時における画面上の表示領域の画像を示す情報を複数取得し、取得した複数の画像を示す情報に基づいて、前記ユーザ操作が可能なユーザ操作領域の一枚画像を示す情報を作成し、
作成した前記一枚画像を示す情報に基づいて前記対象オブジェクトの位置を特定する
請求項４に記載のシナリオ実行プログラム。
【請求項６】
前記ユーザ操作が可能な領域の画像を示す情報から前記対象オブジェクトの位置を特定できないとき、前記読み取ったシナリオが前記アプリケーションソフトウェアの実行に不適であると判定する
請求項４または請求項５に記載のシナリオ実行プログラム。
【請求項７】
コンピュータが、
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
ことを含むシナリオ生成方法。
【請求項８】
コンピュータが、
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
ことを含むシナリオ実行方法。
【請求項９】
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する第１検出部と、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出する第２検出部と、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する生成部と、
を備えたシナリオ生成装置。
【請求項１０】
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取るシナリオ読取部と、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得する取得部と、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する特定部と、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する実行部と
を備えたシナリオ実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置に関する。
【背景技術】
【０００２】
コンピュータ上で実行されるアプリケーションソフトウェアにおけるユーザの操作について、マウス等のポインティングデバイスによって行うグラフィカルユーザインタフェース（ＧＵＩ）が使用される場合がある。ＧＵＩを使用するアプリケーションソフトウェアに対して、ユーザ操作時の動作を確認したり改版時における動作を確認したりするために、ユーザの操作手順をファイルに記録し、記録したファイルに従って操作を自動的に実行する試験が行われる場合もある。
【０００３】
例えば、コンピュータによって、アプリケーションソフトウェアにおけるＧＵＩによるユーザの操作が、操作の手順に従ってシナリオと呼ばれるファイルに記録される。記録されたシナリオに従ってＧＵＩによる操作をコンピュータに自動的に実行させることによって、アプリケーションソフトウェアのユーザ操作時の動作が確認されたり改版時における動作が確認されたりする。
【０００４】
ＧＵＩによる操作を自動的に実行させるためのシナリオを生成する技術の一例として、マウス等による入力操作時の表示画像から、操作位置と操作位置を含む範囲の画像及び操作の情報を含むシナリオを生成する技術が知られている。生成されたシナリオに従うＧＵＩによる操作では、操作位置を含む範囲の画像を操作対象のオブジェクトとして、記録されている操作位置に基づき操作対象のオブジェクトの表示位置までマウスカーソル等が移動されて、操作（例えば所謂クリック）が実行される。
【０００５】
また、画面に表示される操作対象を特定するために、操作対象のオブジェクトが文字情報である場合に、文字情報を検索する技術が知られている。また、ユーザの操作を示す情報と共にユーザの操作時の画面の画像が記録されるシナリオを生成する技術の一例に、アプリケーションソフトウェアにおける操作時の画面の画像をシナリオに記憶する技術も知られている。シナリオにユーザの操作時の画面の画像を記憶することにより、ユーザは容易に操作内容を把握することができ、またシナリオの編集を容易に行うことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−２２１３１８号公報
【特許文献２】特開２０１１−２２７０５号公報
【特許文献３】特開２０１０−１９８４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、ＧＵＩによるユーザの操作が記録されたシナリオに従って自動的に操作が実行される場合、画面上における座標等の操作位置がシナリオに記録され、記録されている座標等の操作位置で操作が実行される。しかしながら、ＧＵＩを使用するアプリケーションソフトウェアは、ＧＵＩに影響する内容の変更及び改版が行われる場合がある。例えば、画面に表示される文字サイズが変更されたり、画面に表示されるウィンドウサイズが変更される場合である。
【０００８】
画面に表示される文字サイズの変更またはウィンドウサイズの変更が生じる場合、文字サイズまたはウィンドウサイズに応じて、シナリオに記録されているマウス等による画面上における座標等の操作位置が移動する場合がある。例えば、シナリオの記録時における文字サイズより大きいまたは小さい文字サイズにアプリケーションソフトウェアの内容が変更される場合、変更前後の文字サイズの差分に応じて画面上における座標等の操作位置が移動する。また、ウィンドウの外郭付近の操作位置がシナリオに記録されており、シナリオの記録時におけるウィンドウより小さいウィンドウにアプリケーションソフトウェアの内容が変更される場合、ウィンドウ外の座標が操作位置になる。
【０００９】
従って、シナリオ生成時の操作対象の操作位置が変更されるとシナリオ生成時の操作位置に操作対象が存在せずに、シナリオに従う操作の継続が困難な操作エラーが発生する。操作エラーが発生した場合、ユーザは、作成済みのシナリオを再作成したり、作成済みのシナリオを修正したりするので、シナリオを用いて行う作業の効率が低下する。
【００１０】
一方、マウス等による入力操作時の表示画像から、操作位置を含む範囲の画像を操作対象のオブジェクトとしてシナリオを生成する技術によれば、操作位置を含む範囲の画像からオブジェクトを特定できる。ところが、記録されている操作位置に基づき操作対象に対して操作が実行されるので、シナリオ実行時の操作位置が移動すると、座標等の操作位置に操作対象が存在せずに、シナリオに従う操作の継続が困難な操作エラーが発生する場合がある。また、同一画像が複数存在する場合、シナリオに記録されたオブジェクトを特定することが困難である。また、ウィンドウ外にオブジェクトが存在する場合も、オブジェクトを特定することが困難である。従って、作成済みのシナリオを再作成したり、作成済みのシナリオを修正したりするので、シナリオを用いて行う作業の効率が低下する。
【００１１】
また、操作対象のオブジェクトが文字情報である場合、文字情報を検索することで、画面に表示される文字を特定することはできる。しかし、記録されている操作位置に基づき操作が実行されるので、シナリオ実行時の操作位置がシナリオ生成時の位置から移動すると、シナリオに従う操作の継続が困難な操作エラーが発生する。また、ユーザの操作を示す情報とユーザの操作時の画面の画像が記録される技術では、記録されている操作位置に基づき操作が実行されるので、シナリオ実行時の操作位置が移動すると、シナリオに従う操作の継続が困難な操作エラーが発生する場合がある。
【００１２】
１つの側面では、アプリケーションソフトウェアにおける操作をコンピュータに実行させる場合に、シナリオ再生時の操作対象の特定をより容易にすることを目的とする。
【課題を解決するための手段】
【００１３】
開示の技術は、コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び対象オブジェクトに対するユーザ操作を示す情報を検出する処理をコンピュータに実行させる。また、画面に表示されるオブジェクトの中から、対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び画面上における対象オブジェクトと周辺オブジェクトとの位置関係を検出する処理をコンピュータに実行させる。さらに、ユーザ操作を示す情報、対象オブジェクトを示す情報、周辺オブジェクトを示す情報、及び位置関係を示す情報を関連付けてシナリオを生成する処理をコンピュータに実行させる。
【発明の効果】
【００１４】
１つの態様では、アプリケーションソフトウェアにおける操作をコンピュータに実行させる場合に、シナリオ再生時の操作対象の特定をより容易にすることができる、という効果を有する。
【図面の簡単な説明】
【００１５】
【図１】シナリオ装置の構成の一例を示すブロック図である。
【図２】第１実施形態にかかるコンピュータで実現するシナリオ装置の一例を示すブロック図である。
【図３】シナリオ生成時に表示されるウィンドウ領域の一例を示すイメージ図である。
【図４】シナリオ生成時に表示されるウィンドウ領域の一例を示すイメージ図である。
【図５】シナリオ装置におけるＧＵＩテストの流れの一例を示すフローチャートである。
【図６】操作記録プログラムの処理の流れの一例を示すフローチャートである。
【図７】チェックボックスの画像の一例を示すイメージ図である。
【図８】クローズアイコンの画像の一例を示すイメージ図である。
【図９】文字列が表示されたボタンの画像の一例を示すイメージ図である。
【図１０】テキストボックスの画像の一例を示すイメージ図である。
【図１１】ラジオボタンの画像の一例を示すイメージ図である。
【図１２】コンボボックスの画像の一例を示すイメージ図である。
【図１３】シナリオを出力する処理の流れの一例を示すフローチャートである。
【図１４】画面に表示されるウィンドウ領域の一例を示すイメージ図である。
【図１５】試験シナリオの一例を示すイメージ図である。
【図１６】自動操作プログラムの処理の流れの一例を示すフローチャートである。
【図１７】スクロールバー領域の説明図である。
【図１８】垂直スクロールバー領域の説明図である。
【図１９】ドラッグ操作する場合に座標を決定する過程の説明図である。
【図２０】上下の画像を連結する場合の一例を示す説明図である。
【図２１】左右の画像を連結する場合の一例を示す説明図である。
【図２２】複数の領域を連結して一枚画像を作成する場合の一例を示す説明図である。
【図２３】関係定義における方向による判定の一例を示す説明図である。
【図２４】関係定義における方向による判定の一例を示す説明図である。
【図２５】関係定義における表とみなす判定の一例を示す説明図である。
【図２６】関係定義におけるメッシュ座標判定の一例を示す説明図である。
【図２７】距離定義の一例を示す説明図である。
【図２８】距離定義の一例を示す説明図である。
【図２９】操作のエミュレーション処理の流れの一例を示すフローチャートである。
【図３０】画面に表示されるウィンドウ領域の一例を示すイメージ図である。
【図３１】第２実施形態にかかるコンピュータシステムで実現するシナリオ装置の一例を示すブロック図である。
【図３２】第３実施形態にかかるコンピュータシステムで実現するシナリオ装置の一例を示すブロック図である。
【図３３】第４実施形態にかかるコンピュータシステムで実現するシナリオ装置の一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。本実施形態は、ＧＵＩによるユーザ操作を試験する場合に開示の技術を適用するものである。
【００１７】
（第１実施形態）
図１に、本実施形態に係るシナリオ装置１０の一例を示す。シナリオ装置１０は、開示の技術におけるシナリオ生成プログラム及びシナリオ実行プログラムによる処理を実行させることが可能な装置の一例である。シナリオ装置１０は、ＣＰＵ１２及びメモリ１４を含んでおり、メモリ１４には操作記録プログラム２８、自動操作プログラム３０、及びシナリオ生成とシナリオ実行の対象となるＧＵＩを使用するアプリケーションソフトウェア３２が記憶されている。なお、図１では、アプリケーションソフトウェア３２について、「アプリケーションソフトウェア」を「アプリケーション」と表記している。また、メモリ１４には、シナリオを含むファイル３４が記憶されている。ＣＰＵ１２は、操作記録プログラム２８を実行することによって、操作記録部２２として動作し、自動操作プログラム３０を実行することによって、自動操作部２４として動作する。また、ＣＰＵ１２が操作記録プログラム２８を実行することによって、シナリオ装置１０はシナリオ生成装置１０Ａとして動作する。また、ＣＰＵ１２が自動操作プログラム３０を実行することによって、シナリオ装置１０はシナリオ実行装置１０Ｂとして動作する。なお、ＣＰＵ１２は、例えばＯＳ(Operating System)により提供されるＧＵＩ機能を実行することによって、ユーザインタフェースアプリケーション部２６として動作する。なお、ユーザインタフェースアプリケーション部２６は、アプリケーションソフトウェア３２の実行によって、ＧＵＩによるユーザ操作を可能にするものである。
【００１８】
また、シナリオ装置１０は、ＶＲＡＭ（video RAM）１６、入力部１８、及びディスプレイ等の表示部２０を備えている。ＶＲＡＭ１６は、表示部２０に表示される内容を保持するメモリであり、ユーザインタフェースアプリケーション部２６から出力される画像を保持する。また、ＶＲＡＭ１６は、操作記録部２２及び自動操作部２４に画像を提供する。入力部１８は、マウス、キーボード、及びタッチパネル等によるユーザ入力を実行させるものであり、操作記録部２２及びユーザインタフェースアプリケーション部２６に接続されている。
【００１９】
シナリオ装置１０はシナリオを生成する場合、アプリケーションソフトウェア３２を実行し、ＣＰＵ１２が操作記録プログラム２８を実行することにより、操作記録部２２によるシナリオ生成処理が開始される。操作記録部２２は、実行されているアプリケーションソフトウェア３２により表示部２０の画面に表示されるオブジェクトに対するユーザの操作を、入力部１８の入力値を読み取ることで検出する。また、操作記録部２２は、ユーザの操作対象の対象オブジェクトを、表示部２０の画面に表示されるオブジェクトの画像をＶＲＡＭ１６から読み取ることで検出する。次に、操作記録部２２は、表示部２０の画面に表示される画像上で対象オブジェクトを特定するための目印を検出する。つまり、操作記録部２２は、対象オブジェクトの周辺に表示されているオブジェクトを対象オブジェクトに対して目印となる周辺オブジェクトとして検出する。また、操作記録部２２は、対象オブジェクトと周辺オブジェクトとの位置関係も検出する。なお、位置関係を示す情報を関連付けた周辺オブジェクトを示す情報を目印情報とすることができる。次に、検出した対象オブジェクト、ユーザの操作を示す情報、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報を操作情報として含むシナリオを生成し、メモリ１４のファイル３４に記録する。これにより、アプリケーションソフトウェア３２におけるＧＵＩによる操作について、操作時の座標を記録することなく、画面に対する操作を特定するための操作情報を操作の関係する一連の情報として記録することができる。
【００２０】
シナリオ装置１０は記録されているシナリオを実行する場合、アプリケーションソフトウェア３２を実行し、ＣＰＵ１２が自動操作プログラム３０を実行することにより、自動操作部２４によるシナリオ実行処理が開始される。自動操作部２４は、メモリに記録されているシナリオを読み取り、実行されているアプリケーションソフトウェア３２により表示部２０の画面に表示されるオブジェクトに対する操作を実行する。まず、実行されているアプリケーションソフトウェア３２により表示部２０の画面上においてユーザによるユーザ操作が可能な領域の画像情報を取得する。例えば、アプリケーションソフトウェア３２の実行時に、表示部２０の画面上で表示領域がウィンドウの枠内に制限されている場合、ユーザ操作が可能な領域がウィンドウの枠外になる場合がある。そこで、自動操作部２４は、ユーザ操作が可能なウィンドウの枠内外の領域を画像として取得する。次に、自動操作部２４は、シナリオに記録された操作情報に含まれる対象オブジェクトについて、取得した画像情報から、ユーザ操作が可能なウィンドウの枠内外の領域の画像で対象オブジェクトの位置を特定する。次に、自動操作部２４は、操作情報に含まれる対象オブジェクトに対するユーザ操作を示す情報に基づいて、特定した位置の対象オブジェクトに対する操作を実行する。これにより、アプリケーションソフトウェア３２の一部が変更されて、操作位置が移動された場合であっても、操作を特定でき、シナリオにおける操作について操作エラーが生じることなく、遂行できる。
【００２１】
なお、シナリオ装置１０は開示の技術におけるシナリオ装置の一例であり、シナリオ生成装置１０Ａは開示の技術におけるシナリオ生成装置の一例であり、シナリオ実行装置１０Ｂは開示の技術におけるシナリオ実行装置の一例である。また、操作記録プログラム２８は開示の技術におけるシナリオ生成プログラムの一例であり、自動操作プログラム３０は開示の技術におけるシナリオ実行プログラムの一例である。また、アプリケーションソフトウェア３２は開示の技術におけるアプリケーションソフトウェアの一例である。
【００２２】
図２に、シナリオ装置１０をコンピュータ４０で実現する一例を示す。コンピュータ４０はＣＰＵ４２、メモリ５０、及び不揮発性の格納部５２を備えている。ＣＰＵ４２、メモリ５０、及び格納部５２は、バス５４を介して互いに接続されている。また、コンピュータ４０は、ディスプレイ等の表示部４４、キーボード及びマウス等の入力部４６を備え、表示部４４及び入力部４６はバス５４に接続されている。また、コンピュータ４０は、記録媒体４９が挿入され、挿入された記録媒体４９に対して読み書きするための装置（ＩＯ装置）４７がバス５４に接続されている。また、コンピュータ４０は、バス５４に接続されるＶＲＡＭ４８を備えている。なお、格納部５２はＨＤＤ(Hard Disk Drive)やフラッシュメモリ等によって実現できる。また、コンピュータ４０はコンピュータネットワーク等に接続するためのインタフェースを備えることができる。
【００２３】
格納部５２には、ＯＳ（Operating System）５６及びコンピュータ４０をシナリオ装置１０として機能させるための操作記録プログラム６０及び自動操作プログラム６８が記憶されている。また、格納部５２には、ＧＵＩアプリケーションプログラム５８、及びファイル８０が記憶されている。ＣＰＵ４２がＯＳ５６及びＧＵＩアプリケーションプログラム５８を実行することで、コンピュータ４０は図１に示すユーザインタフェースアプリケーション部２６として動作する。また、ＧＵＩアプリケーションプログラム５８は、図１に示すアプリケーションソフトウェア３２に対応する。なお、ＧＵＩアプリケーションプログラム５８は、ＧＵＩ実装の適否を判定（詳細後述）するための試験プログラムとして、入れ替えが可能である。
【００２４】
格納部５２に格納された操作記録プログラム６０は、入力監視プロセス６１、画像キャプチャプロセス６２、ＯＣＲ文字列取得プロセス６３、画像切取プロセス６４、シナリオ出力プロセス６５、画像検索プロセス６６、及び位置関係検出プロセス６７を含んでいる。ＣＰＵ４２が操作記録プログラム６０を格納部５２から読み出してメモリ５０に展開し、操作記録プログラム６０が有する各プロセスを実行することで、コンピュータ４０は図１に示すシナリオ装置１０及びシナリオ生成装置１０Ａとして動作する。また、ＣＰＵ４２が操作記録プログラム６０を実行することで、コンピュータ４０は図１に示す操作記録部２２として動作する。なお、操作記録プログラム６０は、図１に示す操作記録プログラム２８に対応する。
【００２５】
また、格納部５２に格納された自動操作プログラム６８は、シナリオ読み込みプロセス６９、画像検索プロセス７０、スクロールバー検出プロセス７１、ＯＣＲ指定文字列検索プロセス７２、及び一枚画像作成プロセス７３を含んでいる。また、自動操作プログラム６８は、位置関係検出プロセス７４、イベントエミュレートプロセス７５、画像キャプチャプロセス７６、スクロール領域検出プロセス７７、及び矩形領域検索プロセス７８を含んでいる。ＣＰＵ４２が自動操作プログラム６８を格納部５２から読み出してメモリ５０に展開し、自動操作プログラム６８が有する各プロセスを実行することで、コンピュータ４０は図１に示すシナリオ装置１０及びシナリオ実行装置１０Ｂとして動作する。また、ＣＰＵ４２が自動操作プログラム６８を実行することで、コンピュータ４０は図１に示す自動操作部２４として動作する。なお、自動操作プログラム６８は、図１に示す自動操作プログラム３０に対応する。
【００２６】
また、格納部５２には、試験シナリオ８１、登録済みアイコン８２、及びスクロールバー矢印アイコン８３を含むファイル８０が記憶されている。なお、ファイル８０は、図１に示すファイル３４に対応する。
【００２７】
なお、シナリオ装置１０はコンピュータネットワークに接続できるようにしてもよい。つまり、シナリオ装置１０はコンピュータネットワークに接続することまたは非接続にすることに限定されない。シナリオ装置１０に示す一例のように、コンピュータ４０のみで実現してもよく、複数のコンピュータによりシナリオ装置１０を実現してもよい。
【００２８】
ここで、表示部４４の画面に表示されるオブジェクトに対して、マウス等の入力部４６のよりユーザの操作を、シナリオに登録する場合を簡単に説明する。
【００２９】
図３に、アプリケーションソフトウェア３２の実行により表示部４４の画面に表示されるウィンドウ領域１００、１１２を示す。ウィンドウ領域１００は、シナリオを生成する場合に、アプリケーションソフトウェア３２の実行により表示部４４の画面に表示されるウィンドウ領域を示す。また、ウィンドウ領域１１２は、シナリオ生成後に文字の大きさが変更されたアプリケーションソフトウェア３２の実行により表示部４４の画面に表示されるウィンドウ領域を示す。ウィンドウ領域１００は、アプリケーションソフトウェア３２においてオブジェクトに対するユーザの操作を可能とする入出力ウィンドウ領域１０２を含む。入出力ウィンドウ領域１０２には、ユーザ操作の対象となるオブジェクトであるボタン画像１０４が表示される。ボタン画像１０４には、「設定」の文字を有する文字列情報１０６が表示されている。また、入出力ウィンドウ領域１０２には、ボタン画像１０４に対するマウス等の入力部４６の操作を促す「押してください」の文字を有する文字列情報１０８が表示されている。
【００３０】
図３の一例においてシナリオを生成する場合、入力部４６によるユーザ操作として、ボタン画像１０４にポインタを移動させ、クリック操作により、位置１１０を指示することを想定する。シナリオにクリック操作時の位置（座標）１１０を記録することで、記録されている位置１１０でクリック操作させることにより、ユーザ操作を再現できる。ところが、シナリオを生成した後に、アプリケーションソフトウェア３２に文字の大きさを変更する修正を施すと、ボタン画像１０４の表示位置が移動される。従って、記録されている位置１１０でクリック操作させると、対象オブジェクト（ボタン）は存在せずにユーザ操作を再現できない。
【００３１】
図４に、表示部４４の画面に表示される他の一例としてのウィンドウ領域１０１、１１３を示す。ウィンドウ領域１０１は、シナリオを生成する場合に、アプリケーションソフトウェア３２の実行により表示部２０の画面に表示されるウィンドウ領域を示す。また、ウィンドウ領域１１３は、シナリオ生成後にウィンドウ領域１０１の大きさが変更されたアプリケーションソフトウェア３２の実行により表示部４４の画面に表示されるウィンドウ領域を示す。ウィンドウ領域１１３は、ウィンドウ領域１０１より横方向に距離Ｌだけウィンドウ領域１１３の大きさが小さくされている。また、ウィンドウ領域１０１、１１３は、入出力ウィンドウ領域１０２内に表示される画像を移動させるためのスクロールバー領域画像１０３を含む。
【００３２】
図４の一例でシナリオを生成する場合、ユーザ操作として、スクロールバー領域画像１０３にポインタを移動させ、クリック操作で位置１０５を指示したのちにドラッグ操作で入出力ウィンドウ領域１０２内に表示される画像を移動させることを想定する。ところが、ウィンドウ領域１１３の大きさが横方向に小さくされているので、スクロールバー領域画像１０３の表示位置が移動される。従って、記録されている位置１０５の位置でクリック操作させドラッグ操作させても、対象オブジェクト（スクロールバー）は存在せずにユーザ操作を再現できない。
【００３３】
そこで、本実施形態では、対象オブジェクトの画面上の位置座標を記録せずに、対象オブジェクトの周辺オブジェクトを目印としてシナリオに記録し、目印を基にして対象オブジェクトを特定する。
【００３４】
次に、本実施形態の作用を説明する。
図５に、シナリオ装置１０におけるアプリケーションソフトウェア３２のＧＵＩテストの流れの一例を示す。
【００３５】
まず、シナリオ装置１０は、ユーザによる操作をシナリオに記録する（ステップ２００）。つまり、ＣＰＵ４２は、ステップ２００において、アプリケーションソフトウェア３２の実行により表示部２０にオブジェクトが表示される画面に対して行われるユーザ操作を試験シナリオ８１に記録する。次に、シナリオ装置１０は、シナリオに記録されているＧＵＩ動作を再生する（ステップ２０２）。つまり、ＣＰＵ４２は、記録された試験シナリオ８１に従ってユーザ操作を再現する。次に、シナリオ装置１０は、シナリオによるユーザ操作を遂行できたか否かを判断することで、ＧＵＩ実装の適否を判定する。つまり、ＣＰＵ４２は、ステップ２０４において、シナリオに記録されているユーザ操作を全て完了したか否かを判断し、肯定判断の場合にステップ２０６でＧＵＩ実装に問題はないと判定する。一方、ステップ２０４で否定判断の場合にステップ２０８でＧＵＩ実装に問題ありと判定する。
【００３６】
図５のステップ２００の処理は、操作記録プログラム６０による処理に対応し、図５のステップ２０２〜ステップ２０８の処理は、自動操作プログラム６８の処理に対応する。
【００３７】
図６に、操作記録プログラム６０の処理の流れの一例を示す。なお、以下の説明では、入力部４６の一例として、マウス４６Ｍ及びキーボード４６Ｋを用いた場合を説明する。
【００３８】
なお、表示部４４には、マウスの移動に対応してマウスカーソルの位置が表示される。マウス４６Ｍは、マウスボタンを備えている。マウスボタンの押下状態はマウスダウンに対応し、及びマウスボタンの押下から戻す状態はマウスアップのマウスボタン状態に対応する。マウスカーソルの位置とマウスボタン状態の検出には、ＯＳ５６に標準的に含まれているＡＰＩ（Application Program Interface）を用いることができる。また、マウスボタン状態は、マウスダウン・マウスアップイベントをフックすることによって実現が可能である。また、ユーザは、マウス４６Ｍによりドラッグ操作が可能である。コンピュータ４０において、ドラッグ操作か否かの判定は、マウスボタンのダウン時とアップ時におけるマウスカーソル位置の座標のユークリッド距離等の距離を算出し、所定閾値を超えた場合にドラッグと判定することができる。
【００３９】
各種ＡＰＩとして、Microsoft Windows（登録商標）  ＡＰＩの一例に、マウスカーソルの位置を取得するＡＰＩ（GetCursorPos）が知られている。また、マウスに関係するＡＰＩの一例には、マウスイベント発生を検知するＡＰＩ（SendInput/mouse_event）が知られている。また、マウスボタンイベントを取得するＡＰＩ（グローバルフックと呼ばれる手法）も知られている。また、スクリーンショットを取得するＡＰＩ（Bitblt）も知られている。
【００４０】
まず、ＣＰＵ４２は、操作記録プログラム６０に含まれる各プロセスを実行する。具体的には、ＣＰＵ４２は、ステップ２１０及び２１２による入力監視プロセス６１を実行し、マウス４６Ｍ及びキーボード４６Ｋによる入力を監視する。詳細にはＣＰＵ４２は、ステップ２１０において、マウス４６Ｍまたはキーボード４６Ｋによる入力値を読み取る。マウス４６Ｍまたはキーボード４６Ｋによる入力（ユーザによる入力）がなされるまで、ＣＰＵ４２は、否定判断してステップ２１０へ戻る。マウス４６Ｍまたはキーボード４６Ｋによる入力（ユーザによる入力）がなされると、ＣＰＵ４２は、ステップ２１２で肯定判断し、ステップ２１４で入力操作はマウス４６Ｍによるものか否かを判断する。マウス４６Ｍによる入力操作の場合、ＣＰＵ４２は、ステップ２１４で肯定判断し、ステップ２１８へ処理を移行する。一方、キーボード４６Ｋによる入力操作の場合、ＣＰＵ４２は、ステップ２１４で否定判断し、ステップ２１６でキー情報を保持し、ステップ２３２へ処理を移行する。
【００４１】
つまり、ＣＰＵ４２は、ステップ２１０で、マウスカーソルの位置とマウスボタンイベント、またはキーボードイベントを検出する。次にＣＰＵ４２は、キーボードイベントを検出すると（ステップ２１２で肯定判断でかつステップ２１４で否定判断）、キー情報を保持し（ステップ２１６）、ステップ２３２へ処理を移行する。一方、ＣＰＵ４２は、マウスボタンイベントを検出すると（ステップ２１２及びステップ２１４で肯定判断）、ステップ２１８へ処理を移行する。
【００４２】
次に、ＣＰＵ４２は、ステップ２１８で、画像キャプチャプロセス６２及び画像検索プロセス６６を実行する。詳細には、画像キャプチャプロセス６２の実行により、表示部４４の画面の画像を取得し、画像検索プロセス６６の実行により、マウス４６Ｍによる操作位置を含む領域の画像と一致する画像をファイル８０に保持された登録済みアイコン８２から検索する。つまり、ＣＰＵ４２は、ステップ２１８で、マウス４６Ｍによる操作位置を含む画像がファイル８０内に登録済みアイコン８２として予め登録されたアイコンの画像であるか否かを判断する。予め登録されたアイコンの画像であるか否かの判断は、マウス４６Ｍが操作されたときのマウスカーソルの位置を含む所定サイズの画像に、予め登録されたアイコン画像が一致または含まれるか否かを判定することにより判断できる。
【００４３】
マウス４６Ｍによる操作位置を含む画像が登録済みのアイコンの画像である場合、ＣＰＵ４２は、ステップ２１８で肯定判断し、ステップ２２０で、アイコンの種別及び状態を示す情報を一時的に記憶する。次に、ＣＰＵ４２は、ステップ２２２で、ＯＣＲ文字列取得プロセス６３を実行して、アイコンの画像近傍に存在する文字列を探索し、探索結果の文字列情報を次のステップ２２６で一時的に記憶し、ステップ２３０へ処理を移行する。
【００４４】
ＯＣＲ文字列取得プロセス６３の実行による文字列の探索は、公知技術のＯＣＲ（Optical Character Reader）等の処理により実現できる。ＣＰＵ４２が文字列を探索する場合、アイコンの種別により定められた方向にある最近接文字列を第一候補とすることが好ましい。アイコンの種別により定められた方向に文字列が存在しない場合、ＣＰＵ４２は、別の方向の最近接文字列を探索することを、文字列が探索されるまで繰り返すことが好ましい。文字列を探索する場合における方向の優先順位は、アイコンの種類毎に順位を定めておくことが好ましい。
【００４５】
一方、マウス４６Ｍによる操作位置を含む画像が登録済みのアイコンの画像でない場合、ＣＰＵ４２は、ステップ２１８で否定判断し、ステップ２２４でマウス４６Ｍによる操作位置を含む画像が文字列を含むか否かを判断する。マウス４６Ｍによる操作位置を含む画像が文字列を含む場合、ＣＰＵ４２は、ステップ２２４で肯定判断し、ステップ２２６へ処理を移行する。一方、マウス４６Ｍによる操作位置を含む画像が文字列を含まない場合、ＣＰＵ４２は、ステップ２２４で否定判断し、ステップ２２８でマウス４６Ｍによる操作位置を含む画像を一時的に記憶し、ステップ２３０へ処理を移行する。
【００４６】
図７に、登録済みアイコン８２の画像の一例としてチェックボックスの画像を示す。図７は、オン状態のチェックボックスの画像８４及びオフ状態のチェックボックスの画像８５を含む表示領域８６を示している。
【００４７】
例えば、マウス４６Ｍによってチェックボックスがクリックされた場合、チェックボックスの状態は、オン状態からオフ状態に遷移するパターンと、オフ状態からオン状態に遷移するパターンが考えられる。そこで、オン状態のアイコン（チェックボックスの画像８４）とオフ状態のアイコン（チェックボックスの画像８５）の両方を記録しておき、画像検索プロセス６６の実行により画面内を探索する。画面内の探索結果で、チェックボックスの画像が占める矩形領域内にマウス４６Ｍの操作時の座標（クリック座標）が存在した場合、チェックボックスがクリックされた操作として記録する（ステップ２２０）。ステップ２２０の記録では、登録済みアイコン８２の種別及び状態も記録する。図７の例では、種別として、チェックボックスが記録され、状態としてオン状態またはオフ状態が記録される。
【００４８】
また、マウス４６Ｍによる操作位置を含む画像が登録済みのアイコンの画像である場合に近傍の文字列を探索する（ステップ２２２）。図７に示すチェックボックスの例ではアイコンの右側にラベルとなる文字列が位置している場合が多いので、チェックボックスについて定める方向を右側として、最近接文字列が第一候補として探索される。図７の例では、「チェックボックス」という文字列が探索される。
【００４９】
図８に、登録済みアイコン８２の画像の一例としてクローズアイコンの画像８８を示す。図８は、クローズアイコンの画像８８を含む表示領域８６を示している。クローズアイコンは左側に文字列が位置している場合が多いので、ＣＰＵ４２は、クローズアイコンについて定める方向を左側として、最近接文字列が第一候補として探索される。図８の例では、「ＦＵＪＩＴＳＵ  ＪＡＰＡＮ」という文字列が探索される。
【００５０】
図９に、マウス４６Ｍによる操作位置を含む画像の一例として、文字列が表示されたボタンの画像９０を示す。図９は、文字列が表示されたボタンの画像９０を含む表示領域８６を示している。例えば、文字列が表示されたボタンや図形が表示されたボタンは、文字列または未登録の画像がマウス４６Ｍにより指示（クリック）された操作と考えられる。ＣＰＵ４２は、ＯＣＲ文字列取得プロセス６３の実行で、マウス４６Ｍによる操作位置直下の文字列を取得できなかった場合（ステップ２２４で否定判断）、画像切取プロセス６４の実行で、所定の大きさの矩形領域の画像を切り取り記憶する（ステップ２２８）。図９に示す例では、文字列が表示されたボタンの画像９０が切り取られて記憶される。
【００５１】
図１０に、マウス４６Ｍによる操作位置を含む画像の一例として、テキストボックスの画像９２，９３を示す。図１０は、テキストボックスの画像９２，９３を含む表示領域８６を示している。例えば、テキストボックスは、マウス４６Ｍによる操作位置直下の文字列が空白または空であると考えられる。ＣＰＵ４２は、マウス４６Ｍによる操作位置直下の文字列が空白または空である場合（ステップ２２４で否定判断）、画像とみなし、所定の大きさの矩形領域を切り取り記憶する（ステップ２２８）。
【００５２】
図１１に、登録済みアイコン８２の画像の一例としてラジオボタンの画像を示す。図１１は、オフ状態のラジオボタンの画像９４及びオン状態のラジオボタンの画像９５を含む表示領域８６を示している。例えば、マウス４６Ｍによってラジオボタンがクリックされた場合、ラジオボタンの状態は、オン状態からオフ状態に遷移するパターンと、オフ状態からオン状態に遷移するパターンが考えられる。そこで、オン状態のアイコン（ラジオボタンの画像９５）とオフ状態のアイコン（ラジオボタンの画像９４）の両方を記録しておき、画像検索プロセス６６の実行により画面内を探索する。画面内の探索結果で、ラジオボタンの画像が占める円形領域内にマウス４６Ｍの操作時の座標（クリック座標）があった場合、ラジオボタンがクリックされた操作として記録する（ステップ２２０）。ステップ２２０の記録では、登録済みアイコン８２の種別及び状態も記録する。図７の例では、種別として、ラジオボタンが記録され、状態としてオン状態またはオフ状態が記録される。ラジオボタンの例ではアイコンの右側にラベルとなる文字列がある場合が多いので、ラジオボタンについて定める方向を右側として、最近接文字列が第一候補として探索される（ステップ２２２）。
【００５３】
図１２に、マウス４６Ｍによる操作位置を含む画像の一例として、コンボボックスの画像９７を示す。コンボボックスは、マウス４６Ｍによる操作により選択可能な情報を表示させるアイコンの画像９６を含む。ＣＰＵ４２は、マウス４６Ｍによる操作位置直下に文字列が存在しないので（ステップ２２４で否定判断）、画像とみなし、所定の大きさの矩形領域を切り取り記憶する（ステップ２２８）。
【００５４】
次に、図６に示すステップ２３０では、ＣＰＵ４２は、対象オブジェクトに対する目印と方向を検出し、検出結果を一時的に記憶する。つまり、ＣＰＵ４２は、ステップ２２２で探索した結果の文字列、ステップ２２４で肯定判断されたときの文字列、またはステップ２２８で記憶した画像の何れか１つを対象オブジェクトとする。そして、ＣＰＵ４２は、対象オブジェクトの周辺で最も近い文字列または画像を探索し、周辺オブジェクトとする。探索結果の周辺オブジェクトは、対象オブジェクトの目印となる。また、ＣＰＵ４２は、探索結果の文字列または画像（周辺オブジェクト）に対する対象オブジェクトからの方向を検出し、周辺オブジェクトに対応づける。次にＣＰＵ４２は、探索結果の周辺オブジェクトを示す情報及び対象オブジェクトからの方向を示す情報を一時的に記憶する。
【００５５】
次のステップ２３２では、ＣＰＵ４２は、一時的に記憶した文字列または画像（周辺オブジェクト）を示す情報及び対象オブジェクトからの方向を示す情報を含む操作情報を記録したシナリオを出力することにより、シナリオを生成する（詳細は後述）。
【００５６】
次に、ＣＰＵ４２は、ステップ２３４で、記録中止が要求されたか否かを判断し、否定判断の場合にステップ２１０へ戻り、肯定判断の場合に本処理ルーチンを終了する。なお、記録中止要求の一例は、使用頻度が少ない特殊なキーボードイベント（例えば、Ｃｔｒｌ＋Ａｌｔ＋Ｑ等）の検出を用いることができる。
【００５７】
次に、図１３を参照して、図６に示すステップ２３２の処理を詳細に説明する。なお、以下の説明では、ステップ２３２の処理で対象とするシナリオを試験シナリオ８１として説明する。
【００５８】
まず、ＣＰＵ４２は、図６に示すステップ２３２で、シナリオ出力プロセス６５を実行する。具体的には、ＣＰＵ４２は、ステップ２４０で最初のシナリオ出力であるか否かを判断し、肯定判断の場合にステップ２４２の処理へ移行し、否定判断の場合にステップ２４６の処理へ移行する。ステップ２４２では、ＣＰＵ４２が、試験シナリオ８１を新規に作成し、作成した試験シナリオ８１を記録可能に開く（ファイルオープン）。次に、ＣＰＵ４２は、ステップ２４４で、試験シナリオ８１によりＧＵＩ操作を実行する場合における実行順序を示す変数に「１」をセットする。一方、ステップ２４６では、ＣＰＵ４２が既存の試験シナリオ８１を更新記録可能に開く（追記ファイルオープン）。次に、ＣＰＵ４２は、ステップ２４８で、試験シナリオ８１によりＧＵＩ操作を実行する場合における実行順序を示す変数に「１」を加算してセットする。
【００５９】
次にＣＰＵ４２は、ステップ２５０で、記憶データに画像情報を含むか否かを判断する。なお、ステップ２５０で用いる記憶データは、ステップ２１６（図６）で保持したキー情報、及びステップ２２０（図６）で一時的に記憶したアイコンの種別及び状態を示す情報を含む。また、記憶データは、ステップ２２６（図６）で一時的に記憶した文字列を示す情報及びステップ２２８（図６）で保持した画像を示す情報を含む。また、記憶データは、ステップ２３０（図６）で一時的に記憶した周辺オブジェクトを示す情報及び対象オブジェクトからの方向を示す情報を含む。
【００６０】
記憶データに画像情報が含まれない場合、ＣＰＵ４２は、ステップ２５０で否定判断し、ステップ２５４の処理へ移行する。一方、記憶データに画像情報が含まれる場合、ＣＰＵ４２は、ステップ２５０で肯定判断し、ステップ２５２で、記憶データに含まれる画像情報に一意のファイル名を付与してファイル８０（図２）に記録する。次にＣＰＵ４２は、ステップ２５４で、図６に示す処理で一時的に記憶した情報または画像ファイル名を、試験シナリオ８１に実行順序変数をキーとして記録し、次のステップ２５６で、試験シナリオ８１を閉じる（ファイルクローズ）。
【００６１】
図１４に、アプリケーションソフトウェア３２の実行により表示部２０の画面に表示されるウィンドウ領域１１８の一例を示す。ウィンドウ領域１１８は、アプリケーションソフトウェア３２においてオブジェクトに対するユーザの操作を可能とする入出力ウィンドウ領域１０２を含む。入出力ウィンドウ領域１０２には、「設定」の文字列情報１０６が表示されるボタン画像１０４が表示される。また、ボタン画像１０４の周辺には矢印記号を示す画像１２０、及び「押してください」の文字列情報１０８が表示されている。また、ボタン画像１０４の周辺には「Ｍａｃｈｉｎｅ１」の文字列情報１２６が表示されている。また、入出力ウィンドウ領域１０２には、テキストボックスの画像９２，９３が表示されている。テキストボックスの画像９２の周辺には「ご氏名」の文字列情報１２２が表示され、テキストボックスの画像９３の周辺には「ご住所」の文字列情報１２４が表示されている。
【００６２】
また、図１４には、入出力ウィンドウ領域１０２における、マウス４６Ｍによるユーザ操作の操作位置１３０，１３２，１３４が示されている。
【００６３】
図１５に、図１４に示す操作位置１３０，１３２，１３４の順に、マウス４６Ｍによるユーザ操作が実行された場合に出力される試験シナリオ８１の一例を示す。図１５に示す試験シナリオ８１の第１行には、操作位置１３０でマウス４６Ｍがクリックされたときに得られる操作情報が記録されている。つまり、マウス４６Ｍによる操作位置１３０の直下の文字列が「設定」であることを示している。また、対象オブジェクトである「設定」の文字列を一意に決定するための目印として、周辺オブジェクト、及び周辺オブジェクトから対象オブジェクト（「設定」の文字列）へ向かう方向を示す情報が記録されている。第１の目印は、ボタン画像１０４の左側に位置する矢印記号を示す画像１２０（図１５では画像１と表記）を示し、第２の目印は、ボタン画像１０４のさらに左側に位置する「押してください」の文字列情報１０８を示している。第３の目印は、ボタン画像１０４の下側に位置する「Ｍａｃｈｉｎｅ１」の文字列情報１２６を示している。
【００６４】
図１５に示す試験シナリオ８１の第２行には、操作位置１３２でマウス４６Ｍがクリックされたときに得られる操作情報が記録されている。つまり、マウス４６Ｍによる操作位置１３２の直下の文字列が空白であることを示している。また、文字列が空白である領域を対象オブジェクトとして一意に決定するための目印として、左側に位置する「ご氏名」の文字列情報１２２、及び左側に位置する「ご住所」の文字列情報１２４が記録されている。また、試験シナリオ８１の第３行には、キーイベントである旨が記録され、項目「Ｔｙｐｅ」の欄に「aaa」のキー情報が記録されている。また、試験シナリオ８１の第４行には、キーイベントである旨が記録され、項目「Ｔｙｐｅ」の欄に「改行キー」のキー情報が記録されている。また、試験シナリオ８１の第５行には、操作位置１３４でマウス４６Ｍがクリックされたときに得られる操作情報が記録されている。
【００６５】
図１５に示す試験シナリオ８１は、対象オブジェクトを一意に決定するための目印として第１〜第３までの目印を記録した場合を示しているが、目印は３つに限定されるものではない。なお、対象オブジェクトを一意に決定するための周辺オブジェクトから対象オブジェクトへ向かう方向を示す情報を位置関係情報とすることができる。また、対象オブジェクトを一意に決定するための情報として、周辺オブジェクトを示す情報及び位置関係情報は目印情報に対応する。
【００６６】
なお、ＣＰＵ４２により実行されるステップ２１０の処理は、コンピュータ４０がシナリオ生成装置として動作する場合における第１検出部の処理に対応する一例である。また、ＣＰＵ４２により実行されるステップ２３０の処理は、コンピュータ４０がシナリオ生成装置として動作する場合における第２検出部の処理に対応する一例である。さらに、ＣＰＵ４２により実行されるステップ２３２の処理は、コンピュータ４０がシナリオ生成装置として動作する場合における生成部の処理に対応する一例である。
【００６７】
次に、試験シナリオ８１に従って実行される自動操作の処理を説明する。
図１６に、自動操作プログラム６８の処理の流れの一例を示す。
【００６８】
まず、ＣＰＵ４２は、自動操作プログラム６８に含まれる各プロセスを実行する。具体的には、ＣＰＵ４２は、ステップ３００によるシナリオ読み込みプロセス６９を実行することにより、試験シナリオ８１を読み取る。次に、ＣＰＵ４２は、ステップ３０２において、試験シナリオ８１に記憶されているコマンドがマウス４６Ｍの操作を示す情報であるか否かを判断する。試験シナリオ８１に記憶されているコマンドがキーボード４６Ｋの操作を示す情報の場合、ＣＰＵ４２はステップ３０２で否定判断し、ステップ３０４で試験シナリオ８１に記憶されているキーイベントを発生してステップ３３４の処理へ移行する。なお、ＣＰＵ４２は、ステップ３０４で実行するキーイベントを、キーボードイベントのエミュレーションとしてイベントエミュレートプロセス７５の実行により行う。
【００６９】
試験シナリオ８１に記憶されているコマンドがマウス４６Ｍの操作を示す情報の場合、ＣＰＵ４２はステップ３０２で肯定判断し、ステップ３０６で操作対象の画面の画像を取得する（画面をキャプチャする）。次に、ＣＰＵ４２は、ステップ３０８で、取得した画像におけるスクロール対象領域を示す画像の存在の有無を判断する。
【００７０】
つまり、ＣＰＵ４２は、スクロール対象領域を推定するために、取得した操作対象の画面の画像からスクロールバーを探索し、スクロールバーが探索された場合、ウィンドウ内の画像をスクロールするためのつまみの位置を特定する。具体的には、ＣＰＵ４２は、画像キャプチャプロセス７６を実行することにより、ウィンドウの画像を取得する（スクリーンショットを取ってビットマップイメージを取得する）。次に、ＣＰＵ４２は、スクロールバー検出プロセス７１を実行する。
【００７１】
ここで、ファイル８０の登録済みアイコン８２に、スクロールバーが占める領域の両端に存在するアイコン（上矢印アイコンと下矢印アイコンの組、または左矢印アイコンと右矢印アイコンの組）を予め登録しておく。スクロールバー検出プロセス７１では、スクロールバーが占める領域の両端に存在するアイコンが同一直線状に位置する場合に、登録されているアイコン間の領域がスクロールバー領域であると判定される。また、つまみ可動部（ボタンより内側の部分）が垂直スクロールバーの場合、スクロール対象領域内の画像をスクロールするためのつまみは、可動部の任意のｘ座標に対して幅１ピクセルの垂直に長い領域とすると、色または濃度が全て同じであると考えられる。ところが、可動部とつまみ部の境界線において、連続性が失われるため、境界線をもってつまみの位置を特定することができる。
【００７２】
次にＣＰＵ４２は、取得した画像にスクロール対象領域を示す画像が存在しない場合、ステップ３０８で肯定判断し、ステップ３１４へ処理を移行する。一方、取得した画像にスクロール対象領域を示す画像が存在する場合、ＣＰＵ４２は、ステップ３０８で否定判断し、ステップ３１０で、スクロール領域検出プロセス７７を実行することにより、スクロール対象となる画面内の矩形領域を特定する。次に、ＣＰＵ４２は、ステップ３１２で、一枚画像作成プロセス７３を実行することにより、スクロール領域全体を示す一枚画像を作成する。一枚画像の作成が終了すると、ＣＰＵ４２は、ステップ３１４へ処理を移行する。
【００７３】
なお、ステップ３１０の処理では、取得した画像内におけるスクロールバー領域から、スクロール対象となる画面内の矩形領域を特定できる。
【００７４】
図１７に、画面内にスクロールバー領域として垂直スクロールバー領域１４０と水平スクロールバー領域１４２の両方の領域が存在する場合に矩形領域を推定するイメージを示す。画面内に、垂直スクロールバー領域１４０と水平スクロールバー領域１４２の両方の領域が存在する場合、両者の占有領域から、スクロール対象となる矩形領域（スクロール対象領域）１４４を推定可能である。つまり、垂直スクロールバー領域１４０と、水平スクロールバー領域１４２とを辺とする領域をスクロール対象領域１４４として推定する。
【００７５】
図１８に、画面内にスクロールバー領域として垂直スクロールバー領域１４０のみ存在する場合にスクロール対象領域を推定するイメージを示す。スクロールバー領域として垂直スクロールバー領域１４０のみ存在する場合にスクロール対象領域を推定する処理として、次に示す第１の処理〜第８の処理をＣＰＵ４２が実行する一例がある。
【００７６】
第１の処理では、ＣＰＵ４２が、垂直スクロールバーのつまみ１４６を、垂直スクロールバー領域１４８内の上端に移動する。第２の処理では、ＣＰＵ４２が、画面の画像（スクリーンショット）を取得する。第３の処理では、ＣＰＵ４２が、垂直スクロールバー領域１４８内の下ボタン１５０を押下する。第４の処理では、ＣＰＵ４２が、再度、画面の画像（スクリーンショット）を取得する。第５の処理では、ＣＰＵ４２が、画面の変化点を全て抽出し、全ての変化点を含む変化領域１５２及び非変化領域１５８を求める。第６の処理では、ＣＰＵ４２が、変化領域１５２内の左端１５４のｘ座標を求め、矩形領域の左端と定める。第７の処理では、ＣＰＵ４２が、右端・上端・下端を求める。なお、第５の処理で求めた変化領域１５２内から求めることができる。第８の処理では、ＣＰＵ４２が、垂直スクロールバー領域１４８内の上ボタン１５６を押下してつまみ１４６の位置を最上部に戻し、つまみの位置を最上部として記憶する。第１の処理〜第８の処理をＣＰＵ４２が実行することにより、スクロール対象領域１６０（スクロール対象領域１４４）を推定できる。
【００７７】
なお、画面内において主要な情報は上部にある頻度が高く、変化点も多くなるため、第１の処理では、つまみ１４６を上端に移動しているが、つまみ１４６を上端に移動することに限定するものではない。また、第３の処理における押下回数は、１回に限定されるものではなく、速度とトレードオフしつつ複数回行うことにより精度は向上する。第３の処理における押下回数を複数回行う場合、第８の処理で、つまみ１４６の位置を最上部に戻す回数も同様の回数にする。ところで、第１の処理〜第８の処理をＣＰＵ４２が実行する場合、たとえ内部処理としてスクロール対象領域であっても、領域の左端に同色や同濃度の画像が続く場合、領域の左端がスクロール対象領域とみなされない。しかし、同色や同濃度の画像が続く箇所には操作の対象となるまたは認識するオブジェクトがないと考えられるので、動作に支障はない。
【００７８】
また、上記では、画面内にスクロールバー領域として垂直スクロールバー領域１４０のみ存在するときにおけるスクロール対象領域を推定する場合を説明したが、水平スクロールバー領域１４２のみ存在する場合も同様に推定することができる。
【００７９】
次にＣＰＵ４２がステップ３１２で実行する一枚画像作成プロセス７３の処理をさらに説明する。ＣＰＵ４２がステップ３１２で実行する処理は、画面分割による画像取得処理と、取得した複数の画像を一枚の画像に連結する画像連結処理とに大別される。
【００８０】
画面分割による画像取得処理では、ＣＰＵ４２は、画像を取得するための画面分割数を決定し、スクロールバーのつまみをドラッグ操作する度に、ウィンドウ内の画像を取得する（スクリ―ンショットを取得する）。
【００８１】
図１９に、垂直スクロールバーに対してドラッグ操作する場合に座標を決定する過程の説明図を示す。ドラッグ操作では、マウスダウン→マウスムーブ→マウスアップの一連の操作が行われる。ドラッグ操作について、マウスムーブするときの座標を決定する場合に、次に示す第１の手順〜第５の手順をＣＰＵ４２が実行する一例がある。
【００８２】
ＣＰＵ４２は、第１の手順で、つまみ１４６を上端（右端）に移動させて、マウスダウンする座標を決定する。マウスダウンする座標は、つまみ１４６の領域中にあればどこでもよい。次に、ＣＰＵ４２は、第２の手順で、スクロールバー領域１４０上におけるツマミ１４６の停留点の個数（縦方向もしくは横方向の画面分割数）ｎを決定する。次に、ＣＰＵ４２は、第３の手順で、スクロールバーのつまみ１４６の大きさ（距離Ｙ１）と可動領域である垂直スクロールバー領域１４８との大きさの差分（距離Ｙ２）のピクセル数を求めて、個数ｎで除算する。次に、ＣＰＵ４２は、第４の手順において、第３の手順で求めた数値（除算の商）を、停留点ごとに整数倍（０倍、１倍、２倍・・・）した数を、第１の手順で決定したｙ座標（ｘ座標）に加算した座標が各停留点でマウスムーブするための座標となる。次に、ＣＰＵ４２は、第５の手順で、２回目からマウスダウンする箇所は、マウスムーブした差分値だけつまみ１４６が移動しているので、移動した距離だけ第１の手順の座標に加算した座標の位置となる。
【００８３】
なお、第２の手順において個数ｎを決定する際、後述する画像連結処理において同一画像の領域を重ねて連結するため、画面を網羅するためには取得する画像（スクリーンショット）は少なくとも一部が重複することが好ましい。個数ｎを大きい値にすることによって高精度の一枚画像を得ることができる。一方、個数ｎが大きいと画像の取得時間が増大するため、トレードオフで決定する。決定方法の一例として、「可動部の大きさをつまみの大きさで除算し、端数を切り上げる」方法がある。この決定方法の一例は、可動領域である垂直スクロールバー領域１４８の長さを画面全体の大きさに、つまみ１４６の長さをスクロール領域の大きさに比例させたスクロールバーの実装が好ましいことに基づく方法である。
【００８４】
ドラッグ操作は、可動領域（垂直スクロールバー領域１４８）のつまみ１４６以外の領域のうち、スクロールさせる方向のボタンをクリックする操作に代えてもよい。ただし、スクロールさせる方向のボタンをクリックする操作の場合には、クリック操作の度に、ステップ３０６と３０８の処理と同様にスクロールバーの再検出を行い、つまみ１４６の位置を再確定させる。
【００８５】
なお、垂直スクロールバーについて個数ｎを値ａに、水平スクロールバーについて個数ｎを値ｂに決定した場合、画像を取得（スクリーンショット）の回数は、値ａと値ｂの乗算値（ａ・ｂ）になる。
【００８６】
次に、取得した複数の画像を一枚の画像に連結する画像連結処理について説明する。画像連結処理で、取得した複数の画像を一枚の画像に連結する場合、ＣＰＵ４２は、ビットマップイメージが一致する最大長を重なり領域で画像の連結を行う。最大長を重なり領域で画像を連結する場合、重なり領域と判断された部分の画像はどちらか一方を削除して連結する。
【００８７】
図２０に、上下の画像について、最大長Ｙａの重なり領域で画像を連結する場合の一例を示し、図２１に、左右の画像について、最大長Ｘａの重なり領域で画像を連結する場合の一例を示す。
【００８８】
また、図２２に、上下の画像、及び左右の画像の各々について、画像を連結する場合の一例を示す。図２２に示す一例は、上下左右２つずつの領域を連結する場合を示す。例えば、画面内に垂直スクロールバー領域１４０、及び水平スクロールバー領域１４２が存在する場合（図１７も参照）、画面内に空白の領域が存在すると、特定の列（行）の重なり領域の大きさが、別の列（行）の重なり領域と異なる場合がある。この場合、図２２に示すように、重なり領域の長さが短いほうに揃えることで、空白などの影響を抑止することができる。
【００８９】
なお、画像連結処理で求めた重なりのピクセル数は、後述する処理（例えば、ステップ３３２の処理）で使用可能に、一時的に記録しておくことが好ましい。また、連結部分の探索は、画像取得処理と並行して実行することができる。連結部分の探索において、重なり領域が発見できない場合、少しつまみを移動させた箇所で画像の再取得を行う（スクリーンショットを取り直す）ことで、一枚の画像に連結するための領域を増加させることができる。
【００９０】
次にＣＰＵ４２は、ステップ３１４で、ステップ３０６で取得した一枚画像またはステップ３１２で連結したスクロール領域全体の一枚画像から、試験シナリオ８１の現在の行に指定された文字列及び画像を示す情報を検索して列挙する。つまり、ステップ３１４では、試験シナリオ８１の現在の行に指定された文字列をＯＣＲによる文字認識処理により抽出し、文字認識した文字列の座標を全て列挙する。また、ステップ３１４では、試験シナリオ８１の現在の行に指定された画像を画像一致処理により抽出し、抽出した画像の座標を全て列挙する。なお、文字列は前方一致、後方一致、及び部分一致等のように自由度を与えてもよい。ステップ３１４で列挙される文字列または画像は、対象オブジェクトの候補である。
【００９１】
次にＣＰＵ４２は、ステップ３１５で、目印情報に記載された文字列を示す情報、または比較判定時の位置関係情報が記載された文字列を示す情報を列挙する。また、目印情報に画像が指定されている場合は、指定された画像についてＯＣＲ等で検索する。ステップ３１５で列挙される文字列または画像は、周辺オブジェクトの候補である。なお、ステップ３１４及び３１５における処理は、ＯＣＲによる検索処理、画像の完全一致検索処理、またはあいまい一致検索処理の機能を有するＯＣＲ指定文字列検索プロセス７２、及び画像検索プロセス７０を、ＣＰＵ４２が実行することにより実施できる。
【００９２】
次にＣＰＵ４２は、ステップ３１６で、対象オブジェクトの候補を発見したか否かを判断する。ステップ３１６における判断処理は、ＣＰＵ４２が、ステップ３１４及び３１５における処理で文字列または画像を列挙できたか否かを判別することにより判断することができる。文字列または画像を列挙できない場合、ＣＰＵはステップ３１６で否定判断し、ステップ３１８で、ＧＵＩの実装に問題がある可能性を含むＧＵＩ実装不適と判定する。一方、文字列または画像を列挙できた場合、ＣＰＵはステップ３１６で肯定判断し、ステップ３２０へ処理を移行する。
【００９３】
次にＣＰＵ４２は、ステップ３２０で、対象オブジェクトの候補を一意化できるか否かを判断する。ステップ３２０における判断処理では、対象オブジェクトの候補（ステップ３１４）と、周辺オブジェクトの候補（ステップ３１５）とに対し、試験シナリオ８１に記録された位置関係を示す条件を与え、適合する対象オブジェクトの候補に絞る処理が実行される。条件に適合する対象オブジェクトの候補が存在する場合、ＣＰＵ４２は、ステップ３２０で肯定判断してステップ３２４へ処理を移行する。一方、条件に適合する対象オブジェクトの候補が存在しない場合、ＣＰＵ４２は、ステップ３２０で否定判断してステップ３２２で、試験シナリオ８１に問題を含む可能性が高いことを示す情報をユーザに報知する処理を実行した後に本処理ルーチンを終了する。
【００９４】
なお、オブジェクトに対して与える条件として、位置関係を示す条件に代えて比較判定を条件とすることができる。ここで、比較判定のみを条件として与える試験シナリオ８１を、操作記録プログラム６０の実行によって作成することは困難である。試験シナリオ８１を用いて詳細な試験を実行するためには、ユーザに手動で試験シナリオ８１にチェックポイント等を追記させて、自動操作を実行すればよい。
【００９５】
また、オブジェクト間の位置関係は、ＣＰＵ４２が、位置関係検出プロセス７４を実行することにより検出することができる。例えば、位置関係に関係する矩形要素の座標値を入力とし、所定の計算式の結果を出力として、出力値が予め定めた閾値以内か否かを判断することで、条件に適合するか否かを判定できる。オブジェクトに対して与える条件を示す情報は、プログラムコードに埋め込んでもよく、外部記録装置のデータベース等に条件データとして記録し、読み取るようにしてもよい。
【００９６】
また、ステップ３１４で対象オブジェクトの候補を列挙するときに、自由度を与えずに検索する場合、対象オブジェクトの候補の文字列が一枚画像の中で唯一であると、唯一の文字列が対象オブジェクトである可能性が高い。なお、自由度を与えるとは、文字列に前方一致、後方一致、及び部分一致等の条件を付与することをいう。一方、対象オブジェクトの候補の文字列が一枚画像の中で唯一でない場合、複数の文字列を条件によって絞り込む。条件は複数の条件を組み合わせてもよいが、最終的に１つの条件に絞ることが好ましい。１つに絞れない場合（例えば、複数個残留した場合や、条件を満たすものがない場合等）、ステップ３２２で、警告等の情報を報知して本ルーチンを終了し、ユーザに試験シナリオ８１を手動で変更させることが好ましい。
【００９７】
一方、ステップ３１４で対象オブジェクトの候補を列挙するときに、文字列に前方一致、後方一致、及び部分一致等の自由度を与えて検索する場合、対象オブジェクトの候補を一意化することが困難である。対象オブジェクトの候補を一意化することが困難である場合に、列挙された全ての対象オブジェクトの候補の各々について、次のステップ３２４以降の処理を実施してもよい。
【００９８】
次にＣＰＵ４２は、ステップ３２４で、試験シナリオ８１に記録された操作対象の対象オブジェクト、つまりマウス４６Ｍによる操作対象の対象オブジェクトが、ステップ３２０で特定した対象オブジェクトの候補と一致するか否かを判断する。例えば、操作対象の対象オブジェクトが登録済みアイコン等である場合、ＣＰＵ４２は、ステップ３２４で否定判断し、ステップ３２６で、操作対象の対象オブジェクト（アイコン等の画像）を画像検索して検索結果の画像を全て列挙する。次にＣＰＵ４２は、ステップ３２６で対象オブジェクトの候補を検索できたか否かを判断し、否定判断の場合にステップ３１８でＧＵＩ実装不適と判定し、本処理ルーチンを終了する。一方、ＣＰＵ４２は、ステップ３２８で肯定判断する場合、ステップ３３０の処理へ移行する。また、ＣＰＵ４２は、ステップ３３０で、対象オブジェクトの候補を一意化した後にステップ３３２へ処理を移行する。
【００９９】
ステップ３２４〜３３０の処理では、操作対象の対象オブジェクトが登録済みアイコンである場合、完全一致検索、及び閾値を用いた曖昧検索等の機能を有する画像検索プロセス７０をＣＰＵ４２が実行することによって対処オブジェクトの候補が列挙される。また、操作対象の対象オブジェクトが文字入力領域である場合には、長さ・高さなどが可変であるため、ＣＰＵ４２が矩形領域検索プロセス７８を実行することによって矩形領域が列挙される。矩形領域の列挙は、公知技術であるハフ変換（Ｈｏｕｇｈ変換）等で直線を検出し、鉛直及び水平な直線に絞った後に、閉領域の形成をもって矩形領域を判断するなどの方法を用いることができる。
【０１００】
次にＣＰＵ４２は、ステップ３３２で、イベントエミュレートプロセス７５を実行することにより、実操作のエミュレーションが実行される（詳細は後述）。次に、ＣＰＵ４２は、試験シナリオ８１が最終行に達したか否かを判定し、試験シナリオ８１の最終行の場合、ステップ３３４で肯定判断し、ステップ３３６でＧＵＩの実装に問題がなく、ＧＵＩの実装が適合されているとして操作を終了する。一方、試験シナリオ８１が最終行に未到達の場合、ＣＰＵ４２は、ステップ３３４で否定判断し、ステップ３００の処理に戻る。
【０１０１】
なお、ＣＰＵ４２は、ステップ３３０で、全検索したもののうち、文字列及び画像との位置関係に優先順位を与えておき、優先順位の高い対象オブジェクトに絞り込む処理を実行する。
【０１０２】
次に、ステップ３３０で考慮される優先順位の定義について説明する。文字列に対して配置されるオブジェクトの場所の頻度は、オブジェクトの種類に応じて異なる。このため、優先順位は、オブジェクトの種類毎に分類されて定義される。次に、オブジェクトの種類毎に分類されて定義される優先順位の定義の一例として、第１の定義〜第３の定義を説明する。
【０１０３】
第１の定義として、チェックボックス（図７）の優先順位定義を説明する。チェックボックスの場合、文字列の左側にチェックボックスの画像が存在する場合が多いので、文字列の左側にある画像で最も距離が近いものを優先する。なお、「左側にある」ことを示す定義、及び「距離」の定義の一例は、後述する条件定義例において説明する。「左側にある」画像が１つも無い場合には、「右側にある」画像から同様に候補を探索する。また、「下側にある」画像、「上側にある」画像の順序で探索を継続してもよい。また、定義しておいた条件に該当する画像が１つもない場合、画面全体から、距離が一番近い画像を探索する。また、全体から探す場合の距離の定義の一例は、後述する条件定義例において説明する。
【０１０４】
第２の定義として、テキストボックス（図１０）の優先順位定義を説明する。
テキストボックスの場合、文字列の右側に画像が存在するが合いが多いため、右側にある画像のうち最も距離の近い画像を優先する。なお、「右側にある」ことや「距離」の定義はチェックボックスと同様に、「右側」、「下側」、「上側」、「左側」、及び「全体」の順序で探索する。
【０１０５】
第３の定義として、その他のオブジェクトの優先順位定義を説明する。その他のオブジェクトは、第１の定義、及び第２の定義と同様に定義する。例えば、ラジオボタン（図１１）は、チェックボックスと同様の条件で定義する。定義されたオブジェクトの種類が多いほど、多彩な操作を自動的に実行できる。なお、第１の定義〜第３の定義は、ＣＰＵ４２が位置関係検出プロセス７４を実行する場合に位置関係検出プロセス７４より呼び出して使用する。
【０１０６】
優先順位の定義の一例として、第１の定義〜第３の定義を説明したが、第１の定義〜第３の定義に限定されるものではない。
【０１０７】
次に、条件定義例について説明する。条件定義例は、座標条件の定義の一例である。条件定義例は、関係定義、及び距離定義を一例として含む。関係定義には、方向による判定、表とみなす判定、メッシュ座標判定、及びその他の判定を一例として含む。次に各々について説明する。
【０１０８】
図２３及び図２４に、関係定義における方向による判定の一例を示す。図２３に、ｙ座標の重なりがある一例を示し、図２４に、重なりがない一例を示す。図２３及び図２４に示す関係定義における方向による判定例では、例えば、関係定義として「左側にある」等の文字列を定義する。「左側にある」ことの定義として、文字列の左端のｘ座標が画像（アイコン）の右端のｘ座標に対して、等しい、大きい、及び少なくとも数ドットでかつｙ座標の重なりがある条件を定める一例がある。図２３では、判定対象の第２オブジェクト１７２は、ｙ座標で距離Ｙ１が重複して被判定対象の第１オブジェクト１７０の「左側にある」ことを示す。図２４では、判定対象の第２オブジェクト１７２は、ｙ座標で距離Ｙ２が離間されて被判定対象の第１オブジェクト１７０の「左側にある」ことを示す。
【０１０９】
図２５に、関係定義における表とみなす判定の一例を示す。図２５では、ｘ座標およびｙ座標の両方で重なりが成立したのみ、位置関係が合致するとみなす定義である。図２５では、判定対象の第３オブジェクト１７８は、ｙ座標で距離Ｙ３が重複して行ラベル要素の第１オブジェクト１７４の「右側にある」、またｘ座標で距離Ｘ３が重複して列ラベル要素の第２オブジェクト１７６の「下側にある」ことを示す。
【０１１０】
図２６に、関係定義におけるメッシュ座標判定の一例を示す。図２６は、ＧＵＩウィンドウをｘ方向に３個、ｙ方向に２個に分割した場合を示す。ＧＵＩウィンドウを分割した各々の分割ウインドウには（行、列）の書式で位置が示されている。例えば、判定対象要素が「α」が、分割ウインドウ（０，０）内に存在すれば、条件は成立であることを示している。つまり、
判定対象要素α  で  条件：（０，０）  のとき  成立
判定対象要素α  で  条件：（１，２）  のとき  不成立
判定対象要素β  で  条件：（１，２）  のとき  成立
判定対象要素β  で  条件：（０，２）  のとき  不成立
を示す。
【０１１１】
関係定義におけるその他の判定を一例は、候補文字列の占有面積を計算し、被判定対象のオブジェクトに対して最も大きい候補文字列を「関係成立」とする場合がある。なお、一番上、または一番左にあるもののみ「関係成立」とする条件を付与してもよい。
【０１１２】
図２７及び図２８に、距離定義の一例を示す。図２７は、方向による関係定義において、対象オブジェクトが「左側にある」場合の「距離」の定義例を示す。第１オブジェクト１７０の左端をｘ座標とし、第１オブジェクト１７０の上端と下端の中心点をｙ座標とした座標の点１７０Ｐを定める。また、判定対象の第２オブジェクト１７２の右端をｘ座標として、第２オブジェクト１７２の上端と下端の中心点をｙ座標とした座標の点１７２Ｐを定める。そして、点１７０Ｐと点１７２Ｐとのユークリッド距離Ｙｇ１と定める場合を示している。図２８は、図１６に示すステップ３１５の処理で対象オブジェクトの候補を絞る過程で、既定の関係定義を満たすものが存在しない場合に、列挙した全オブジェクトから探索する場合の距離の定義として、各中心点同士のユークリッド距離Ｙｇ２を示している。
【０１１３】
次に、図２９を参照して、図１６に示すステップ３３２の処理を詳細に説明する。ステップ３３２の処理は、操作対象の対象オブジェクトが表示されるようにスクロール領域を移動（スクロール）させ、スクロール領域内の対象オブジェクトに対して、実操作のエミュレーションが実行される。図２９に示す実操作のエミュレーションの実行は、ＣＰＵ４２が、イベントエミュレートプロセス７５を実行することにより、達成される。
【０１１４】
まず、対象オブジェクトが表示される位置の座標までの一枚画像上における画像幅及び画像高さから、スクロール領域の画像幅及び画像高さの減算を繰り返し、繰り返した回数が、スクロール回数として求められる。なお、画像連結処理で求めた重なりのピクセル数（ステップ３１２）を減算してもよい。
【０１１５】
詳細には、ＣＰＵ４２は、図２９に示すステップ３４０で、変数（Xwhole,Xscroll,Xorder）に値を代入する。変数Xwholeには、対象オブジェクトが表示される位置の座標までの一枚画像上における画像幅が代入される。変数Xscrollには、スクロール領域の画像幅が代入される。変数Xorderには、画像上におけるＸ軸方向のスクロール回数である演算の繰り返した回数（初期値「０」）が代入される。次に、ＣＰＵ４２は、変数Xwholeの値が変数Xscrollの値以下になるまで（ステップ３４２で肯定判断）、変数Xwholeの値から変数Xscrollを減算する処理（ステップ３４４）を繰り返し、Ｘ軸方向のスクロール回数（変数Xorderの値）を求める。なお、減算処理における変数Xwholeの最終値は、スクロール領域中の対象オブジェクトが表示されるＸ座標に対応するため、変数Ｘcoordに代入される（ステップ３４６）。
【０１１６】
次に、ＣＰＵ４２は、ステップ３４８で、変数（Ywhole,Yscroll,Yorder）に値を代入する。変数Ywholeには、対象オブジェクトが表示される位置の座標までの一枚画像上における画像高さが代入される。変数Yscrollには、スクロール領域の画像高さが代入される。変数Yorderには、画像上におけるＹ軸方向のスクロール回数である演算の繰り返した回数（初期値「０」）が代入される。次に、ＣＰＵ４２は、変数Ywholeの値が変数Yscrollの値以下になるまで（ステップ３５０で肯定判断）、変数Ywholeの値から変数Yscrollを減算する処理（ステップ３５２）を繰り返し、Ｙ軸方向のスクロール回数（変数Yorderの値）を求める。なお、減算処理における変数Ywholeの最終値は、スクロール領域中の対象オブジェクトが表示されるＹ座標に対応するため、変数Ycoordに代入される（ステップ３５４）。
【０１１７】
次に、ＣＰＵ４２は、ステップ３５６で、対象オブジェクトの座標について、一枚画像の座標から、実際に画像が表示されるスクリーン座標に変換する。つまり、減算処理における変数Xwhole,Ywholeの最終値である変数Xcoord,Ycoordは、スクロール領域の左上隅を原点としたスクロール領域中の対象オブジェクトのＸ座標及びＹ座標である。従って、スクロール領域の左上隅のスクリーン座標に変数Xcoord,Ycoordを加算することで、実際の操作スクリーン座標を求めることができる。
【０１１８】
次に、ＣＰＵ４２は、ステップ３５８で、操作対象の対象オブジェクトが表示される位置にスクロール領域を移動させる。つまり、ＣＰＵ４２は、図１６に示すステップ３１２の処理と同様に、マウス操作すべき座標を求め、スクロールバーを移動させることにより、操作対象の対象オブジェクトが表示される位置にスクロール領域を移動させる。
【０１１９】
次に、ＣＰＵ４２は、ステップ３６０で、ステップ３５６で求めたスクリーン座標に対して操作を行う。例えば、ＣＰＵ４２は、イベントエミュレートプロセス７５の実行により、ＯＳ５６のクリックイベント発生に連動するＡＰＩなどを用いて操作を行う。つまり、ＣＰＵ４２は、ＡＰＩにステップ３５６で求めたスクリーン座標をパラメータとして与え、スクリーン座標に対する操作を実行する。
【０１２０】
なお、操作対象の対象オブジェクトに対する操作では、コンボボックス（図１９）及びウィンドウメニュー等のように、操作対象の対象オブジェクトの種類により、新規の画面領域が発生する場合がある。操作対象の対象オブジェクトの種類に応じて新規の画面領域が発生する場合、新規の画面領域が発生する前後で、スクリーンショットを取得し、差分領域を求める。求めた差分領域に対して、ＣＰＵ４２は、ステップ３０６〜ステップ３３２を実行すればよい。例えば、複数のイベントの連続として記録されているシナリオについて、操作者が手動で連続イベントを単数の行に置き換えた場合に適用が可能である。この場合、連続処理を単行のシナリオを元に処理する機能を自動操作プログラム６８が装備していることが好ましい。
【０１２１】
図３０に、図１４に示す表示部２０の画面に表示されるウィンドウ領域１１８内の一部のオブジェクトを含むウィンドウ領域１９０、シナリオを生成後に文字の大きさが変更されたオブジェクトを含むウィンドウ領域１９６を示す。表示部２０の画面に表示されるウィンドウ領域１９０により、試験シナリオ８１が記録され、文字の大きさが変更されたオブジェクトを含むウィンドウ領域１９６によりアプリケーションソフトウェア３２が実行される。操作対象がボタンであるとき、試験シナリオ８１には、ボタンに対応する文字列情報１０６が記憶されると共に、目印として、操作対象に向う方向１９４を含む画像１２０と文字列情報１０８が記録される。また、他の目印として、操作対象に向う方向１９２を含む文字列情報１２６も記録される。シナリオを生成後に文字の大きさが変更された場合、ボタン画像１０４の表示位置が移動される。しかし、マウス４６Ｍによるユーザ操作の操作位置１３０を含む操作対象は、試験シナリオ８１に記録された文字列情報１０６、画像１２０、文字列情報１０８、及び文字列情報１２６によって、ボタンを特定することができる。つまり、試験シナリオ８１に目印として記録された画像１２０と文字列情報１０８から操作対象に向う方向１９４、及び文字列情報１２６から操作対象に向う方向１９２によって、操作対象を特定することができる。従って、試験シナリオ８１を生成した後に、文字の大きさが変更されたアプリケーションソフトウェア３２であっても、操作対象を特定することができ、試験シナリオ８１に従ってユーザ操作を再現することができる。
【０１２２】
以上説明したように、本実施形態では、アプリケーションソフトウェアによるＧＵＩ操作をシナリオに記録する場合、操作対象の対象オブジェクト及びユーザ操作を検出する。また、操作対象の対象オブジェクトに対して、周辺オブジェクト及び画面上における周辺オブジェクトの対象オブジェクトに対する位置関係を検出する。検出した、ユーザ操作、対象オブジェクト、周辺オブジェクト、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報を含む操作情報をシナリオに含めて生成し、試験シナリオ８１に記録する。従って、試験シナリオ８１を用いて、対象オブジェクト、ユーザの操作を示す情報、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報から対象オブジェクト及びユーザ操作を特定することができる。これによって、コンピュータにアプリケーションソフトウェアにおける操作をシナリオを用いて実行させる場合に、シナリオの生成後に、例えば文字の大きさが変更された場合であっても、対象オブジェクトの位置を特定できる。従って、例えばシナリオの一部が変更された場合であっても、対象オブジェクトの位置を特定でき、シナリオを用いて行う作業の効率を向上させることができる。
【０１２３】
また、本実施形態では、オブジェクトを示す画像情報を、例えばアイコンとして予め記憶させておき、ユーザ操作時の操作位置を含む領域画像と登録済みのアイコンを比較することにより、対象オブジェクトを容易に特定することができる。
【０１２４】
また、本実施形態では、オブジェクトとして画像上の文字列を用いているので、対象オブジェクトを容易に特定することができる。また、画面から取得する画像より、ＯＣＲなどの画像認識処理を実行することで、画像から文字列を容易に検出することができる。
【０１２５】
また、本実施形態では、周辺オブジェクトから対象オブジェクトへ向かう方向を示す情報を位置関係を示す情報として検出し、シナリオを生成する。これにより、試験シナリオ８１を用いて、操作の実行時における画像から、周辺オブジェクトより対象オブジェクトへ向かう方向を特定でき、対象オブジェクトを容易に特定することができる。
【０１２６】
また、本実施形態では、対象オブジェクトに複数の周辺オブジェクトを関係づけることができる。対象オブジェクトと複数の周辺オブジェクトの各々との関係には、対象オブジェクトと周辺オブジェクトとの距離に応じた優先順位を示す情報が関連付けられる。例えば、対象オブジェクトに複数の周辺オブジェクトが検出されるときには周辺オブジェクトと対象オブジェクトとの距離に応じて優先順位を示す情報が、付与される。これにより、対象オブジェクトと周辺オブジェクトと距離関係に基づく優先順位に従って、早期に対象オブジェクトを特定することができる。
【０１２７】
また、本実施形態では、ユーザの操作を示す情報、対象オブジェクト、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報をコンピュータにより検出することに代えて、入力部４６により入力される情報を読み取ることによって情報を取得することができる。つまり、ユーザ操作、対象オブジェクト、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報の各々を示す情報を入力部４６により入力される情報を読み取ってシナリオを生成することができる。このように、入力部４６により入力される情報を読み取ることによって情報を取得することにより、検出する情報の自由度を増加させることができる。
【０１２８】
また、本実施形態では、操作情報を記録したシナリオを読み取り、アプリケーションソフトウェアの実行時に、画面の画像情報を取得し、画像情報から対象オブジェクトの位置を特定し、シナリオに記録されたユーザ操作を実行する。シナリオに記録されたユーザ操作を実行するまでに、対象オブジェクトを特定することができ、シナリオ実行時の操作不適の状態を抑制することができる。
【０１２９】
また、本実施形態では、ウィンドウにより画面上に操作対象の画像領域の一部が表示される場合、操作対象の画像領域を網羅するように複数の画像情報を取得し、取得した複数の画像情報を合成して一枚画像を示す一枚画像情報を生成する。これにより、対象オブジェクトがウインドウ外に存在し、不可視化されている状態であっても、操作対象の画像領域を網羅する一枚画像情報から対象オブジェクトの位置を特定することができる。
【０１３０】
また、本実施形態では、対象オブジェクトの位置を特定する場合、ユーザ操作が可能な領域の画像内から対象オブジェクトの位置が特定できないとき、読み取ったシナリオがアプリケーションソフトウェアの実行に不適であると判定することができる。これによって、対象オブジェクトを特定する処理を継続することなく、シナリオ判定結果に基づき、シナリオ実行時の操作不適の状態を早期に発見でき、シナリオ実行時の操作遂行の長時間化を抑制することができる。
【０１３１】
なお、ＣＰＵ４２により実行されるステップ３００の処理は、コンピュータ４０がシナリオ実行装置として動作する場合におけるシナリオ読み取り部の処理に対応する一例である。また、ＣＰＵ４２により実行されるステップ３０６〜３１２の処理は、コンピュータ４０がシナリオ実行装置として動作する場合における取得部の処理に対応する一例である。さらに、ＣＰＵ４２により実行されるステップ３１４〜３３０の処理は、コンピュータ４０がシナリオ実行装置として動作する場合における特定部の処理に対応する一例である。ＣＰＵ４２により実行されるステップ３３２の処理は、コンピュータ４０がシナリオ実行装置として動作する場合における実行部の処理に対応する一例である。
【０１３２】
（第２実施形態）
次に、第２実施形態を説明する。第１実施形態では、シナリオ装置１０をコンピュータ４０により実現し、コンピュータ４０によるローカルマシンによってＧＵＩによるユーザ操作を試験する場合の一例を説明した。第２実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア３２の操作を、コンピュータ４０によるローカルマシンによってＧＵＩにより試験する場合の一例を説明する。第２実施形態は、アプリケーションソフトウェア３２として、ＷＥＢ（World Wide Web）アプリケーションプログラムを一例として、開示の技術を適用するものである。なお、第２実施形態は、第１実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
【０１３３】
図３１に、シナリオ装置１０を、ＷＥＢサーバとして機能する外部コンピュータ４０４及びＷＥＢクライアントとして機能するコンピュータ４０を含むコンピュータシステム４００で実現する一例を示す。ＷＥＢサーバとして機能する外部コンピュータ４０４は、ＣＰＵ４１０、ＷＥＢサーバプログラム４１４を記憶するメモリ４１２、及びコンピュータネットワーク４０２に接続するためのインタフェースである通信部４１６を備えている。ＣＰＵ４１０、メモリ４１２、及び通信部４１６は、バス４１８を介して互いに接続されている。なお、ＷＥＢサーバプログラム４１４は、シナリオ生成とシナリオ実行の対象となるＧＵＩを使用するアプリケーションソフトウェア３２に対応する。
【０１３４】
また、ＷＥＢクライアントとして機能するコンピュータ４０は、第１実施形態（図２）と同様に、ＣＰＵ４２、表示部４４、入力部４６、ＩＯ装置４７、ＶＲＡＭ４８、メモリ５０、及び格納部５２を備え、各々バス５４を介して互いに接続されている。また、本実施形態では、コンピュータ４０は、コンピュータネットワーク４０２に接続するためのインタフェースである通信部４２０を備えている。また、本実施形態では、格納部５２には、ＷＥＢサーバプログラム４１４の実行により情報を授受または表示させるためのＷＥＢブラウザプログラム４２２が含まれている。
【０１３５】
本実施形態では、コンピュータ４０において、ＷＥＢブラウザプログラム４２２の実行によって一連の操作が実行される。ＷＥＢブラウザプログラム４２２は、ＷＥＢサーバとして機能する外部コンピュータ４０４と交信した結果を表示させており、試験対象は外部コンピュータ４０４で実行されるＷＥＢサーバプログラム４１４である。コンピュータ４０の表示部４４には、ＷＥＢブラウザプログラム４２２の実行によりＷＥＢブラウザのウィンドウ領域が表示され、ＷＥＢブラウザのウィンドウ領域内にＷＥＢサーバプログラム４１４による情報が表示される。
【０１３６】
以上説明したように、第２実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア３２の操作を、コンピュータ４０によってＧＵＩにより試験することができる。従って、シナリオを試験する装置及び実行対象のプログラムを、コンピュータ４０の外部に設定することができる。これによって、第２実施形態では、第１実施形態の効果に加えて、対象とする装置及び実行対象のプログラムに対する適用場所についての自由度を向上させることができる効果も有する。
【０１３７】
（第３実施形態）
次に、第３実施形態を説明する。第３実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア３２の操作を、リモートデスクトップ（ＲＤＴ）の機能を有するコンピュータ４０により試験する場合の一例を説明する。なお、第３実施形態は、第１実施形態及び第２実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
【０１３８】
図３２に、シナリオ装置１０を、ＲＤＴ機能による遠隔操作対象の外部コンピュータ４０４及びコンピュータ４０を含むコンピュータシステム４００で実現する一例を示す。ＲＤＴ機能による遠隔操作対象の外部コンピュータ４０４のメモリ４１２には、コンピュータ４０より遠隔操作を可能とするＲＤＴプログラム４３０が記憶されている。なお、外部コンピュータ４０４では、アプリケーションソフトウェア３２が実行可能になっている。また、コンピュータ４０の格納部５２には、外部コンピュータ４０４を遠隔操作対象とするためのＲＤＴプログラム４３２が格納されている。
【０１３９】
本実施形態では、コンピュータネットワーク４０２を介して、コンピュータ４０は、ＲＤＴ機能を用いて、外部コンピュータ４０４を遠隔操作することができる。従って、コンピュータ４０の表示部４４に表示される画像により、外部コンピュータ４０４で実行されるアプリケーションソフトウェア３２を試験することができる。
【０１４０】
（第４実施形態）
次に、第４実施形態を説明する。第４実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア３２の操作を、コンピュータ４０によるローカルマシンによってＧＵＩにより試験する場合の一例を説明する。第４実施形態は、外部コンピュータ４０４の一例として、モバイル端末に、開示の技術を適用するものである。なお、第４実施形態は、第１実施形態乃至第３実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
【０１４１】
図３３に、シナリオ装置１０を、モバイル端末として機能する外部コンピュータ４０４及び外部コンピュータ４０４を操作するコンピュータ４０を含むコンピュータシステム４０１で実現する一例を示す。モバイル端末として機能する外部コンピュータ４０４とコンピュータ４０とは、ＵＳＢ（Universal Serial Bus）ケーブル４４０によりＵＳＢ接続される。モバイル端末として機能する外部コンピュータ４０４のメモリ４１２には、コンピュータ４０と通信を可能とする通信プログラム４４２が記憶されている。なお、モバイル端末として機能する外部コンピュータ４０４では、アプリケーションソフトウェア３２が実行可能になっている。また、コンピュータ４０の格納部５２には、外部コンピュータ４０４と通信するための端末情報授受プログラム４４４が格納されている。
【０１４２】
モバイル端末として機能する外部コンピュータ４０４の一例として、Ａｎｄｒｏｉｄと呼ばれるソフトウェアの実行環境などを搭載したアンドロイド端末を適用することができる。アンドロイド端末では、ａｄｂ（Android Debug Bridge）接続を行った上で、ＭｏｎｋｅｙＲｕｎｎｅｒと呼ばれるソフトウェアを用いて、画面のキャプチャおよび端末操作が可能である。ＭｏｎｋｅｙＲｕｎｎｅｒはアンドロイド端末及びＡｎｄｒｏｉｄのエミュレータをＡｎｄｒｏｉｄのコードの外から操作するためのＡＰＩの一例である。
【０１４３】
本実施形態では、外部コンピュータ４０４側で、外部コンピュータ４０４の表示画像を取得し、外部コンピュータ４０４側へ操作を指示する処理が実行される。例えば、コンピュータ４０の表示部４４上のウィンドウ領域に画面を投影する処理も可能である。しかし、コンピュータ４０の表示部４４に画面を投影する処理に比べて、コンピュータ４０側の処理負荷を抑制できるためである。つまり、外部コンピュータ４０４で、画面の画像（画面キャプチャイメージ）を直接取得し、画面操作ＡＰＩを外部コンピュータ４０４側に直接送信する処理が実行される。
【０１４４】
以上説明したように、第４実施形態では、モバイル端末として機能する外部コンピュータ４０４で実行されるアプリケーションソフトウェア３２の操作を、コンピュータ４０によってＧＵＩにより試験することができる。従って、モバイル端末として機能する外部コンピュータ４０４においてシナリオを試験する場合に、コンピュータの処理負荷を軽減することができる。
【０１４５】
なお、上記ではシナリオ装置１０をコンピュータ４０により実現する一例を説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
【０１４６】
また、上記ではプログラムが記憶部に予め記憶（インストール）されている態様を説明したが、これに限定されるものではない。例えば、開示の技術におけるプログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【０１４７】
以上の実施形態に関し、更に以下の付記を開示する。
【０１４８】
（付記１）
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
ことを含む処理をコンピュータに実行させるためのシナリオ生成プログラム。
【０１４９】
（付記２）
前記オブジェクトの画像を示す情報を予め記憶部に記憶させておき、
前記対象オブジェクトに対するユーザ操作時の操作位置を含む特定領域の画像を示す情報と、前記記憶部に記憶された前記オブジェクトの画像を示す情報との比較結果に基づいて、前記対象オブジェクトを特定する
付記１に記載のシナリオ生成プログラム。
【０１５０】
（付記３）
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記１または付記２に記載のシナリオ生成プログラム。
【０１５１】
（付記４）
前記位置関係を示す情報は、前記周辺オブジェクトから前記対象オブジェクトへ向かう方向を示す情報である
付記１〜付記３の何れか１項に記載のシナリオ生成プログラム。
【０１５２】
（付記５）
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を検出し、検出した複数の前記周辺オブジェクトの各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けてシナリオを生成する
付記１〜付記４の何れか１項に記載のシナリオ生成プログラム。
【０１５３】
（付記６）
前記情報の検出は、入力部により入力される情報を読み取ることによって情報を取得することを含む
付記１〜付記５の何れか１項に記載のシナリオ生成プログラム。
【０１５４】
（付記７）
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
ことを含む処理をコンピュータに実行させるためのシナリオ実行プログラム。
【０１５５】
（付記８）
前記ユーザ操作が可能な領域の画像を示す情報として、前記アプリケーションソフトウェアの実行時における画面上の表示領域の画像を示す情報を複数取得し、取得した複数の画像を示す情報に基づいて、前記ユーザ操作が可能なユーザ操作領域の一枚画像を示す情報を作成し、
作成した前記一枚画像を示す情報に基づいて前記対象オブジェクトの位置を特定する
付記７に記載のシナリオ実行プログラム。
【０１５６】
（付記９）
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記７または付記８に記載のシナリオ実行プログラム。
【０１５７】
（付記１０）
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を示す情報の各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けて生成されたシナリオを読み取り、
前記読み取った前記優先順位を示す情報に基づいて、前記対象オブジェクトの位置を特定する
付記７〜付記９の何れか１項に記載のシナリオ実行プログラム。
【０１５８】
（付記１１）
前記ユーザ操作が可能な領域の画像を示す情報から前記対象オブジェクトの位置を特定できないとき、前記読み取ったシナリオが前記アプリケーションソフトウェアの実行に不適であると判定する
付記７〜付記９の何れか１項に記載のシナリオ実行プログラム。
【０１５９】
（付記１２）
コンピュータが、
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
ことを含むシナリオ生成方法。
【０１６０】
（付記１３）
前記オブジェクトの画像を示す情報を予め記憶部に記憶させておき、
前記対象オブジェクトに対するユーザ操作時の操作位置を含む特定領域の画像を示す情報と、前記記憶部に記憶された前記オブジェクトの画像を示す情報との比較結果に基づいて、前記対象オブジェクトを特定する
付記１２に記載のシナリオ生成方法。
【０１６１】
（付記１４）
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記１２または付記１３に記載のシナリオ生成方法。
【０１６２】
（付記１５）
前記位置関係を示す情報は、前記周辺オブジェクトから前記対象オブジェクトへ向かう方向を示す情報である
付記１２〜付記１４の何れか１項に記載のシナリオ生成方法。
【０１６３】
（付記１６）
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を検出し、検出した複数の前記周辺オブジェクトの各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けてシナリオを生成する
付記１２〜付記１５の何れか１項に記載のシナリオ生成方法。
【０１６４】
（付記１７）
前記情報の検出は、入力部により入力される情報を読み取ることによって情報を取得することを含む
付記１２〜付記１６の何れか１項に記載のシナリオ生成方法。
【０１６５】
（付記１８）
コンピュータが、
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
ことを含むシナリオ実行方法。
【０１６６】
（付記１９）
前記ユーザ操作が可能な領域の画像を示す情報として、前記アプリケーションソフトウェアの実行時における画面上の表示領域の画像を示す情報を複数取得し、取得した複数の画像を示す情報に基づいて、前記ユーザ操作が可能なユーザ操作領域の一枚画像を示す情報を作成し、
作成した前記一枚画像を示す情報に基づいて前記対象オブジェクトの位置を特定する
付記１８に記載のシナリオ実行方法。
【０１６７】
（付記２０）
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記１８または付記１９に記載のシナリオ実行方法。
【０１６８】
（付記２１）
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を示す情報の各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けて生成されたシナリオを読み取り、
前記読み取った前記優先順位を示す情報に基づいて、前記対象オブジェクトの位置を特定する
付記１８〜付記２０の何れか１項に記載のシナリオ実行方法。
【０１６９】
（付記２２）
前記ユーザ操作が可能な領域の画像を示す情報から前記対象オブジェクトの位置を特定できないとき、前記読み取ったシナリオが前記アプリケーションソフトウェアの実行に不適であると判定する
付記１８〜付記２１の何れか１項に記載のシナリオ実行方法。
【０１７０】
（付記２３）
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する第１検出部と、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出する第２検出部と、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する生成部と、
を備えたシナリオ生成装置。
【０１７１】
（付記２４）
前記オブジェクトの画像を示す情報を記憶する記憶部をさらに備え、
前記第１検出部は、前記対象オブジェクトに対するユーザ操作時の操作位置を含む特定領域の画像を示す情報と、前記記憶部に記憶された前記オブジェクトの画像を示す情報との比較結果に基づいて、前記対象オブジェクトを特定する
付記２３に記載のシナリオ生成装置。
【０１７２】
（付記２５）
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記２３または付記２４に記載のシナリオ生成装置。
【０１７３】
（付記２６）
前記位置関係を示す情報は、前記周辺オブジェクトから前記対象オブジェクトへ向かう方向を示す情報である
付記２３〜付記２５の何れか１項に記載のシナリオ生成装置。
【０１７４】
（付記２７）
前記第２検出部は、前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を検出し、前記対象オブジェクトと検出した複数の前記周辺オブジェクトの各々との距離に応じた優先順位を求め、
前記生成部は、複数の前記周辺オブジェクトの各々に、前記優先順位を示す情報を関連付けてシナリオを生成する
付記２３〜付記２６の何れか１項に記載のシナリオ生成装置。
【０１７５】
（付記２８）
前記第１検出部及び第２検出部の少なくとも一方は、入力部により入力される情報を読み取ることによって情報を取得する
付記１〜付記５の何れか１項に記載のシナリオ生成装置。
【０１７６】
（付記２９）
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取るシナリオ読取部と、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得する取得部と、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する特定部と、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する実行部と
を備えたシナリオ実行装置。
【０１７７】
（付記３０）
前記取得部は、前記ユーザ操作が可能な領域の画像を示す情報として、前記アプリケーションソフトウェアの実行時における画面上の表示領域の画像を示す情報を複数取得し、取得した複数の画像を示す情報に基づいて、前記ユーザ操作が可能なユーザ操作領域の一枚画像を示す情報を作成し、
前記特定部は、作成した前記一枚画像を示す情報に基づいて前記対象オブジェクトの位置を特定する
付記２９に記載のシナリオ実行装置。
【０１７８】
（付記３１）
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記２９または付記３０に記載のシナリオ実行装置。
【０１７９】
（付記３２）
前記シナリオ読取部は、前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を示す情報の各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けて生成されたシナリオを読み取り、
前記特定部は、前記読み取った前記優先順位を示す情報に基づいて、前記対象オブジェクトの位置を特定する
付記２９〜付記３１の何れか１項に記載のシナリオ実行装置。
【０１８０】
（付記３３）
前記特定部は、前記ユーザ操作が可能な領域の画像を示す情報から前記対象オブジェクトの位置を特定できないとき、前記読み取ったシナリオが前記アプリケーションソフトウェアの実行に不適であると判定する
付記２９〜付記３１の何れか１項に記載のシナリオ実行装置。
【０１８１】
（付記３４）
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する第１検出部と、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出する第２検出部と、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する生成部と、
を備えたシナリオ生成装置と、
前記アプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取るシナリオ読取部と、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得する取得部と、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する特定部と、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する実行部と
を備えたシナリオ実行装置と
を含むシナリオ装置。
【符号の説明】
【０１８２】
１０    シナリオ装置
１０Ａ  シナリオ生成装置
１０Ｂ  シナリオ実行装置
１２    ＣＰＵ
１４    メモリ
１８    入力部
２０    表示部
２２    操作記録部
２４    自動操作部
２６    ユーザインタフェースアプリケーション部
２８    操作記録プログラム
３０    自動操作プログラム
３２    アプリケーションソフトウェア
３４    ファイル
４０    コンピュータ
４４    表示部
４６    入力部
４６Ｋ  キーボード
４６Ｍ  マウス
４９    記録媒体
５０    メモリ
５２    格納部
５８    ＧＵＩアプリケーションプログラム
６０    操作記録プログラム
６８    自動操作プログラム
８０    ファイル
８１    試験シナリオ
【図１】
2015049520.tif 000003
【図２】
2015049520.tif 000004
【図３】
2015049520.tif 000005
【図４】
2015049520.tif 000006
【図５】
2015049520.tif 000007
【図６】
2015049520.tif 000008
【図７】
2015049520.tif 000009
【図８】
2015049520.tif 000010
【図９】
2015049520.tif 000011
【図１０】
2015049520.tif 000012
【図１１】
2015049520.tif 000013
【図１２】
2015049520.tif 000014
【図１３】
2015049520.tif 000015
【図１４】
2015049520.tif 000016
【図１５】
2015049520.tif 000017
【図１６】
2015049520.tif 000018
【図１７】
2015049520.tif 000019
【図１８】
2015049520.tif 000020
【図１９】
2015049520.tif 000021
【図２０】
2015049520.tif 000022
【図２１】
2015049520.tif 000023
【図２２】
2015049520.tif 000024
【図２３】
2015049520.tif 000025
【図２４】
2015049520.tif 000026
【図２５】
2015049520.tif 000027
【図２６】
2015049520.tif 000028
【図２７】
2015049520.tif 000029
【図２８】
2015049520.tif 000030
【図２９】
2015049520.tif 000031
【図３０】
2015049520.tif 000032
【図３１】
2015049520.tif 000033
【図３２】
2015049520.tif 000034
【図３３】
2015049520.tif 000035