JP6326742B2 - シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置 - Google Patents

シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置 Download PDF

Info

Publication number
JP6326742B2
JP6326742B2 JP2013178417A JP2013178417A JP6326742B2 JP 6326742 B2 JP6326742 B2 JP 6326742B2 JP 2013178417 A JP2013178417 A JP 2013178417A JP 2013178417 A JP2013178417 A JP 2013178417A JP 6326742 B2 JP6326742 B2 JP 6326742B2
Authority
JP
Japan
Prior art keywords
information indicating
scenario
target object
image
screen
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013178417A
Other languages
English (en)
Other versions
JP2015049520A (ja
Inventor
佐藤 信吾
信吾 佐藤
利弘 森本
利弘 森本
礼暁 石原
礼暁 石原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013178417A priority Critical patent/JP6326742B2/ja
Priority to US14/456,048 priority patent/US10222949B2/en
Publication of JP2015049520A publication Critical patent/JP2015049520A/ja
Application granted granted Critical
Publication of JP6326742B2 publication Critical patent/JP6326742B2/ja
Priority to US16/246,934 priority patent/US20190146649A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • User Interface Of Digital Computer (AREA)
  • Debugging And Monitoring (AREA)

Description

開示の技術は、シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置に関する。
コンピュータ上で実行されるアプリケーションソフトウェアにおけるユーザの操作について、マウス等のポインティングデバイスによって行うグラフィカルユーザインタフェース(GUI)が使用される場合がある。GUIを使用するアプリケーションソフトウェアに対して、ユーザ操作時の動作を確認したり改版時における動作を確認したりするために、ユーザの操作手順をファイルに記録し、記録したファイルに従って操作を自動的に実行する試験が行われる場合もある。
例えば、コンピュータによって、アプリケーションソフトウェアにおけるGUIによるユーザの操作が、操作の手順に従ってシナリオと呼ばれるファイルに記録される。記録されたシナリオに従ってGUIによる操作をコンピュータに自動的に実行させることによって、アプリケーションソフトウェアのユーザ操作時の動作が確認されたり改版時における動作が確認されたりする。
GUIによる操作を自動的に実行させるためのシナリオを生成する技術の一例として、マウス等による入力操作時の表示画像から、操作位置と操作位置を含む範囲の画像及び操作の情報を含むシナリオを生成する技術が知られている。生成されたシナリオに従うGUIによる操作では、操作位置を含む範囲の画像を操作対象のオブジェクトとして、記録されている操作位置に基づき操作対象のオブジェクトの表示位置までマウスカーソル等が移動されて、操作(例えば所謂クリック)が実行される。
また、画面に表示される操作対象を特定するために、操作対象のオブジェクトが文字情報である場合に、文字情報を検索する技術が知られている。また、ユーザの操作を示す情報と共にユーザの操作時の画面の画像が記録されるシナリオを生成する技術の一例に、アプリケーションソフトウェアにおける操作時の画面の画像をシナリオに記憶する技術も知られている。シナリオにユーザの操作時の画面の画像を記憶することにより、ユーザは容易に操作内容を把握することができ、またシナリオの編集を容易に行うことができる。
特開2012−221318号公報 特開2011−22705号公報 特開2010−198456号公報
ところで、GUIによるユーザの操作が記録されたシナリオに従って自動的に操作が実行される場合、画面上における座標等の操作位置がシナリオに記録され、記録されている座標等の操作位置で操作が実行される。しかしながら、GUIを使用するアプリケーションソフトウェアは、GUIに影響する内容の変更及び改版が行われる場合がある。例えば、画面に表示される文字サイズが変更されたり、画面に表示されるウィンドウサイズが変更される場合である。
画面に表示される文字サイズの変更またはウィンドウサイズの変更が生じる場合、文字サイズまたはウィンドウサイズに応じて、シナリオに記録されているマウス等による画面上における座標等の操作位置が移動する場合がある。例えば、シナリオの記録時における文字サイズより大きいまたは小さい文字サイズにアプリケーションソフトウェアの内容が変更される場合、変更前後の文字サイズの差分に応じて画面上における座標等の操作位置が移動する。また、ウィンドウの外郭付近の操作位置がシナリオに記録されており、シナリオの記録時におけるウィンドウより小さいウィンドウにアプリケーションソフトウェアの内容が変更される場合、ウィンドウ外の座標が操作位置になる。
従って、シナリオ生成時の操作対象の操作位置が変更されるとシナリオ生成時の操作位置に操作対象が存在せずに、シナリオに従う操作の継続が困難な操作エラーが発生する。操作エラーが発生した場合、ユーザは、作成済みのシナリオを再作成したり、作成済みのシナリオを修正したりするので、シナリオを用いて行う作業の効率が低下する。
一方、マウス等による入力操作時の表示画像から、操作位置を含む範囲の画像を操作対象のオブジェクトとしてシナリオを生成する技術によれば、操作位置を含む範囲の画像からオブジェクトを特定できる。ところが、記録されている操作位置に基づき操作対象に対して操作が実行されるので、シナリオ実行時の操作位置が移動すると、座標等の操作位置に操作対象が存在せずに、シナリオに従う操作の継続が困難な操作エラーが発生する場合がある。また、同一画像が複数存在する場合、シナリオに記録されたオブジェクトを特定することが困難である。また、ウィンドウ外にオブジェクトが存在する場合も、オブジェクトを特定することが困難である。従って、作成済みのシナリオを再作成したり、作成済みのシナリオを修正したりするので、シナリオを用いて行う作業の効率が低下する。
また、操作対象のオブジェクトが文字情報である場合、文字情報を検索することで、画面に表示される文字を特定することはできる。しかし、記録されている操作位置に基づき操作が実行されるので、シナリオ実行時の操作位置がシナリオ生成時の位置から移動すると、シナリオに従う操作の継続が困難な操作エラーが発生する。また、ユーザの操作を示す情報とユーザの操作時の画面の画像が記録される技術では、記録されている操作位置に基づき操作が実行されるので、シナリオ実行時の操作位置が移動すると、シナリオに従う操作の継続が困難な操作エラーが発生する場合がある。
1つの側面では、アプリケーションソフトウェアにおける操作をコンピュータに実行させる場合に、シナリオ再生時の操作対象の特定をより容易にすることを目的とする。
開示の技術は、コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び対象オブジェクトに対するユーザ操作を示す情報を検出する処理をコンピュータに実行させる。また、画面に表示されるオブジェクトの中から、対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び画面上における対象オブジェクトと周辺オブジェクトとの位置関係を検出する処理をコンピュータに実行させる。さらに、ユーザ操作を示す情報、対象オブジェクトを示す情報、周辺オブジェクトを示す情報、及び位置関係を示す情報を関連付けてシナリオを生成する処理をコンピュータに実行させる。
1つの態様では、アプリケーションソフトウェアにおける操作をコンピュータに実行させる場合に、シナリオ再生時の操作対象の特定をより容易にすることができる、という効果を有する。
シナリオ装置の構成の一例を示すブロック図である。 第1実施形態にかかるコンピュータで実現するシナリオ装置の一例を示すブロック図である。 シナリオ生成時に表示されるウィンドウ領域の一例を示すイメージ図である。 シナリオ生成時に表示されるウィンドウ領域の一例を示すイメージ図である。 シナリオ装置におけるGUIテストの流れの一例を示すフローチャートである。 操作記録プログラムの処理の流れの一例を示すフローチャートである。 チェックボックスの画像の一例を示すイメージ図である。 クローズアイコンの画像の一例を示すイメージ図である。 文字列が表示されたボタンの画像の一例を示すイメージ図である。 テキストボックスの画像の一例を示すイメージ図である。 ラジオボタンの画像の一例を示すイメージ図である。 コンボボックスの画像の一例を示すイメージ図である。 シナリオを出力する処理の流れの一例を示すフローチャートである。 画面に表示されるウィンドウ領域の一例を示すイメージ図である。 試験シナリオの一例を示すイメージ図である。 自動操作プログラムの処理の流れの一例を示すフローチャートである。 スクロールバー領域の説明図である。 垂直スクロールバー領域の説明図である。 ドラッグ操作する場合に座標を決定する過程の説明図である。 上下の画像を連結する場合の一例を示す説明図である。 左右の画像を連結する場合の一例を示す説明図である。 複数の領域を連結して一枚画像を作成する場合の一例を示す説明図である。 関係定義における方向による判定の一例を示す説明図である。 関係定義における方向による判定の一例を示す説明図である。 関係定義における表とみなす判定の一例を示す説明図である。 関係定義におけるメッシュ座標判定の一例を示す説明図である。 距離定義の一例を示す説明図である。 距離定義の一例を示す説明図である。 操作のエミュレーション処理の流れの一例を示すフローチャートである。 画面に表示されるウィンドウ領域の一例を示すイメージ図である。 第2実施形態にかかるコンピュータシステムで実現するシナリオ装置の一例を示すブロック図である。 第3実施形態にかかるコンピュータシステムで実現するシナリオ装置の一例を示すブロック図である。 第4実施形態にかかるコンピュータシステムで実現するシナリオ装置の一例を示すブロック図である。
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。本実施形態は、GUIによるユーザ操作を試験する場合に開示の技術を適用するものである。
(第1実施形態)
図1に、本実施形態に係るシナリオ装置10の一例を示す。シナリオ装置10は、開示の技術におけるシナリオ生成プログラム及びシナリオ実行プログラムによる処理を実行させることが可能な装置の一例である。シナリオ装置10は、CPU12及びメモリ14を含んでおり、メモリ14には操作記録プログラム28、自動操作プログラム30、及びシナリオ生成とシナリオ実行の対象となるGUIを使用するアプリケーションソフトウェア32が記憶されている。なお、図1では、アプリケーションソフトウェア32について、「アプリケーションソフトウェア」を「アプリケーション」と表記している。また、メモリ14には、シナリオを含むファイル34が記憶されている。CPU12は、操作記録プログラム28を実行することによって、操作記録部22として動作し、自動操作プログラム30を実行することによって、自動操作部24として動作する。また、CPU12が操作記録プログラム28を実行することによって、シナリオ装置10はシナリオ生成装置10Aとして動作する。また、CPU12が自動操作プログラム30を実行することによって、シナリオ装置10はシナリオ実行装置10Bとして動作する。なお、CPU12は、例えばOS(Operating System)により提供されるGUI機能を実行することによって、ユーザインタフェースアプリケーション部26として動作する。なお、ユーザインタフェースアプリケーション部26は、アプリケーションソフトウェア32の実行によって、GUIによるユーザ操作を可能にするものである。
また、シナリオ装置10は、VRAM(video RAM)16、入力部18、及びディスプレイ等の表示部20を備えている。VRAM16は、表示部20に表示される内容を保持するメモリであり、ユーザインタフェースアプリケーション部26から出力される画像を保持する。また、VRAM16は、操作記録部22及び自動操作部24に画像を提供する。入力部18は、マウス、キーボード、及びタッチパネル等によるユーザ入力を実行させるものであり、操作記録部22及びユーザインタフェースアプリケーション部26に接続されている。
シナリオ装置10はシナリオを生成する場合、アプリケーションソフトウェア32を実行し、CPU12が操作記録プログラム28を実行することにより、操作記録部22によるシナリオ生成処理が開始される。操作記録部22は、実行されているアプリケーションソフトウェア32により表示部20の画面に表示されるオブジェクトに対するユーザの操作を、入力部18の入力値を読み取ることで検出する。また、操作記録部22は、ユーザの操作対象の対象オブジェクトを、表示部20の画面に表示されるオブジェクトの画像をVRAM16から読み取ることで検出する。次に、操作記録部22は、表示部20の画面に表示される画像上で対象オブジェクトを特定するための目印を検出する。つまり、操作記録部22は、対象オブジェクトの周辺に表示されているオブジェクトを対象オブジェクトに対して目印となる周辺オブジェクトとして検出する。また、操作記録部22は、対象オブジェクトと周辺オブジェクトとの位置関係も検出する。なお、位置関係を示す情報を関連付けた周辺オブジェクトを示す情報を目印情報とすることができる。次に、検出した対象オブジェクト、ユーザの操作を示す情報、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報を操作情報として含むシナリオを生成し、メモリ14のファイル34に記録する。これにより、アプリケーションソフトウェア32におけるGUIによる操作について、操作時の座標を記録することなく、画面に対する操作を特定するための操作情報を操作の関係する一連の情報として記録することができる。
シナリオ装置10は記録されているシナリオを実行する場合、アプリケーションソフトウェア32を実行し、CPU12が自動操作プログラム30を実行することにより、自動操作部24によるシナリオ実行処理が開始される。自動操作部24は、メモリに記録されているシナリオを読み取り、実行されているアプリケーションソフトウェア32により表示部20の画面に表示されるオブジェクトに対する操作を実行する。まず、実行されているアプリケーションソフトウェア32により表示部20の画面上においてユーザによるユーザ操作が可能な領域の画像情報を取得する。例えば、アプリケーションソフトウェア32の実行時に、表示部20の画面上で表示領域がウィンドウの枠内に制限されている場合、ユーザ操作が可能な領域がウィンドウの枠外になる場合がある。そこで、自動操作部24は、ユーザ操作が可能なウィンドウの枠内外の領域を画像として取得する。次に、自動操作部24は、シナリオに記録された操作情報に含まれる対象オブジェクトについて、取得した画像情報から、ユーザ操作が可能なウィンドウの枠内外の領域の画像で対象オブジェクトの位置を特定する。次に、自動操作部24は、操作情報に含まれる対象オブジェクトに対するユーザ操作を示す情報に基づいて、特定した位置の対象オブジェクトに対する操作を実行する。これにより、アプリケーションソフトウェア32の一部が変更されて、操作位置が移動された場合であっても、操作を特定でき、シナリオにおける操作について操作エラーが生じることなく、遂行できる。
なお、シナリオ装置10は開示の技術におけるシナリオ装置の一例であり、シナリオ生成装置10Aは開示の技術におけるシナリオ生成装置の一例であり、シナリオ実行装置10Bは開示の技術におけるシナリオ実行装置の一例である。また、操作記録プログラム28は開示の技術におけるシナリオ生成プログラムの一例であり、自動操作プログラム30は開示の技術におけるシナリオ実行プログラムの一例である。また、アプリケーションソフトウェア32は開示の技術におけるアプリケーションソフトウェアの一例である。
図2に、シナリオ装置10をコンピュータ40で実現する一例を示す。コンピュータ40はCPU42、メモリ50、及び不揮発性の格納部52を備えている。CPU42、メモリ50、及び格納部52は、バス54を介して互いに接続されている。また、コンピュータ40は、ディスプレイ等の表示部44、キーボード及びマウス等の入力部46を備え、表示部44及び入力部46はバス54に接続されている。また、コンピュータ40は、記録媒体49が挿入され、挿入された記録媒体49に対して読み書きするための装置(IO装置)47がバス54に接続されている。また、コンピュータ40は、バス54に接続されるVRAM48を備えている。なお、格納部52はHDD(Hard Disk Drive)やフラッシュメモリ等によって実現できる。また、コンピュータ40はコンピュータネットワーク等に接続するためのインタフェースを備えることができる。
格納部52には、OS(Operating System)56及びコンピュータ40をシナリオ装置10として機能させるための操作記録プログラム60及び自動操作プログラム68が記憶されている。また、格納部52には、GUIアプリケーションプログラム58、及びファイル80が記憶されている。CPU42がOS56及びGUIアプリケーションプログラム58を実行することで、コンピュータ40は図1に示すユーザインタフェースアプリケーション部26として動作する。また、GUIアプリケーションプログラム58は、図1に示すアプリケーションソフトウェア32に対応する。なお、GUIアプリケーションプログラム58は、GUI実装の適否を判定(詳細後述)するための試験プログラムとして、入れ替えが可能である。
格納部52に格納された操作記録プログラム60は、入力監視プロセス61、画像キャプチャプロセス62、OCR文字列取得プロセス63、画像切取プロセス64、シナリオ出力プロセス65、画像検索プロセス66、及び位置関係検出プロセス67を含んでいる。CPU42が操作記録プログラム60を格納部52から読み出してメモリ50に展開し、操作記録プログラム60が有する各プロセスを実行することで、コンピュータ40は図1に示すシナリオ装置10及びシナリオ生成装置10Aとして動作する。また、CPU42が操作記録プログラム60を実行することで、コンピュータ40は図1に示す操作記録部22として動作する。なお、操作記録プログラム60は、図1に示す操作記録プログラム28に対応する。
また、格納部52に格納された自動操作プログラム68は、シナリオ読み込みプロセス69、画像検索プロセス70、スクロールバー検出プロセス71、OCR指定文字列検索プロセス72、及び一枚画像作成プロセス73を含んでいる。また、自動操作プログラム68は、位置関係検出プロセス74、イベントエミュレートプロセス75、画像キャプチャプロセス76、スクロール領域検出プロセス77、及び矩形領域検索プロセス78を含んでいる。CPU42が自動操作プログラム68を格納部52から読み出してメモリ50に展開し、自動操作プログラム68が有する各プロセスを実行することで、コンピュータ40は図1に示すシナリオ装置10及びシナリオ実行装置10Bとして動作する。また、CPU42が自動操作プログラム68を実行することで、コンピュータ40は図1に示す自動操作部24として動作する。なお、自動操作プログラム68は、図1に示す自動操作プログラム30に対応する。
また、格納部52には、試験シナリオ81、登録済みアイコン82、及びスクロールバー矢印アイコン83を含むファイル80が記憶されている。なお、ファイル80は、図1に示すファイル34に対応する。
なお、シナリオ装置10はコンピュータネットワークに接続できるようにしてもよい。つまり、シナリオ装置10はコンピュータネットワークに接続することまたは非接続にすることに限定されない。シナリオ装置10に示す一例のように、コンピュータ40のみで実現してもよく、複数のコンピュータによりシナリオ装置10を実現してもよい。
ここで、表示部44の画面に表示されるオブジェクトに対して、マウス等の入力部46のよりユーザの操作を、シナリオに登録する場合を簡単に説明する。
図3に、アプリケーションソフトウェア32の実行により表示部44の画面に表示されるウィンドウ領域100、112を示す。ウィンドウ領域100は、シナリオを生成する場合に、アプリケーションソフトウェア32の実行により表示部44の画面に表示されるウィンドウ領域を示す。また、ウィンドウ領域112は、シナリオ生成後に文字の大きさが変更されたアプリケーションソフトウェア32の実行により表示部44の画面に表示されるウィンドウ領域を示す。ウィンドウ領域100は、アプリケーションソフトウェア32においてオブジェクトに対するユーザの操作を可能とする入出力ウィンドウ領域102を含む。入出力ウィンドウ領域102には、ユーザ操作の対象となるオブジェクトであるボタン画像104が表示される。ボタン画像104には、「設定」の文字を有する文字列情報106が表示されている。また、入出力ウィンドウ領域102には、ボタン画像104に対するマウス等の入力部46の操作を促す「押してください」の文字を有する文字列情報108が表示されている。
図3の一例においてシナリオを生成する場合、入力部46によるユーザ操作として、ボタン画像104にポインタを移動させ、クリック操作により、位置110を指示することを想定する。シナリオにクリック操作時の位置(座標)110を記録することで、記録されている位置110でクリック操作させることにより、ユーザ操作を再現できる。ところが、シナリオを生成した後に、アプリケーションソフトウェア32に文字の大きさを変更する修正を施すと、ボタン画像104の表示位置が移動される。従って、記録されている位置110でクリック操作させると、対象オブジェクト(ボタン)は存在せずにユーザ操作を再現できない。
図4に、表示部44の画面に表示される他の一例としてのウィンドウ領域101、113を示す。ウィンドウ領域101は、シナリオを生成する場合に、アプリケーションソフトウェア32の実行により表示部20の画面に表示されるウィンドウ領域を示す。また、ウィンドウ領域113は、シナリオ生成後にウィンドウ領域101の大きさが変更されたアプリケーションソフトウェア32の実行により表示部44の画面に表示されるウィンドウ領域を示す。ウィンドウ領域113は、ウィンドウ領域101より横方向に距離Lだけウィンドウ領域113の大きさが小さくされている。また、ウィンドウ領域101、113は、入出力ウィンドウ領域102内に表示される画像を移動させるためのスクロールバー領域画像103を含む。
図4の一例でシナリオを生成する場合、ユーザ操作として、スクロールバー領域画像103にポインタを移動させ、クリック操作で位置105を指示したのちにドラッグ操作で入出力ウィンドウ領域102内に表示される画像を移動させることを想定する。ところが、ウィンドウ領域113の大きさが横方向に小さくされているので、スクロールバー領域画像103の表示位置が移動される。従って、記録されている位置105の位置でクリック操作させドラッグ操作させても、対象オブジェクト(スクロールバー)は存在せずにユーザ操作を再現できない。
そこで、本実施形態では、対象オブジェクトの画面上の位置座標を記録せずに、対象オブジェクトの周辺オブジェクトを目印としてシナリオに記録し、目印を基にして対象オブジェクトを特定する。
次に、本実施形態の作用を説明する。
図5に、シナリオ装置10におけるアプリケーションソフトウェア32のGUIテストの流れの一例を示す。
まず、シナリオ装置10は、ユーザによる操作をシナリオに記録する(ステップ200)。つまり、CPU42は、ステップ200において、アプリケーションソフトウェア32の実行により表示部20にオブジェクトが表示される画面に対して行われるユーザ操作を試験シナリオ81に記録する。次に、シナリオ装置10は、シナリオに記録されているGUI動作を再生する(ステップ202)。つまり、CPU42は、記録された試験シナリオ81に従ってユーザ操作を再現する。次に、シナリオ装置10は、シナリオによるユーザ操作を遂行できたか否かを判断することで、GUI実装の適否を判定する。つまり、CPU42は、ステップ204において、シナリオに記録されているユーザ操作を全て完了したか否かを判断し、肯定判断の場合にステップ206でGUI実装に問題はないと判定する。一方、ステップ204で否定判断の場合にステップ208でGUI実装に問題ありと判定する。
図5のステップ200の処理は、操作記録プログラム60による処理に対応し、図5のステップ202〜ステップ208の処理は、自動操作プログラム68の処理に対応する。
図6に、操作記録プログラム60の処理の流れの一例を示す。なお、以下の説明では、入力部46の一例として、マウス46M及びキーボード46Kを用いた場合を説明する。
なお、表示部44には、マウスの移動に対応してマウスカーソルの位置が表示される。マウス46Mは、マウスボタンを備えている。マウスボタンの押下状態はマウスダウンに対応し、及びマウスボタンの押下から戻す状態はマウスアップのマウスボタン状態に対応する。マウスカーソルの位置とマウスボタン状態の検出には、OS56に標準的に含まれているAPI(Application Program Interface)を用いることができる。また、マウスボタン状態は、マウスダウン・マウスアップイベントをフックすることによって実現が可能である。また、ユーザは、マウス46Mによりドラッグ操作が可能である。コンピュータ40において、ドラッグ操作か否かの判定は、マウスボタンのダウン時とアップ時におけるマウスカーソル位置の座標のユークリッド距離等の距離を算出し、所定閾値を超えた場合にドラッグと判定することができる。
各種APIとして、Microsoft Windows(登録商標) APIの一例に、マウスカーソルの位置を取得するAPI(GetCursorPos)が知られている。また、マウスに関係するAPIの一例には、マウスイベント発生を検知するAPI(SendInput/mouse_event)が知られている。また、マウスボタンイベントを取得するAPI(グローバルフックと呼ばれる手法)も知られている。また、スクリーンショットを取得するAPI(Bitblt)も知られている。
まず、CPU42は、操作記録プログラム60に含まれる各プロセスを実行する。具体的には、CPU42は、ステップ210及び212による入力監視プロセス61を実行し、マウス46M及びキーボード46Kによる入力を監視する。詳細にはCPU42は、ステップ210において、マウス46Mまたはキーボード46Kによる入力値を読み取る。マウス46Mまたはキーボード46Kによる入力(ユーザによる入力)がなされるまで、CPU42は、否定判断してステップ210へ戻る。マウス46Mまたはキーボード46Kによる入力(ユーザによる入力)がなされると、CPU42は、ステップ212で肯定判断し、ステップ214で入力操作はマウス46Mによるものか否かを判断する。マウス46Mによる入力操作の場合、CPU42は、ステップ214で肯定判断し、ステップ218へ処理を移行する。一方、キーボード46Kによる入力操作の場合、CPU42は、ステップ214で否定判断し、ステップ216でキー情報を保持し、ステップ232へ処理を移行する。
つまり、CPU42は、ステップ210で、マウスカーソルの位置とマウスボタンイベント、またはキーボードイベントを検出する。次にCPU42は、キーボードイベントを検出すると(ステップ212で肯定判断でかつステップ214で否定判断)、キー情報を保持し(ステップ216)、ステップ232へ処理を移行する。一方、CPU42は、マウスボタンイベントを検出すると(ステップ212及びステップ214で肯定判断)、ステップ218へ処理を移行する。
次に、CPU42は、ステップ218で、画像キャプチャプロセス62及び画像検索プロセス66を実行する。詳細には、画像キャプチャプロセス62の実行により、表示部44の画面の画像を取得し、画像検索プロセス66の実行により、マウス46Mによる操作位置を含む領域の画像と一致する画像をファイル80に保持された登録済みアイコン82から検索する。つまり、CPU42は、ステップ218で、マウス46Mによる操作位置を含む画像がファイル80内に登録済みアイコン82として予め登録されたアイコンの画像であるか否かを判断する。予め登録されたアイコンの画像であるか否かの判断は、マウス46Mが操作されたときのマウスカーソルの位置を含む所定サイズの画像に、予め登録されたアイコン画像が一致または含まれるか否かを判定することにより判断できる。
マウス46Mによる操作位置を含む画像が登録済みのアイコンの画像である場合、CPU42は、ステップ218で肯定判断し、ステップ220で、アイコンの種別及び状態を示す情報を一時的に記憶する。次に、CPU42は、ステップ222で、OCR文字列取得プロセス63を実行して、アイコンの画像近傍に存在する文字列を探索し、探索結果の文字列情報を次のステップ226で一時的に記憶し、ステップ230へ処理を移行する。
OCR文字列取得プロセス63の実行による文字列の探索は、公知技術のOCR(Optical Character Reader)等の処理により実現できる。CPU42が文字列を探索する場合、アイコンの種別により定められた方向にある最近接文字列を第一候補とすることが好ましい。アイコンの種別により定められた方向に文字列が存在しない場合、CPU42は、別の方向の最近接文字列を探索することを、文字列が探索されるまで繰り返すことが好ましい。文字列を探索する場合における方向の優先順位は、アイコンの種類毎に順位を定めておくことが好ましい。
一方、マウス46Mによる操作位置を含む画像が登録済みのアイコンの画像でない場合、CPU42は、ステップ218で否定判断し、ステップ224でマウス46Mによる操作位置を含む画像が文字列を含むか否かを判断する。マウス46Mによる操作位置を含む画像が文字列を含む場合、CPU42は、ステップ224で肯定判断し、ステップ226へ処理を移行する。一方、マウス46Mによる操作位置を含む画像が文字列を含まない場合、CPU42は、ステップ224で否定判断し、ステップ228でマウス46Mによる操作位置を含む画像を一時的に記憶し、ステップ230へ処理を移行する。
図7に、登録済みアイコン82の画像の一例としてチェックボックスの画像を示す。図7は、オン状態のチェックボックスの画像84及びオフ状態のチェックボックスの画像85を含む表示領域86を示している。
例えば、マウス46Mによってチェックボックスがクリックされた場合、チェックボックスの状態は、オン状態からオフ状態に遷移するパターンと、オフ状態からオン状態に遷移するパターンが考えられる。そこで、オン状態のアイコン(チェックボックスの画像84)とオフ状態のアイコン(チェックボックスの画像85)の両方を記録しておき、画像検索プロセス66の実行により画面内を探索する。画面内の探索結果で、チェックボックスの画像が占める矩形領域内にマウス46Mの操作時の座標(クリック座標)が存在した場合、チェックボックスがクリックされた操作として記録する(ステップ220)。ステップ220の記録では、登録済みアイコン82の種別及び状態も記録する。図7の例では、種別として、チェックボックスが記録され、状態としてオン状態またはオフ状態が記録される。
また、マウス46Mによる操作位置を含む画像が登録済みのアイコンの画像である場合に近傍の文字列を探索する(ステップ222)。図7に示すチェックボックスの例ではアイコンの右側にラベルとなる文字列が位置している場合が多いので、チェックボックスについて定める方向を右側として、最近接文字列が第一候補として探索される。図7の例では、「チェックボックス」という文字列が探索される。
図8に、登録済みアイコン82の画像の一例としてクローズアイコンの画像88を示す。図8は、クローズアイコンの画像88を含む表示領域86を示している。クローズアイコンは左側に文字列が位置している場合が多いので、CPU42は、クローズアイコンについて定める方向を左側として、最近接文字列が第一候補として探索される。図8の例では、「FUJITSU JAPAN」という文字列が探索される。
図9に、マウス46Mによる操作位置を含む画像の一例として、文字列が表示されたボタンの画像90を示す。図9は、文字列が表示されたボタンの画像90を含む表示領域86を示している。例えば、文字列が表示されたボタンや図形が表示されたボタンは、文字列または未登録の画像がマウス46Mにより指示(クリック)された操作と考えられる。CPU42は、OCR文字列取得プロセス63の実行で、マウス46Mによる操作位置直下の文字列を取得できなかった場合(ステップ224で否定判断)、画像切取プロセス64の実行で、所定の大きさの矩形領域の画像を切り取り記憶する(ステップ228)。図9に示す例では、文字列が表示されたボタンの画像90が切り取られて記憶される。
図10に、マウス46Mによる操作位置を含む画像の一例として、テキストボックスの画像92,93を示す。図10は、テキストボックスの画像92,93を含む表示領域86を示している。例えば、テキストボックスは、マウス46Mによる操作位置直下の文字列が空白または空であると考えられる。CPU42は、マウス46Mによる操作位置直下の文字列が空白または空である場合(ステップ224で否定判断)、画像とみなし、所定の大きさの矩形領域を切り取り記憶する(ステップ228)。
図11に、登録済みアイコン82の画像の一例としてラジオボタンの画像を示す。図11は、オフ状態のラジオボタンの画像94及びオン状態のラジオボタンの画像95を含む表示領域86を示している。例えば、マウス46Mによってラジオボタンがクリックされた場合、ラジオボタンの状態は、オン状態からオフ状態に遷移するパターンと、オフ状態からオン状態に遷移するパターンが考えられる。そこで、オン状態のアイコン(ラジオボタンの画像95)とオフ状態のアイコン(ラジオボタンの画像94)の両方を記録しておき、画像検索プロセス66の実行により画面内を探索する。画面内の探索結果で、ラジオボタンの画像が占める円形領域内にマウス46Mの操作時の座標(クリック座標)があった場合、ラジオボタンがクリックされた操作として記録する(ステップ220)。ステップ220の記録では、登録済みアイコン82の種別及び状態も記録する。図7の例では、種別として、ラジオボタンが記録され、状態としてオン状態またはオフ状態が記録される。ラジオボタンの例ではアイコンの右側にラベルとなる文字列がある場合が多いので、ラジオボタンについて定める方向を右側として、最近接文字列が第一候補として探索される(ステップ222)。
図12に、マウス46Mによる操作位置を含む画像の一例として、コンボボックスの画像97を示す。コンボボックスは、マウス46Mによる操作により選択可能な情報を表示させるアイコンの画像96を含む。CPU42は、マウス46Mによる操作位置直下に文字列が存在しないので(ステップ224で否定判断)、画像とみなし、所定の大きさの矩形領域を切り取り記憶する(ステップ228)。
次に、図6に示すステップ230では、CPU42は、対象オブジェクトに対する目印と方向を検出し、検出結果を一時的に記憶する。つまり、CPU42は、ステップ222で探索した結果の文字列、ステップ224で肯定判断されたときの文字列、またはステップ228で記憶した画像の何れか1つを対象オブジェクトとする。そして、CPU42は、対象オブジェクトの周辺で最も近い文字列または画像を探索し、周辺オブジェクトとする。探索結果の周辺オブジェクトは、対象オブジェクトの目印となる。また、CPU42は、探索結果の文字列または画像(周辺オブジェクト)に対する対象オブジェクトからの方向を検出し、周辺オブジェクトに対応づける。次にCPU42は、探索結果の周辺オブジェクトを示す情報及び対象オブジェクトからの方向を示す情報を一時的に記憶する。
次のステップ232では、CPU42は、一時的に記憶した文字列または画像(周辺オブジェクト)を示す情報及び対象オブジェクトからの方向を示す情報を含む操作情報を記録したシナリオを出力することにより、シナリオを生成する(詳細は後述)。
次に、CPU42は、ステップ234で、記録中止が要求されたか否かを判断し、否定判断の場合にステップ210へ戻り、肯定判断の場合に本処理ルーチンを終了する。なお、記録中止要求の一例は、使用頻度が少ない特殊なキーボードイベント(例えば、Ctrl+Alt+Q等)の検出を用いることができる。
次に、図13を参照して、図6に示すステップ232の処理を詳細に説明する。なお、以下の説明では、ステップ232の処理で対象とするシナリオを試験シナリオ81として説明する。
まず、CPU42は、図6に示すステップ232で、シナリオ出力プロセス65を実行する。具体的には、CPU42は、ステップ240で最初のシナリオ出力であるか否かを判断し、肯定判断の場合にステップ242の処理へ移行し、否定判断の場合にステップ246の処理へ移行する。ステップ242では、CPU42が、試験シナリオ81を新規に作成し、作成した試験シナリオ81を記録可能に開く(ファイルオープン)。次に、CPU42は、ステップ244で、試験シナリオ81によりGUI操作を実行する場合における実行順序を示す変数に「1」をセットする。一方、ステップ246では、CPU42が既存の試験シナリオ81を更新記録可能に開く(追記ファイルオープン)。次に、CPU42は、ステップ248で、試験シナリオ81によりGUI操作を実行する場合における実行順序を示す変数に「1」を加算してセットする。
次にCPU42は、ステップ250で、記憶データに画像情報を含むか否かを判断する。なお、ステップ250で用いる記憶データは、ステップ216(図6)で保持したキー情報、及びステップ220(図6)で一時的に記憶したアイコンの種別及び状態を示す情報を含む。また、記憶データは、ステップ226(図6)で一時的に記憶した文字列を示す情報及びステップ228(図6)で保持した画像を示す情報を含む。また、記憶データは、ステップ230(図6)で一時的に記憶した周辺オブジェクトを示す情報及び対象オブジェクトからの方向を示す情報を含む。
記憶データに画像情報が含まれない場合、CPU42は、ステップ250で否定判断し、ステップ254の処理へ移行する。一方、記憶データに画像情報が含まれる場合、CPU42は、ステップ250で肯定判断し、ステップ252で、記憶データに含まれる画像情報に一意のファイル名を付与してファイル80(図2)に記録する。次にCPU42は、ステップ254で、図6に示す処理で一時的に記憶した情報または画像ファイル名を、試験シナリオ81に実行順序変数をキーとして記録し、次のステップ256で、試験シナリオ81を閉じる(ファイルクローズ)。
図14に、アプリケーションソフトウェア32の実行により表示部20の画面に表示されるウィンドウ領域118の一例を示す。ウィンドウ領域118は、アプリケーションソフトウェア32においてオブジェクトに対するユーザの操作を可能とする入出力ウィンドウ領域102を含む。入出力ウィンドウ領域102には、「設定」の文字列情報106が表示されるボタン画像104が表示される。また、ボタン画像104の周辺には矢印記号を示す画像120、及び「押してください」の文字列情報108が表示されている。また、ボタン画像104の周辺には「Machine1」の文字列情報126が表示されている。また、入出力ウィンドウ領域102には、テキストボックスの画像92,93が表示されている。テキストボックスの画像92の周辺には「ご氏名」の文字列情報122が表示され、テキストボックスの画像93の周辺には「ご住所」の文字列情報124が表示されている。
また、図14には、入出力ウィンドウ領域102における、マウス46Mによるユーザ操作の操作位置130,132,134が示されている。
図15に、図14に示す操作位置130,132,134の順に、マウス46Mによるユーザ操作が実行された場合に出力される試験シナリオ81の一例を示す。図15に示す試験シナリオ81の第1行には、操作位置130でマウス46Mがクリックされたときに得られる操作情報が記録されている。つまり、マウス46Mによる操作位置130の直下の文字列が「設定」であることを示している。また、対象オブジェクトである「設定」の文字列を一意に決定するための目印として、周辺オブジェクト、及び周辺オブジェクトから対象オブジェクト(「設定」の文字列)へ向かう方向を示す情報が記録されている。第1の目印は、ボタン画像104の左側に位置する矢印記号を示す画像120(図15では画像1と表記)を示し、第2の目印は、ボタン画像104のさらに左側に位置する「押してください」の文字列情報108を示している。第3の目印は、ボタン画像104の下側に位置する「Machine1」の文字列情報126を示している。
図15に示す試験シナリオ81の第2行には、操作位置132でマウス46Mがクリックされたときに得られる操作情報が記録されている。つまり、マウス46Mによる操作位置132の直下の文字列が空白であることを示している。また、文字列が空白である領域を対象オブジェクトとして一意に決定するための目印として、左側に位置する「ご氏名」の文字列情報122、及び左側に位置する「ご住所」の文字列情報124が記録されている。また、試験シナリオ81の第3行には、キーイベントである旨が記録され、項目「Type」の欄に「aaa」のキー情報が記録されている。また、試験シナリオ81の第4行には、キーイベントである旨が記録され、項目「Type」の欄に「改行キー」のキー情報が記録されている。また、試験シナリオ81の第5行には、操作位置134でマウス46Mがクリックされたときに得られる操作情報が記録されている。
図15に示す試験シナリオ81は、対象オブジェクトを一意に決定するための目印として第1〜第3までの目印を記録した場合を示しているが、目印は3つに限定されるものではない。なお、対象オブジェクトを一意に決定するための周辺オブジェクトから対象オブジェクトへ向かう方向を示す情報を位置関係情報とすることができる。また、対象オブジェクトを一意に決定するための情報として、周辺オブジェクトを示す情報及び位置関係情報は目印情報に対応する。
なお、CPU42により実行されるステップ210の処理は、コンピュータ40がシナリオ生成装置として動作する場合における第1検出部の処理に対応する一例である。また、CPU42により実行されるステップ230の処理は、コンピュータ40がシナリオ生成装置として動作する場合における第2検出部の処理に対応する一例である。さらに、CPU42により実行されるステップ232の処理は、コンピュータ40がシナリオ生成装置として動作する場合における生成部の処理に対応する一例である。
次に、試験シナリオ81に従って実行される自動操作の処理を説明する。
図16に、自動操作プログラム68の処理の流れの一例を示す。
まず、CPU42は、自動操作プログラム68に含まれる各プロセスを実行する。具体的には、CPU42は、ステップ300によるシナリオ読み込みプロセス69を実行することにより、試験シナリオ81を読み取る。次に、CPU42は、ステップ302において、試験シナリオ81に記憶されているコマンドがマウス46Mの操作を示す情報であるか否かを判断する。試験シナリオ81に記憶されているコマンドがキーボード46Kの操作を示す情報の場合、CPU42はステップ302で否定判断し、ステップ304で試験シナリオ81に記憶されているキーイベントを発生してステップ334の処理へ移行する。なお、CPU42は、ステップ304で実行するキーイベントを、キーボードイベントのエミュレーションとしてイベントエミュレートプロセス75の実行により行う。
試験シナリオ81に記憶されているコマンドがマウス46Mの操作を示す情報の場合、CPU42はステップ302で肯定判断し、ステップ306で操作対象の画面の画像を取得する(画面をキャプチャする)。次に、CPU42は、ステップ308で、取得した画像におけるスクロール対象領域を示す画像の存在の有無を判断する。
つまり、CPU42は、スクロール対象領域を推定するために、取得した操作対象の画面の画像からスクロールバーを探索し、スクロールバーが探索された場合、ウィンドウ内の画像をスクロールするためのつまみの位置を特定する。具体的には、CPU42は、画像キャプチャプロセス76を実行することにより、ウィンドウの画像を取得する(スクリーンショットを取ってビットマップイメージを取得する)。次に、CPU42は、スクロールバー検出プロセス71を実行する。
ここで、ファイル80の登録済みアイコン82に、スクロールバーが占める領域の両端に存在するアイコン(上矢印アイコンと下矢印アイコンの組、または左矢印アイコンと右矢印アイコンの組)を予め登録しておく。スクロールバー検出プロセス71では、スクロールバーが占める領域の両端に存在するアイコンが同一直線状に位置する場合に、登録されているアイコン間の領域がスクロールバー領域であると判定される。また、つまみ可動部(ボタンより内側の部分)が垂直スクロールバーの場合、スクロール対象領域内の画像をスクロールするためのつまみは、可動部の任意のx座標に対して幅1ピクセルの垂直に長い領域とすると、色または濃度が全て同じであると考えられる。ところが、可動部とつまみ部の境界線において、連続性が失われるため、境界線をもってつまみの位置を特定することができる。
次にCPU42は、取得した画像にスクロール対象領域を示す画像が存在しない場合、ステップ308で肯定判断し、ステップ314へ処理を移行する。一方、取得した画像にスクロール対象領域を示す画像が存在する場合、CPU42は、ステップ308で否定判断し、ステップ310で、スクロール領域検出プロセス77を実行することにより、スクロール対象となる画面内の矩形領域を特定する。次に、CPU42は、ステップ312で、一枚画像作成プロセス73を実行することにより、スクロール領域全体を示す一枚画像を作成する。一枚画像の作成が終了すると、CPU42は、ステップ314へ処理を移行する。
なお、ステップ310の処理では、取得した画像内におけるスクロールバー領域から、スクロール対象となる画面内の矩形領域を特定できる。
図17に、画面内にスクロールバー領域として垂直スクロールバー領域140と水平スクロールバー領域142の両方の領域が存在する場合に矩形領域を推定するイメージを示す。画面内に、垂直スクロールバー領域140と水平スクロールバー領域142の両方の領域が存在する場合、両者の占有領域から、スクロール対象となる矩形領域(スクロール対象領域)144を推定可能である。つまり、垂直スクロールバー領域140と、水平スクロールバー領域142とを辺とする領域をスクロール対象領域144として推定する。
図18に、画面内にスクロールバー領域として垂直スクロールバー領域140のみ存在する場合にスクロール対象領域を推定するイメージを示す。スクロールバー領域として垂直スクロールバー領域140のみ存在する場合にスクロール対象領域を推定する処理として、次に示す第1の処理〜第8の処理をCPU42が実行する一例がある。
第1の処理では、CPU42が、垂直スクロールバーのつまみ146を、垂直スクロールバー領域148内の上端に移動する。第2の処理では、CPU42が、画面の画像(スクリーンショット)を取得する。第3の処理では、CPU42が、垂直スクロールバー領域148内の下ボタン150を押下する。第4の処理では、CPU42が、再度、画面の画像(スクリーンショット)を取得する。第5の処理では、CPU42が、画面の変化点を全て抽出し、全ての変化点を含む変化領域152及び非変化領域158を求める。第6の処理では、CPU42が、変化領域152内の左端154のx座標を求め、矩形領域の左端と定める。第7の処理では、CPU42が、右端・上端・下端を求める。なお、第5の処理で求めた変化領域152内から求めることができる。第8の処理では、CPU42が、垂直スクロールバー領域148内の上ボタン156を押下してつまみ146の位置を最上部に戻し、つまみの位置を最上部として記憶する。第1の処理〜第8の処理をCPU42が実行することにより、スクロール対象領域160(スクロール対象領域144)を推定できる。
なお、画面内において主要な情報は上部にある頻度が高く、変化点も多くなるため、第1の処理では、つまみ146を上端に移動しているが、つまみ146を上端に移動することに限定するものではない。また、第3の処理における押下回数は、1回に限定されるものではなく、速度とトレードオフしつつ複数回行うことにより精度は向上する。第3の処理における押下回数を複数回行う場合、第8の処理で、つまみ146の位置を最上部に戻す回数も同様の回数にする。ところで、第1の処理〜第8の処理をCPU42が実行する場合、たとえ内部処理としてスクロール対象領域であっても、領域の左端に同色や同濃度の画像が続く場合、領域の左端がスクロール対象領域とみなされない。しかし、同色や同濃度の画像が続く箇所には操作の対象となるまたは認識するオブジェクトがないと考えられるので、動作に支障はない。
また、上記では、画面内にスクロールバー領域として垂直スクロールバー領域140のみ存在するときにおけるスクロール対象領域を推定する場合を説明したが、水平スクロールバー領域142のみ存在する場合も同様に推定することができる。
次にCPU42がステップ312で実行する一枚画像作成プロセス73の処理をさらに説明する。CPU42がステップ312で実行する処理は、画面分割による画像取得処理と、取得した複数の画像を一枚の画像に連結する画像連結処理とに大別される。
画面分割による画像取得処理では、CPU42は、画像を取得するための画面分割数を決定し、スクロールバーのつまみをドラッグ操作する度に、ウィンドウ内の画像を取得する(スクリ―ンショットを取得する)。
図19に、垂直スクロールバーに対してドラッグ操作する場合に座標を決定する過程の説明図を示す。ドラッグ操作では、マウスダウン→マウスムーブ→マウスアップの一連の操作が行われる。ドラッグ操作について、マウスムーブするときの座標を決定する場合に、次に示す第1の手順〜第5の手順をCPU42が実行する一例がある。
CPU42は、第1の手順で、つまみ146を上端(右端)に移動させて、マウスダウンする座標を決定する。マウスダウンする座標は、つまみ146の領域中にあればどこでもよい。次に、CPU42は、第2の手順で、スクロールバー領域140上におけるツマミ146の停留点の個数(縦方向もしくは横方向の画面分割数)nを決定する。次に、CPU42は、第3の手順で、スクロールバーのつまみ146の大きさ(距離Y1)と可動領域である垂直スクロールバー領域148との大きさの差分(距離Y2)のピクセル数を求めて、個数nで除算する。次に、CPU42は、第4の手順において、第3の手順で求めた数値(除算の商)を、停留点ごとに整数倍(0倍、1倍、2倍・・・)した数を、第1の手順で決定したy座標(x座標)に加算した座標が各停留点でマウスムーブするための座標となる。次に、CPU42は、第5の手順で、2回目からマウスダウンする箇所は、マウスムーブした差分値だけつまみ146が移動しているので、移動した距離だけ第1の手順の座標に加算した座標の位置となる。
なお、第2の手順において個数nを決定する際、後述する画像連結処理において同一画像の領域を重ねて連結するため、画面を網羅するためには取得する画像(スクリーンショット)は少なくとも一部が重複することが好ましい。個数nを大きい値にすることによって高精度の一枚画像を得ることができる。一方、個数nが大きいと画像の取得時間が増大するため、トレードオフで決定する。決定方法の一例として、「可動部の大きさをつまみの大きさで除算し、端数を切り上げる」方法がある。この決定方法の一例は、可動領域である垂直スクロールバー領域148の長さを画面全体の大きさに、つまみ146の長さをスクロール領域の大きさに比例させたスクロールバーの実装が好ましいことに基づく方法である。
ドラッグ操作は、可動領域(垂直スクロールバー領域148)のつまみ146以外の領域のうち、スクロールさせる方向のボタンをクリックする操作に代えてもよい。ただし、スクロールさせる方向のボタンをクリックする操作の場合には、クリック操作の度に、ステップ306と308の処理と同様にスクロールバーの再検出を行い、つまみ146の位置を再確定させる。
なお、垂直スクロールバーについて個数nを値aに、水平スクロールバーについて個数nを値bに決定した場合、画像を取得(スクリーンショット)の回数は、値aと値bの乗算値(a・b)になる。
次に、取得した複数の画像を一枚の画像に連結する画像連結処理について説明する。画像連結処理で、取得した複数の画像を一枚の画像に連結する場合、CPU42は、ビットマップイメージが一致する最大長を重なり領域で画像の連結を行う。最大長を重なり領域で画像を連結する場合、重なり領域と判断された部分の画像はどちらか一方を削除して連結する。
図20に、上下の画像について、最大長Yaの重なり領域で画像を連結する場合の一例を示し、図21に、左右の画像について、最大長Xaの重なり領域で画像を連結する場合の一例を示す。
また、図22に、上下の画像、及び左右の画像の各々について、画像を連結する場合の一例を示す。図22に示す一例は、上下左右2つずつの領域を連結する場合を示す。例えば、画面内に垂直スクロールバー領域140、及び水平スクロールバー領域142が存在する場合(図17も参照)、画面内に空白の領域が存在すると、特定の列(行)の重なり領域の大きさが、別の列(行)の重なり領域と異なる場合がある。この場合、図22に示すように、重なり領域の長さが短いほうに揃えることで、空白などの影響を抑止することができる。
なお、画像連結処理で求めた重なりのピクセル数は、後述する処理(例えば、ステップ332の処理)で使用可能に、一時的に記録しておくことが好ましい。また、連結部分の探索は、画像取得処理と並行して実行することができる。連結部分の探索において、重なり領域が発見できない場合、少しつまみを移動させた箇所で画像の再取得を行う(スクリーンショットを取り直す)ことで、一枚の画像に連結するための領域を増加させることができる。
次にCPU42は、ステップ314で、ステップ306で取得した一枚画像またはステップ312で連結したスクロール領域全体の一枚画像から、試験シナリオ81の現在の行に指定された文字列及び画像を示す情報を検索して列挙する。つまり、ステップ314では、試験シナリオ81の現在の行に指定された文字列をOCRによる文字認識処理により抽出し、文字認識した文字列の座標を全て列挙する。また、ステップ314では、試験シナリオ81の現在の行に指定された画像を画像一致処理により抽出し、抽出した画像の座標を全て列挙する。なお、文字列は前方一致、後方一致、及び部分一致等のように自由度を与えてもよい。ステップ314で列挙される文字列または画像は、対象オブジェクトの候補である。
次にCPU42は、ステップ315で、目印情報に記載された文字列を示す情報、または比較判定時の位置関係情報が記載された文字列を示す情報を列挙する。また、目印情報に画像が指定されている場合は、指定された画像についてOCR等で検索する。ステップ315で列挙される文字列または画像は、周辺オブジェクトの候補である。なお、ステップ314及び315における処理は、OCRによる検索処理、画像の完全一致検索処理、またはあいまい一致検索処理の機能を有するOCR指定文字列検索プロセス72、及び画像検索プロセス70を、CPU42が実行することにより実施できる。
次にCPU42は、ステップ316で、対象オブジェクトの候補を発見したか否かを判断する。ステップ316における判断処理は、CPU42が、ステップ314及び315における処理で文字列または画像を列挙できたか否かを判別することにより判断することができる。文字列または画像を列挙できない場合、CPUはステップ316で否定判断し、ステップ318で、GUIの実装に問題がある可能性を含むGUI実装不適と判定する。一方、文字列または画像を列挙できた場合、CPUはステップ316で肯定判断し、ステップ320へ処理を移行する。
次にCPU42は、ステップ320で、対象オブジェクトの候補を一意化できるか否かを判断する。ステップ320における判断処理では、対象オブジェクトの候補(ステップ314)と、周辺オブジェクトの候補(ステップ315)とに対し、試験シナリオ81に記録された位置関係を示す条件を与え、適合する対象オブジェクトの候補に絞る処理が実行される。条件に適合する対象オブジェクトの候補が存在する場合、CPU42は、ステップ320で肯定判断してステップ324へ処理を移行する。一方、条件に適合する対象オブジェクトの候補が存在しない場合、CPU42は、ステップ320で否定判断してステップ322で、試験シナリオ81に問題を含む可能性が高いことを示す情報をユーザに報知する処理を実行した後に本処理ルーチンを終了する。
なお、オブジェクトに対して与える条件として、位置関係を示す条件に代えて比較判定を条件とすることができる。ここで、比較判定のみを条件として与える試験シナリオ81を、操作記録プログラム60の実行によって作成することは困難である。試験シナリオ81を用いて詳細な試験を実行するためには、ユーザに手動で試験シナリオ81にチェックポイント等を追記させて、自動操作を実行すればよい。
また、オブジェクト間の位置関係は、CPU42が、位置関係検出プロセス74を実行することにより検出することができる。例えば、位置関係に関係する矩形要素の座標値を入力とし、所定の計算式の結果を出力として、出力値が予め定めた閾値以内か否かを判断することで、条件に適合するか否かを判定できる。オブジェクトに対して与える条件を示す情報は、プログラムコードに埋め込んでもよく、外部記録装置のデータベース等に条件データとして記録し、読み取るようにしてもよい。
また、ステップ314で対象オブジェクトの候補を列挙するときに、自由度を与えずに検索する場合、対象オブジェクトの候補の文字列が一枚画像の中で唯一であると、唯一の文字列が対象オブジェクトである可能性が高い。なお、自由度を与えるとは、文字列に前方一致、後方一致、及び部分一致等の条件を付与することをいう。一方、対象オブジェクトの候補の文字列が一枚画像の中で唯一でない場合、複数の文字列を条件によって絞り込む。条件は複数の条件を組み合わせてもよいが、最終的に1つの条件に絞ることが好ましい。1つに絞れない場合(例えば、複数個残留した場合や、条件を満たすものがない場合等)、ステップ322で、警告等の情報を報知して本ルーチンを終了し、ユーザに試験シナリオ81を手動で変更させることが好ましい。
一方、ステップ314で対象オブジェクトの候補を列挙するときに、文字列に前方一致、後方一致、及び部分一致等の自由度を与えて検索する場合、対象オブジェクトの候補を一意化することが困難である。対象オブジェクトの候補を一意化することが困難である場合に、列挙された全ての対象オブジェクトの候補の各々について、次のステップ324以降の処理を実施してもよい。
次にCPU42は、ステップ324で、試験シナリオ81に記録された操作対象の対象オブジェクト、つまりマウス46Mによる操作対象の対象オブジェクトが、ステップ320で特定した対象オブジェクトの候補と一致するか否かを判断する。例えば、操作対象の対象オブジェクトが登録済みアイコン等である場合、CPU42は、ステップ324で否定判断し、ステップ326で、操作対象の対象オブジェクト(アイコン等の画像)を画像検索して検索結果の画像を全て列挙する。次にCPU42は、ステップ326で対象オブジェクトの候補を検索できたか否かを判断し、否定判断の場合にステップ318でGUI実装不適と判定し、本処理ルーチンを終了する。一方、CPU42は、ステップ328で肯定判断する場合、ステップ330の処理へ移行する。また、CPU42は、ステップ330で、対象オブジェクトの候補を一意化した後にステップ332へ処理を移行する。
ステップ324〜330の処理では、操作対象の対象オブジェクトが登録済みアイコンである場合、完全一致検索、及び閾値を用いた曖昧検索等の機能を有する画像検索プロセス70をCPU42が実行することによって対処オブジェクトの候補が列挙される。また、操作対象の対象オブジェクトが文字入力領域である場合には、長さ・高さなどが可変であるため、CPU42が矩形領域検索プロセス78を実行することによって矩形領域が列挙される。矩形領域の列挙は、公知技術であるハフ変換(Hough変換)等で直線を検出し、鉛直及び水平な直線に絞った後に、閉領域の形成をもって矩形領域を判断するなどの方法を用いることができる。
次にCPU42は、ステップ332で、イベントエミュレートプロセス75を実行することにより、実操作のエミュレーションが実行される(詳細は後述)。次に、CPU42は、試験シナリオ81が最終行に達したか否かを判定し、試験シナリオ81の最終行の場合、ステップ334で肯定判断し、ステップ336でGUIの実装に問題がなく、GUIの実装が適合されているとして操作を終了する。一方、試験シナリオ81が最終行に未到達の場合、CPU42は、ステップ334で否定判断し、ステップ300の処理に戻る。
なお、CPU42は、ステップ330で、全検索したもののうち、文字列及び画像との位置関係に優先順位を与えておき、優先順位の高い対象オブジェクトに絞り込む処理を実行する。
次に、ステップ330で考慮される優先順位の定義について説明する。文字列に対して配置されるオブジェクトの場所の頻度は、オブジェクトの種類に応じて異なる。このため、優先順位は、オブジェクトの種類毎に分類されて定義される。次に、オブジェクトの種類毎に分類されて定義される優先順位の定義の一例として、第1の定義〜第3の定義を説明する。
第1の定義として、チェックボックス(図7)の優先順位定義を説明する。チェックボックスの場合、文字列の左側にチェックボックスの画像が存在する場合が多いので、文字列の左側にある画像で最も距離が近いものを優先する。なお、「左側にある」ことを示す定義、及び「距離」の定義の一例は、後述する条件定義例において説明する。「左側にある」画像が1つも無い場合には、「右側にある」画像から同様に候補を探索する。また、「下側にある」画像、「上側にある」画像の順序で探索を継続してもよい。また、定義しておいた条件に該当する画像が1つもない場合、画面全体から、距離が一番近い画像を探索する。また、全体から探す場合の距離の定義の一例は、後述する条件定義例において説明する。
第2の定義として、テキストボックス(図10)の優先順位定義を説明する。
テキストボックスの場合、文字列の右側に画像が存在するが合いが多いため、右側にある画像のうち最も距離の近い画像を優先する。なお、「右側にある」ことや「距離」の定義はチェックボックスと同様に、「右側」、「下側」、「上側」、「左側」、及び「全体」の順序で探索する。
第3の定義として、その他のオブジェクトの優先順位定義を説明する。その他のオブジェクトは、第1の定義、及び第2の定義と同様に定義する。例えば、ラジオボタン(図11)は、チェックボックスと同様の条件で定義する。定義されたオブジェクトの種類が多いほど、多彩な操作を自動的に実行できる。なお、第1の定義〜第3の定義は、CPU42が位置関係検出プロセス74を実行する場合に位置関係検出プロセス74より呼び出して使用する。
優先順位の定義の一例として、第1の定義〜第3の定義を説明したが、第1の定義〜第3の定義に限定されるものではない。
次に、条件定義例について説明する。条件定義例は、座標条件の定義の一例である。条件定義例は、関係定義、及び距離定義を一例として含む。関係定義には、方向による判定、表とみなす判定、メッシュ座標判定、及びその他の判定を一例として含む。次に各々について説明する。
図23及び図24に、関係定義における方向による判定の一例を示す。図23に、y座標の重なりがある一例を示し、図24に、重なりがない一例を示す。図23及び図24に示す関係定義における方向による判定例では、例えば、関係定義として「左側にある」等の文字列を定義する。「左側にある」ことの定義として、文字列の左端のx座標が画像(アイコン)の右端のx座標に対して、等しい、大きい、及び少なくとも数ドットでかつy座標の重なりがある条件を定める一例がある。図23では、判定対象の第2オブジェクト172は、y座標で距離Y1が重複して被判定対象の第1オブジェクト170の「左側にある」ことを示す。図24では、判定対象の第2オブジェクト172は、y座標で距離Y2が離間されて被判定対象の第1オブジェクト170の「左側にある」ことを示す。
図25に、関係定義における表とみなす判定の一例を示す。図25では、x座標およびy座標の両方で重なりが成立したのみ、位置関係が合致するとみなす定義である。図25では、判定対象の第3オブジェクト178は、y座標で距離Y3が重複して行ラベル要素の第1オブジェクト174の「右側にある」、またx座標で距離X3が重複して列ラベル要素の第2オブジェクト176の「下側にある」ことを示す。
図26に、関係定義におけるメッシュ座標判定の一例を示す。図26は、GUIウィンドウをx方向に3個、y方向に2個に分割した場合を示す。GUIウィンドウを分割した各々の分割ウインドウには(行、列)の書式で位置が示されている。例えば、判定対象要素が「α」が、分割ウインドウ(0,0)内に存在すれば、条件は成立であることを示している。つまり、
判定対象要素α で 条件:(0,0) のとき 成立
判定対象要素α で 条件:(1,2) のとき 不成立
判定対象要素β で 条件:(1,2) のとき 成立
判定対象要素β で 条件:(0,2) のとき 不成立
を示す。
関係定義におけるその他の判定を一例は、候補文字列の占有面積を計算し、被判定対象のオブジェクトに対して最も大きい候補文字列を「関係成立」とする場合がある。なお、一番上、または一番左にあるもののみ「関係成立」とする条件を付与してもよい。
図27及び図28に、距離定義の一例を示す。図27は、方向による関係定義において、対象オブジェクトが「左側にある」場合の「距離」の定義例を示す。第1オブジェクト170の左端をx座標とし、第1オブジェクト170の上端と下端の中心点をy座標とした座標の点170Pを定める。また、判定対象の第2オブジェクト172の右端をx座標として、第2オブジェクト172の上端と下端の中心点をy座標とした座標の点172Pを定める。そして、点170Pと点172Pとのユークリッド距離Yg1と定める場合を示している。図28は、図16に示すステップ315の処理で対象オブジェクトの候補を絞る過程で、既定の関係定義を満たすものが存在しない場合に、列挙した全オブジェクトから探索する場合の距離の定義として、各中心点同士のユークリッド距離Yg2を示している。
次に、図29を参照して、図16に示すステップ332の処理を詳細に説明する。ステップ332の処理は、操作対象の対象オブジェクトが表示されるようにスクロール領域を移動(スクロール)させ、スクロール領域内の対象オブジェクトに対して、実操作のエミュレーションが実行される。図29に示す実操作のエミュレーションの実行は、CPU42が、イベントエミュレートプロセス75を実行することにより、達成される。
まず、対象オブジェクトが表示される位置の座標までの一枚画像上における画像幅及び画像高さから、スクロール領域の画像幅及び画像高さの減算を繰り返し、繰り返した回数が、スクロール回数として求められる。なお、画像連結処理で求めた重なりのピクセル数(ステップ312)を減算してもよい。
詳細には、CPU42は、図29に示すステップ340で、変数(Xwhole,Xscroll,Xorder)に値を代入する。変数Xwholeには、対象オブジェクトが表示される位置の座標までの一枚画像上における画像幅が代入される。変数Xscrollには、スクロール領域の画像幅が代入される。変数Xorderには、画像上におけるX軸方向のスクロール回数である演算の繰り返した回数(初期値「0」)が代入される。次に、CPU42は、変数Xwholeの値が変数Xscrollの値以下になるまで(ステップ342で肯定判断)、変数Xwholeの値から変数Xscrollを減算する処理(ステップ344)を繰り返し、X軸方向のスクロール回数(変数Xorderの値)を求める。なお、減算処理における変数Xwholeの最終値は、スクロール領域中の対象オブジェクトが表示されるX座標に対応するため、変数Xcoordに代入される(ステップ346)。
次に、CPU42は、ステップ348で、変数(Ywhole,Yscroll,Yorder)に値を代入する。変数Ywholeには、対象オブジェクトが表示される位置の座標までの一枚画像上における画像高さが代入される。変数Yscrollには、スクロール領域の画像高さが代入される。変数Yorderには、画像上におけるY軸方向のスクロール回数である演算の繰り返した回数(初期値「0」)が代入される。次に、CPU42は、変数Ywholeの値が変数Yscrollの値以下になるまで(ステップ350で肯定判断)、変数Ywholeの値から変数Yscrollを減算する処理(ステップ352)を繰り返し、Y軸方向のスクロール回数(変数Yorderの値)を求める。なお、減算処理における変数Ywholeの最終値は、スクロール領域中の対象オブジェクトが表示されるY座標に対応するため、変数Ycoordに代入される(ステップ354)。
次に、CPU42は、ステップ356で、対象オブジェクトの座標について、一枚画像の座標から、実際に画像が表示されるスクリーン座標に変換する。つまり、減算処理における変数Xwhole,Ywholeの最終値である変数Xcoord,Ycoordは、スクロール領域の左上隅を原点としたスクロール領域中の対象オブジェクトのX座標及びY座標である。従って、スクロール領域の左上隅のスクリーン座標に変数Xcoord,Ycoordを加算することで、実際の操作スクリーン座標を求めることができる。
次に、CPU42は、ステップ358で、操作対象の対象オブジェクトが表示される位置にスクロール領域を移動させる。つまり、CPU42は、図16に示すステップ312の処理と同様に、マウス操作すべき座標を求め、スクロールバーを移動させることにより、操作対象の対象オブジェクトが表示される位置にスクロール領域を移動させる。
次に、CPU42は、ステップ360で、ステップ356で求めたスクリーン座標に対して操作を行う。例えば、CPU42は、イベントエミュレートプロセス75の実行により、OS56のクリックイベント発生に連動するAPIなどを用いて操作を行う。つまり、CPU42は、APIにステップ356で求めたスクリーン座標をパラメータとして与え、スクリーン座標に対する操作を実行する。
なお、操作対象の対象オブジェクトに対する操作では、コンボボックス(図19)及びウィンドウメニュー等のように、操作対象の対象オブジェクトの種類により、新規の画面領域が発生する場合がある。操作対象の対象オブジェクトの種類に応じて新規の画面領域が発生する場合、新規の画面領域が発生する前後で、スクリーンショットを取得し、差分領域を求める。求めた差分領域に対して、CPU42は、ステップ306〜ステップ332を実行すればよい。例えば、複数のイベントの連続として記録されているシナリオについて、操作者が手動で連続イベントを単数の行に置き換えた場合に適用が可能である。この場合、連続処理を単行のシナリオを元に処理する機能を自動操作プログラム68が装備していることが好ましい。
図30に、図14に示す表示部20の画面に表示されるウィンドウ領域118内の一部のオブジェクトを含むウィンドウ領域190、シナリオを生成後に文字の大きさが変更されたオブジェクトを含むウィンドウ領域196を示す。表示部20の画面に表示されるウィンドウ領域190により、試験シナリオ81が記録され、文字の大きさが変更されたオブジェクトを含むウィンドウ領域196によりアプリケーションソフトウェア32が実行される。操作対象がボタンであるとき、試験シナリオ81には、ボタンに対応する文字列情報106が記憶されると共に、目印として、操作対象に向う方向194を含む画像120と文字列情報108が記録される。また、他の目印として、操作対象に向う方向192を含む文字列情報126も記録される。シナリオを生成後に文字の大きさが変更された場合、ボタン画像104の表示位置が移動される。しかし、マウス46Mによるユーザ操作の操作位置130を含む操作対象は、試験シナリオ81に記録された文字列情報106、画像120、文字列情報108、及び文字列情報126によって、ボタンを特定することができる。つまり、試験シナリオ81に目印として記録された画像120と文字列情報108から操作対象に向う方向194、及び文字列情報126から操作対象に向う方向192によって、操作対象を特定することができる。従って、試験シナリオ81を生成した後に、文字の大きさが変更されたアプリケーションソフトウェア32であっても、操作対象を特定することができ、試験シナリオ81に従ってユーザ操作を再現することができる。
以上説明したように、本実施形態では、アプリケーションソフトウェアによるGUI操作をシナリオに記録する場合、操作対象の対象オブジェクト及びユーザ操作を検出する。また、操作対象の対象オブジェクトに対して、周辺オブジェクト及び画面上における周辺オブジェクトの対象オブジェクトに対する位置関係を検出する。検出した、ユーザ操作、対象オブジェクト、周辺オブジェクト、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報を含む操作情報をシナリオに含めて生成し、試験シナリオ81に記録する。従って、試験シナリオ81を用いて、対象オブジェクト、ユーザの操作を示す情報、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報から対象オブジェクト及びユーザ操作を特定することができる。これによって、コンピュータにアプリケーションソフトウェアにおける操作をシナリオを用いて実行させる場合に、シナリオの生成後に、例えば文字の大きさが変更された場合であっても、対象オブジェクトの位置を特定できる。従って、例えばシナリオの一部が変更された場合であっても、対象オブジェクトの位置を特定でき、シナリオを用いて行う作業の効率を向上させることができる。
また、本実施形態では、オブジェクトを示す画像情報を、例えばアイコンとして予め記憶させておき、ユーザ操作時の操作位置を含む領域画像と登録済みのアイコンを比較することにより、対象オブジェクトを容易に特定することができる。
また、本実施形態では、オブジェクトとして画像上の文字列を用いているので、対象オブジェクトを容易に特定することができる。また、画面から取得する画像より、OCRなどの画像認識処理を実行することで、画像から文字列を容易に検出することができる。
また、本実施形態では、周辺オブジェクトから対象オブジェクトへ向かう方向を示す情報を位置関係を示す情報として検出し、シナリオを生成する。これにより、試験シナリオ81を用いて、操作の実行時における画像から、周辺オブジェクトより対象オブジェクトへ向かう方向を特定でき、対象オブジェクトを容易に特定することができる。
また、本実施形態では、対象オブジェクトに複数の周辺オブジェクトを関係づけることができる。対象オブジェクトと複数の周辺オブジェクトの各々との関係には、対象オブジェクトと周辺オブジェクトとの距離に応じた優先順位を示す情報が関連付けられる。例えば、対象オブジェクトに複数の周辺オブジェクトが検出されるときには周辺オブジェクトと対象オブジェクトとの距離に応じて優先順位を示す情報が、付与される。これにより、対象オブジェクトと周辺オブジェクトと距離関係に基づく優先順位に従って、早期に対象オブジェクトを特定することができる。
また、本実施形態では、ユーザの操作を示す情報、対象オブジェクト、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報をコンピュータにより検出することに代えて、入力部46により入力される情報を読み取ることによって情報を取得することができる。つまり、ユーザ操作、対象オブジェクト、周辺オブジェクトを示す情報、及び対象オブジェクトと周辺オブジェクトとの位置関係を示す情報の各々を示す情報を入力部46により入力される情報を読み取ってシナリオを生成することができる。このように、入力部46により入力される情報を読み取ることによって情報を取得することにより、検出する情報の自由度を増加させることができる。
また、本実施形態では、操作情報を記録したシナリオを読み取り、アプリケーションソフトウェアの実行時に、画面の画像情報を取得し、画像情報から対象オブジェクトの位置を特定し、シナリオに記録されたユーザ操作を実行する。シナリオに記録されたユーザ操作を実行するまでに、対象オブジェクトを特定することができ、シナリオ実行時の操作不適の状態を抑制することができる。
また、本実施形態では、ウィンドウにより画面上に操作対象の画像領域の一部が表示される場合、操作対象の画像領域を網羅するように複数の画像情報を取得し、取得した複数の画像情報を合成して一枚画像を示す一枚画像情報を生成する。これにより、対象オブジェクトがウインドウ外に存在し、不可視化されている状態であっても、操作対象の画像領域を網羅する一枚画像情報から対象オブジェクトの位置を特定することができる。
また、本実施形態では、対象オブジェクトの位置を特定する場合、ユーザ操作が可能な領域の画像内から対象オブジェクトの位置が特定できないとき、読み取ったシナリオがアプリケーションソフトウェアの実行に不適であると判定することができる。これによって、対象オブジェクトを特定する処理を継続することなく、シナリオ判定結果に基づき、シナリオ実行時の操作不適の状態を早期に発見でき、シナリオ実行時の操作遂行の長時間化を抑制することができる。
なお、CPU42により実行されるステップ300の処理は、コンピュータ40がシナリオ実行装置として動作する場合におけるシナリオ読み取り部の処理に対応する一例である。また、CPU42により実行されるステップ306〜312の処理は、コンピュータ40がシナリオ実行装置として動作する場合における取得部の処理に対応する一例である。さらに、CPU42により実行されるステップ314〜330の処理は、コンピュータ40がシナリオ実行装置として動作する場合における特定部の処理に対応する一例である。CPU42により実行されるステップ332の処理は、コンピュータ40がシナリオ実行装置として動作する場合における実行部の処理に対応する一例である。
(第2実施形態)
次に、第2実施形態を説明する。第1実施形態では、シナリオ装置10をコンピュータ40により実現し、コンピュータ40によるローカルマシンによってGUIによるユーザ操作を試験する場合の一例を説明した。第2実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア32の操作を、コンピュータ40によるローカルマシンによってGUIにより試験する場合の一例を説明する。第2実施形態は、アプリケーションソフトウェア32として、WEB(World Wide Web)アプリケーションプログラムを一例として、開示の技術を適用するものである。なお、第2実施形態は、第1実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
図31に、シナリオ装置10を、WEBサーバとして機能する外部コンピュータ404及びWEBクライアントとして機能するコンピュータ40を含むコンピュータシステム400で実現する一例を示す。WEBサーバとして機能する外部コンピュータ404は、CPU410、WEBサーバプログラム414を記憶するメモリ412、及びコンピュータネットワーク402に接続するためのインタフェースである通信部416を備えている。CPU410、メモリ412、及び通信部416は、バス418を介して互いに接続されている。なお、WEBサーバプログラム414は、シナリオ生成とシナリオ実行の対象となるGUIを使用するアプリケーションソフトウェア32に対応する。
また、WEBクライアントとして機能するコンピュータ40は、第1実施形態(図2)と同様に、CPU42、表示部44、入力部46、IO装置47、VRAM48、メモリ50、及び格納部52を備え、各々バス54を介して互いに接続されている。また、本実施形態では、コンピュータ40は、コンピュータネットワーク402に接続するためのインタフェースである通信部420を備えている。また、本実施形態では、格納部52には、WEBサーバプログラム414の実行により情報を授受または表示させるためのWEBブラウザプログラム422が含まれている。
本実施形態では、コンピュータ40において、WEBブラウザプログラム422の実行によって一連の操作が実行される。WEBブラウザプログラム422は、WEBサーバとして機能する外部コンピュータ404と交信した結果を表示させており、試験対象は外部コンピュータ404で実行されるWEBサーバプログラム414である。コンピュータ40の表示部44には、WEBブラウザプログラム422の実行によりWEBブラウザのウィンドウ領域が表示され、WEBブラウザのウィンドウ領域内にWEBサーバプログラム414による情報が表示される。
以上説明したように、第2実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア32の操作を、コンピュータ40によってGUIにより試験することができる。従って、シナリオを試験する装置及び実行対象のプログラムを、コンピュータ40の外部に設定することができる。これによって、第2実施形態では、第1実施形態の効果に加えて、対象とする装置及び実行対象のプログラムに対する適用場所についての自由度を向上させることができる効果も有する。
(第3実施形態)
次に、第3実施形態を説明する。第3実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア32の操作を、リモートデスクトップ(RDT)の機能を有するコンピュータ40により試験する場合の一例を説明する。なお、第3実施形態は、第1実施形態及び第2実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
図32に、シナリオ装置10を、RDT機能による遠隔操作対象の外部コンピュータ404及びコンピュータ40を含むコンピュータシステム400で実現する一例を示す。RDT機能による遠隔操作対象の外部コンピュータ404のメモリ412には、コンピュータ40より遠隔操作を可能とするRDTプログラム430が記憶されている。なお、外部コンピュータ404では、アプリケーションソフトウェア32が実行可能になっている。また、コンピュータ40の格納部52には、外部コンピュータ404を遠隔操作対象とするためのRDTプログラム432が格納されている。
本実施形態では、コンピュータネットワーク402を介して、コンピュータ40は、RDT機能を用いて、外部コンピュータ404を遠隔操作することができる。従って、コンピュータ40の表示部44に表示される画像により、外部コンピュータ404で実行されるアプリケーションソフトウェア32を試験することができる。
(第4実施形態)
次に、第4実施形態を説明する。第4実施形態では、外部コンピュータで実行されるアプリケーションソフトウェア32の操作を、コンピュータ40によるローカルマシンによってGUIにより試験する場合の一例を説明する。第4実施形態は、外部コンピュータ404の一例として、モバイル端末に、開示の技術を適用するものである。なお、第4実施形態は、第1実施形態乃至第3実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
図33に、シナリオ装置10を、モバイル端末として機能する外部コンピュータ404及び外部コンピュータ404を操作するコンピュータ40を含むコンピュータシステム401で実現する一例を示す。モバイル端末として機能する外部コンピュータ404とコンピュータ40とは、USB(Universal Serial Bus)ケーブル440によりUSB接続される。モバイル端末として機能する外部コンピュータ404のメモリ412には、コンピュータ40と通信を可能とする通信プログラム442が記憶されている。なお、モバイル端末として機能する外部コンピュータ404では、アプリケーションソフトウェア32が実行可能になっている。また、コンピュータ40の格納部52には、外部コンピュータ404と通信するための端末情報授受プログラム444が格納されている。
モバイル端末として機能する外部コンピュータ404の一例として、Androidと呼ばれるソフトウェアの実行環境などを搭載したアンドロイド端末を適用することができる。アンドロイド端末では、adb(Android Debug Bridge)接続を行った上で、MonkeyRunnerと呼ばれるソフトウェアを用いて、画面のキャプチャおよび端末操作が可能である。MonkeyRunnerはアンドロイド端末及びAndroidのエミュレータをAndroidのコードの外から操作するためのAPIの一例である。
本実施形態では、外部コンピュータ404側で、外部コンピュータ404の表示画像を取得し、外部コンピュータ404側へ操作を指示する処理が実行される。例えば、コンピュータ40の表示部44上のウィンドウ領域に画面を投影する処理も可能である。しかし、コンピュータ40の表示部44に画面を投影する処理に比べて、コンピュータ40側の処理負荷を抑制できるためである。つまり、外部コンピュータ404で、画面の画像(画面キャプチャイメージ)を直接取得し、画面操作APIを外部コンピュータ404側に直接送信する処理が実行される。
以上説明したように、第4実施形態では、モバイル端末として機能する外部コンピュータ404で実行されるアプリケーションソフトウェア32の操作を、コンピュータ40によってGUIにより試験することができる。従って、モバイル端末として機能する外部コンピュータ404においてシナリオを試験する場合に、コンピュータの処理負荷を軽減することができる。
なお、上記ではシナリオ装置10をコンピュータ40により実現する一例を説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
また、上記ではプログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されるものではない。例えば、開示の技術におけるプログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
ことを含む処理をコンピュータに実行させるためのシナリオ生成プログラム。
(付記2)
前記オブジェクトの画像を示す情報を予め記憶部に記憶させておき、
前記対象オブジェクトに対するユーザ操作時の操作位置を含む特定領域の画像を示す情報と、前記記憶部に記憶された前記オブジェクトの画像を示す情報との比較結果に基づいて、前記対象オブジェクトを特定する
付記1に記載のシナリオ生成プログラム。
(付記3)
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記1または付記2に記載のシナリオ生成プログラム。
(付記4)
前記位置関係を示す情報は、前記周辺オブジェクトから前記対象オブジェクトへ向かう方向を示す情報である
付記1〜付記3の何れか1項に記載のシナリオ生成プログラム。
(付記5)
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を検出し、検出した複数の前記周辺オブジェクトの各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けてシナリオを生成する
付記1〜付記4の何れか1項に記載のシナリオ生成プログラム。
(付記6)
前記情報の検出は、入力部により入力される情報を読み取ることによって情報を取得することを含む
付記1〜付記5の何れか1項に記載のシナリオ生成プログラム。
(付記7)
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
ことを含む処理をコンピュータに実行させるためのシナリオ実行プログラム。
(付記8)
前記ユーザ操作が可能な領域の画像を示す情報として、前記アプリケーションソフトウェアの実行時における画面上の表示領域の画像を示す情報を複数取得し、取得した複数の画像を示す情報に基づいて、前記ユーザ操作が可能なユーザ操作領域の一枚画像を示す情報を作成し、
作成した前記一枚画像を示す情報に基づいて前記対象オブジェクトの位置を特定する
付記7に記載のシナリオ実行プログラム。
(付記9)
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記7または付記8に記載のシナリオ実行プログラム。
(付記10)
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を示す情報の各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けて生成されたシナリオを読み取り、
前記読み取った前記優先順位を示す情報に基づいて、前記対象オブジェクトの位置を特定する
付記7〜付記9の何れか1項に記載のシナリオ実行プログラム。
(付記11)
前記ユーザ操作が可能な領域の画像を示す情報から前記対象オブジェクトの位置を特定できないとき、前記読み取ったシナリオが前記アプリケーションソフトウェアの実行に不適であると判定する
付記7〜付記9の何れか1項に記載のシナリオ実行プログラム。
(付記12)
コンピュータが、
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
ことを含むシナリオ生成方法。
(付記13)
前記オブジェクトの画像を示す情報を予め記憶部に記憶させておき、
前記対象オブジェクトに対するユーザ操作時の操作位置を含む特定領域の画像を示す情報と、前記記憶部に記憶された前記オブジェクトの画像を示す情報との比較結果に基づいて、前記対象オブジェクトを特定する
付記12に記載のシナリオ生成方法。
(付記14)
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記12または付記13に記載のシナリオ生成方法。
(付記15)
前記位置関係を示す情報は、前記周辺オブジェクトから前記対象オブジェクトへ向かう方向を示す情報である
付記12〜付記14の何れか1項に記載のシナリオ生成方法。
(付記16)
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を検出し、検出した複数の前記周辺オブジェクトの各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けてシナリオを生成する
付記12〜付記15の何れか1項に記載のシナリオ生成方法。
(付記17)
前記情報の検出は、入力部により入力される情報を読み取ることによって情報を取得することを含む
付記12〜付記16の何れか1項に記載のシナリオ生成方法。
(付記18)
コンピュータが、
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
ことを含むシナリオ実行方法。
(付記19)
前記ユーザ操作が可能な領域の画像を示す情報として、前記アプリケーションソフトウェアの実行時における画面上の表示領域の画像を示す情報を複数取得し、取得した複数の画像を示す情報に基づいて、前記ユーザ操作が可能なユーザ操作領域の一枚画像を示す情報を作成し、
作成した前記一枚画像を示す情報に基づいて前記対象オブジェクトの位置を特定する
付記18に記載のシナリオ実行方法。
(付記20)
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記18または付記19に記載のシナリオ実行方法。
(付記21)
前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を示す情報の各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けて生成されたシナリオを読み取り、
前記読み取った前記優先順位を示す情報に基づいて、前記対象オブジェクトの位置を特定する
付記18〜付記20の何れか1項に記載のシナリオ実行方法。
(付記22)
前記ユーザ操作が可能な領域の画像を示す情報から前記対象オブジェクトの位置を特定できないとき、前記読み取ったシナリオが前記アプリケーションソフトウェアの実行に不適であると判定する
付記18〜付記21の何れか1項に記載のシナリオ実行方法。
(付記23)
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する第1検出部と、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出する第2検出部と、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する生成部と、
を備えたシナリオ生成装置。
(付記24)
前記オブジェクトの画像を示す情報を記憶する記憶部をさらに備え、
前記第1検出部は、前記対象オブジェクトに対するユーザ操作時の操作位置を含む特定領域の画像を示す情報と、前記記憶部に記憶された前記オブジェクトの画像を示す情報との比較結果に基づいて、前記対象オブジェクトを特定する
付記23に記載のシナリオ生成装置。
(付記25)
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記23または付記24に記載のシナリオ生成装置。
(付記26)
前記位置関係を示す情報は、前記周辺オブジェクトから前記対象オブジェクトへ向かう方向を示す情報である
付記23〜付記25の何れか1項に記載のシナリオ生成装置。
(付記27)
前記第2検出部は、前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を検出し、前記対象オブジェクトと検出した複数の前記周辺オブジェクトの各々との距離に応じた優先順位を求め、
前記生成部は、複数の前記周辺オブジェクトの各々に、前記優先順位を示す情報を関連付けてシナリオを生成する
付記23〜付記26の何れか1項に記載のシナリオ生成装置。
(付記28)
前記第1検出部及び第2検出部の少なくとも一方は、入力部により入力される情報を読み取ることによって情報を取得する
付記1〜付記5の何れか1項に記載のシナリオ生成装置。
(付記29)
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取るシナリオ読取部と、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得する取得部と、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する特定部と、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する実行部と
を備えたシナリオ実行装置。
(付記30)
前記取得部は、前記ユーザ操作が可能な領域の画像を示す情報として、前記アプリケーションソフトウェアの実行時における画面上の表示領域の画像を示す情報を複数取得し、取得した複数の画像を示す情報に基づいて、前記ユーザ操作が可能なユーザ操作領域の一枚画像を示す情報を作成し、
前記特定部は、作成した前記一枚画像を示す情報に基づいて前記対象オブジェクトの位置を特定する
付記29に記載のシナリオ実行装置。
(付記31)
前記オブジェクトのうちの少なくとも一部は、文字列を示す情報である
付記29または付記30に記載のシナリオ実行装置。
(付記32)
前記シナリオ読取部は、前記対象オブジェクトと複数の前記周辺オブジェクトとの位置関係を示す情報の各々に、前記対象オブジェクトと前記周辺オブジェクトとの距離に応じた優先順位を示す情報を関連付けて生成されたシナリオを読み取り、
前記特定部は、前記読み取った前記優先順位を示す情報に基づいて、前記対象オブジェクトの位置を特定する
付記29〜付記31の何れか1項に記載のシナリオ実行装置。
(付記33)
前記特定部は、前記ユーザ操作が可能な領域の画像を示す情報から前記対象オブジェクトの位置を特定できないとき、前記読み取ったシナリオが前記アプリケーションソフトウェアの実行に不適であると判定する
付記29〜付記31の何れか1項に記載のシナリオ実行装置。
(付記34)
コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する第1検出部と、
前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出する第2検出部と、
前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する生成部と、
を備えたシナリオ生成装置と、
前記アプリケーションソフトウェアにより画面に表示される操作対象の対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取るシナリオ読取部と、
前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得する取得部と、
読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する特定部と、
前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する実行部と
を備えたシナリオ実行装置と
を含むシナリオ装置。
10 シナリオ装置
10A シナリオ生成装置
10B シナリオ実行装置
12 CPU
14 メモリ
18 入力部
20 表示部
22 操作記録部
24 自動操作部
26 ユーザインタフェースアプリケーション部
28 操作記録プログラム
30 自動操作プログラム
32 アプリケーションソフトウェア
34 ファイル
40 コンピュータ
44 表示部
46 入力部
46K キーボード
46M マウス
49 記録媒体
50 メモリ
52 格納部
58 GUIアプリケーションプログラム
60 操作記録プログラム
68 自動操作プログラム
80 ファイル
81 試験シナリオ

Claims (12)

  1. コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の操作位置の画像に含まれる文字列を含む対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
    前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する文字列又は画像である周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
    前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
    ことを含む処理をコンピュータに実行させるためのシナリオ生成プログラム。
  2. 前記情報を検出することでは、前記コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、予め定められた方向の優先順位に従って探索された操作対象の前記対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する
    請求項1に記載のシナリオ生成プログラム。
  3. コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の操作位置の画像に含まれる文字列を含む対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある文字列又は画像である周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
    前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
    読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
    前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
    ことを含む処理をコンピュータに実行させるためのシナリオ実行プログラム。
  4. 前記位置を特定することでは、読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、予め定められた位置関係の優先順位に従って、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する
    請求項3に記載のシナリオ実行プログラム。
  5. コンピュータが、
    コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の操作位置の画像に含まれる文字列を含む対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出し、
    前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する文字列又は画像である周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出し、
    前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する
    ことを含むシナリオ生成方法。
  6. 前記情報を検出することでは、前記コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、予め定められた方向の優先順位に従って探索された操作対象の前記対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する
    請求項5に記載のシナリオ生成方法。
  7. コンピュータが、
    コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の操作位置の画像に含まれる文字列を含む対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある文字列又は画像である周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取り、
    前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得し、
    読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定し、
    前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する
    ことを含むシナリオ実行方法。
  8. 読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、予め定められた位置関係の優先順位に従って、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する
    請求項7に記載のシナリオ実行方法。
  9. コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、操作対象の操作位置の画像に含まれる文字列を含む対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する第1検出部と、
    前記画面に表示されるオブジェクトの中から、前記対象オブジェクト周辺に位置する文字列又は画像である周辺オブジェクトを示す情報、及び前記画面上における前記対象オブジェクトと前記周辺オブジェクトとの位置関係を検出する第2検出部と、
    前記ユーザ操作を示す情報、前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、及び前記位置関係を示す情報を関連付けてシナリオを生成する生成部と、
    を備えたシナリオ生成装置。
  10. 前記第1検出部は、コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示されるオブジェクトに基づいて、予め定められた方向の優先順位に従って探索された操作対象の前記対象オブジェクトを示す情報、及び前記対象オブジェクトに対するユーザ操作を示す情報を検出する
    請求項9に記載のシナリオ生成装置。
  11. コンピュータ上で動作するアプリケーションソフトウェアにより画面に表示される操作対象の操作位置の画像に含まれる文字列を含む対象オブジェクトを示す情報、前記対象オブジェクトに対するユーザ操作を示す情報、前記対象オブジェクト周辺にある文字列又は画像である周辺オブジェクトを示す情報、及び前記画面上における前記周辺オブジェクトの前記対象オブジェクトに対する位置関係を示す情報を含むシナリオを読み取るシナリオ読取部と、
    前記アプリケーションソフトウェアの実行時に、前記画面上で前記ユーザ操作が可能な領域の画像を示す情報を取得する取得部と、
    読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する特定部と、
    前記シナリオに含まれる前記対象オブジェクトに対するユーザ操作を示す情報に基づいて、前記特定した位置の前記対象オブジェクトに対する操作を実行する実行部と
    を備えたシナリオ実行装置。
  12. 前記特定部は、読み取った前記シナリオに含まれる前記対象オブジェクトを示す情報、前記周辺オブジェクトを示す情報、前記位置関係を示す情報、及び前記ユーザ操作が可能な領域の画像を示す情報に基づいて、予め定められた位置関係の優先順位に従って、前記ユーザ操作が可能な領域内における前記対象オブジェクトの位置を特定する
    請求項11に記載のシナリオ実行装置。
JP2013178417A 2013-08-29 2013-08-29 シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置 Active JP6326742B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013178417A JP6326742B2 (ja) 2013-08-29 2013-08-29 シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置
US14/456,048 US10222949B2 (en) 2013-08-29 2014-08-11 Scenario generation method in which various data are associated with each other, scenario execution method in which various data are associated with each other, scenario generation device, and scenario execution device
US16/246,934 US20190146649A1 (en) 2013-08-29 2019-01-14 Scenario generation method in which various data are associated with each other, scenario execution method in which various data are associated with each other, scenario generation device, and scenario execution device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013178417A JP6326742B2 (ja) 2013-08-29 2013-08-29 シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置

Publications (2)

Publication Number Publication Date
JP2015049520A JP2015049520A (ja) 2015-03-16
JP6326742B2 true JP6326742B2 (ja) 2018-05-23

Family

ID=52585056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013178417A Active JP6326742B2 (ja) 2013-08-29 2013-08-29 シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置

Country Status (2)

Country Link
US (2) US10222949B2 (ja)
JP (1) JP6326742B2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102172354B1 (ko) * 2013-06-28 2020-10-30 삼성전자주식회사 이미지 파일 생성 방법 및 장치
JP6561775B2 (ja) * 2015-10-29 2019-08-21 富士通株式会社 操作記録再生プログラム、操作再生プログラム、操作再生方法及び操作記録再生装置
JP6528646B2 (ja) * 2015-10-29 2019-06-12 富士通株式会社 操作再生プログラム、操作再生装置及び操作再生方法
US9811448B2 (en) * 2015-12-18 2017-11-07 Fujitsu Limited Event-driven software testing
JP6355768B1 (ja) * 2017-01-17 2018-07-11 東日本電信電話株式会社 操作自動化装置
US20190126941A1 (en) * 2017-10-31 2019-05-02 Wipro Limited Method and system of stitching frames to assist driver of a vehicle
US11442591B2 (en) * 2018-04-09 2022-09-13 Lockheed Martin Corporation System, method, computer readable medium, and viewer-interface for prioritized selection of mutually occluding objects in a virtual environment
KR102005718B1 (ko) * 2018-08-14 2019-07-31 알서포트 주식회사 상황정보 병기형 실사용 기반 모바일단말 스크립트 생성 방법
JP6686093B2 (ja) * 2018-09-26 2020-04-22 株式会社トヨタシステムズ 画面対応付け方法、情報処理装置、操作再現システム及び画面対応付けプログラム
CN109213668B (zh) * 2018-10-24 2022-02-11 北京赢销通软件技术有限公司 操作记录方法、装置及终端
JP7367917B2 (ja) * 2019-05-13 2023-10-24 株式会社Cinnon 情報処理システム及びプログラム
WO2021014256A1 (ja) * 2019-07-19 2021-01-28 株式会社半導体エネルギー研究所 オブジェクトをテキストに変換する方法およびシステム
CN110457219B (zh) * 2019-08-08 2021-06-22 中国建设银行股份有限公司 一种测试脚本录制时时间选择的方法和装置
JP7092364B2 (ja) * 2019-08-19 2022-06-28 Necフィールディング株式会社 業務の自動実行システムおよび方法
JP6802893B1 (ja) * 2019-09-11 2020-12-23 エヌ・ティ・ティ・アドバンステクノロジ株式会社 シナリオ実行装置、シナリオ実行方法及びプログラム
US10885423B1 (en) 2019-10-14 2021-01-05 UiPath Inc. Systems and methods of activity target selection for robotic process automation
WO2021076204A1 (en) * 2019-10-14 2021-04-22 UiPath Inc. Providing image and text data for automatic target selection in robotic process automation
US11249729B2 (en) * 2019-10-14 2022-02-15 UiPath Inc. Providing image and text data for automatic target selection in robotic process automation
JP2021071844A (ja) * 2019-10-30 2021-05-06 エヌ・ティ・ティ・アドバンステクノロジ株式会社 画像処理装置、画像処理方法及びプログラム
US11789601B2 (en) * 2019-11-05 2023-10-17 Dell Products L.P. System and method for identifying user intent using four-dimensional coordinates of an input pointer
US11321409B2 (en) 2020-01-21 2022-05-03 International Business Machines Corporation Performing a search based on position information
JPWO2022107203A1 (ja) * 2020-11-17 2022-05-27
WO2023238356A1 (ja) * 2022-06-09 2023-12-14 日本電信電話株式会社 生成装置、生成方法及び生成プログラム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7712074B2 (en) * 2002-11-21 2010-05-04 Bing Ren Automating interactions with software user interfaces
US7665068B2 (en) * 2003-12-12 2010-02-16 Oracle International Corporation Methods and systems for testing software applications
JP4460396B2 (ja) 2004-09-03 2010-05-12 日本電信電話株式会社 スクリプト生成装置、スクリプト生成方法およびスクリプト生成プログラム
WO2007055610A1 (en) * 2005-11-11 2007-05-18 Intel Corporation Iterative search with data accumulation in a cognitive control framework
JP2009031952A (ja) * 2007-07-25 2009-02-12 Tokai Television Broadcasting Co Ltd 情報提供システムおよび情報提供方法
JP4381436B2 (ja) * 2007-07-27 2009-12-09 株式会社東芝 シナリオ生成装置およびシナリオ生成プログラム
US20090089320A1 (en) * 2007-09-28 2009-04-02 Dov Tendler Capturing application state information for simulation in managed environments
JP5026451B2 (ja) 2009-02-26 2012-09-12 日本電信電話株式会社 シナリオ編集方法、その装置及びプログラム
JP2010231594A (ja) * 2009-03-27 2010-10-14 Fujitsu Ltd 試験プログラム及び試験装置
JP5046055B2 (ja) 2009-05-25 2012-10-10 兵庫県 地図情報処理装置、ナビゲーションシステム、およびプログラム
JP2011022705A (ja) 2009-07-14 2011-02-03 Hitachi Ltd 証跡管理方法、システム、及びプログラム
US9098313B2 (en) * 2009-08-24 2015-08-04 Kryon Systems Ltd. Recording display-independent computerized guidance
WO2011073759A1 (en) * 2009-12-01 2011-06-23 Cinnober Financial Technology Ab Methods and systems for automatic testing of a graphical user interface
US8875103B2 (en) * 2010-05-12 2014-10-28 Ca, Inc. Method of testing multiple language versions of a software system using one test script
JP2012018583A (ja) * 2010-07-08 2012-01-26 Canon Inc ソフトウェア開発支援装置及びその処理方法
JP5622647B2 (ja) 2011-04-11 2014-11-12 株式会社東芝 シナリオ生成装置およびシナリオ生成プログラム
US8793578B2 (en) * 2011-07-11 2014-07-29 International Business Machines Corporation Automating execution of arbitrary graphical interface applications
US9448908B2 (en) * 2012-09-10 2016-09-20 Applitools Ltd. System and method for model based session management

Also Published As

Publication number Publication date
US10222949B2 (en) 2019-03-05
JP2015049520A (ja) 2015-03-16
US20150067498A1 (en) 2015-03-05
US20190146649A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
JP6326742B2 (ja) シナリオ生成プログラム、シナリオ実行プログラム、シナリオ生成方法、シナリオ実行方法、シナリオ生成装置、及びシナリオ実行装置
US9703462B2 (en) Display-independent recognition of graphical user interface control
WO2019144680A1 (zh) 自动化测试方法及装置、存储介质、电子设备
US9317257B2 (en) Folded views in development environment
US9098313B2 (en) Recording display-independent computerized guidance
US20160350137A1 (en) Guide file creation program
JP2005032041A (ja) リンク先コンテンツの連続閲覧支援装置、連続閲覧支援方法、ポップアップウィンドウの表示制御方法および消去制御方法
KR20120006434A (ko) 화상 처리 장치, 화상 처리 방법 및 컴퓨터 프로그램
JP2013246633A (ja) 電子機器、手書き文書作成方法、及び手書き文書作成プログラム
JP6220079B2 (ja) 表示制御装置、表示制御方法および表示制御プログラム
JP2014194747A (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
JP6206202B2 (ja) 情報処理装置及び情報処理プログラム
JP2012103786A (ja) テスト支援装置、制御方法、及びプログラム
US20130346893A1 (en) Electronic device and method for editing document using the electronic device
JP5988450B2 (ja) ノードを表示する方法、並びに、ノードを表示するためのコンピュータ及びそのコンピュータ・プログラム
JP2017215756A (ja) 筆記システム、情報処理装置、プログラム
CN108369486B (zh) 通用涂墨支持
JP6237135B2 (ja) 情報処理装置及び情報処理プログラム
JP4693167B2 (ja) 帳票検索装置、帳票検索方法、プログラム及びコンピュータ読み取り可能な記憶媒体
US11755195B2 (en) Ink data generation apparatus, method, and program
TWI437450B (zh) 視窗選擇式即時翻譯系統及其方法
WO2011145246A1 (ja) 情報端末装置、入力処理方法及び入力処理プログラム
JP2010026925A (ja) 情報処理装置、画面制御方法、およびプログラム
CN113297519A (zh) 评论数据的生成方法、装置、电子设备及计算机存储介质
CN117251145A (zh) 一种ui界面元素定位方法、系统、装置及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170321

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170418

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171031

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180402

R150 Certificate of patent or registration of utility model

Ref document number: 6326742

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150