(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-06-12
(45)【発行日】2024-06-20
(54)【発明の名称】プログラム、情報処理方法、及びモデル生成方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20240613BHJP
G06F 11/34 20060101ALI20240613BHJP
【FI】
G06F11/36 136
G06F11/34 138
(21)【出願番号】P 2023009209
(22)【出願日】2023-01-25
【審査請求日】2023-01-26
(73)【特許権者】
【識別番号】504050275
【氏名又は名称】株式会社 ミックウェア
(72)【発明者】
【氏名】坂部 由典
【審査官】円子 英紀
(56)【参考文献】
【文献】特開2012-248097(JP,A)
【文献】特開2015-005241(JP,A)
【文献】特開平08-305729(JP,A)
【文献】特開2021-039510(JP,A)
【文献】中国特許出願公開第115410572(CN,A)
【文献】国際公開第2022/177345(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06F 11/28-11/36
(57)【特許請求の範囲】
【請求項1】
GUI(Graphical User Interface)画面の表示を伴う対象プログラムを実行し、
前記対象プログラムの実行により表示されるGUI画面に含まれる操作可能なオブジェク
トを、
前記GUI画面の画像を入力した場合に前記GUI画面に含まれるオブジェクトに関する情報を出力する学習モデルを用いて検知し、
前記学習モデルは、前記GUI画面の画像と、前記GUI画面に含まれるオブジェクトに関する情報とを含む訓練データを用いて生成され、異なるグラフィックデザインであっても、同じ処理命令が対応付けられているオブジェクトを同じ種別のオブジェクトとして学習するモデルであり、
検知したオブジェクトが操作された場合に表示される画面の遷移に関するデータを取得し、
遷移前の前記GUI画面と、該GUI画面中のオブジェクトの種別と、該オブジェクトが操作された場合の画面の遷移に関するデータとを対応付けて、前記対象プログラムの画面遷移データを作成する
処理をコンピュータに実行させるプログラム。
【請求項2】
前記オブジェクトに対して優先順位が割り当てられており、
前記GUI画面中に複数のオブジェクトを検知した場合、優先順位が高いオブジェクトから順に、前記オブジェクトが操作された場合の画面の遷移に関するデータを取得して画面遷移データを作成する
処理を前記コンピュータに実行させる請求項1に記載のプログラム。
【請求項3】
前記GUI画面は、複数の階層を有する階層構造で構成されており、
前記優先順位は、前記GUI画面の階層の深さ方向に画面を遷移して各画面の画面遷移データを作成するか、前記階層の深さ別に同一深さの階層の画面まで遷移して各画面の画面遷移データを作成するかに応じて各オブジェクトに割り当てられている
請求項2に記載のプログラム。
【請求項4】
GUI画面の表示を伴う対象プログラムの実行により表示されるGUI画面と、前記GUI画面に含まれる操作可能なオブジェクトを、前記GUI画面の画像を入力した場合に前記GUI画面に含まれるオブジェクトに関する情報を出力する学習モデルを用いて検知し、
前記学習モデルは、前記GUI画面の画像と、前記GUI画面に含まれるオブジェクトに関する情報とを含む訓練データを用いて生成され、異なるグラフィックデザインであっても、同じ処理命令が対応付けられているオブジェクトを同じ種別のオブジェクトとして学習するモデルであり、
前記オブジェクトが操作された場合に表示される画面の遷移に関するデータとが対応付けられた画面遷移データを取得し、
前記対象プログラム又は前記対象プログラムの実行環境が更新された場合に、更新された前記対象プログラムの実行により表示されるGUI画面中のオブジェクトの種別を検知し、
検知したオブジェクトが操作された場合に表示される画面の遷移に関するデータを取得し、
遷移前の前記GUI画面と、前記オブジェクトの種別とに対応する画面の遷移に関するデータを前記画面遷移データから特定し、
取得した前記画面の遷移に関するデータと、特定した前記画面の遷移に関するデータとを比較し、
比較結果を出力する
処理をコンピュータに実行させるプログラム。
【請求項5】
取得した前記画面の遷移に関するデータと、特定した前記画面の遷移に関するデータとの類似度合を算出し、
算出した類似度合が所定値未満である場合に、遷移前の前記GUI画面と前記オブジェクトの種別とを出力する
処理を前記コンピュータに実行させる請求項4に記載のプログラム。
【請求項6】
GUI画面の表示を伴う対象プログラムを実行し、
前記対象プログラムの実行により表示されるGUI画面に含まれる操作可能なオブジェクトを、前記GUI画面の画像を入力した場合に前記GUI画面に含まれるオブジェクトに関する情報を出力する学習モデルを用いて検知し、
前記学習モデルは、前記GUI画面の画像と、前記GUI画面に含まれるオブジェクトに関する情報とを含む訓練データを用いて生成され、異なるグラフィックデザインであっても、同じ処理命令が対応付けられているオブジェクトを同じ種別のオブジェクトとして学習するモデルであり、
検知したオブジェクトが操作された場合に表示される画面の遷移に関するデータを取得し、
遷移前の前記GUI画面と、該GUI画面中のオブジェクトの種別と、該オブジェクトが操作された場合の画面の遷移に関するデータとを対応付けて、前記対象プログラムの画面遷移データを作成する
処理をコンピュータが実行する情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報処理方法、及びモデル生成方法に関する。
【背景技術】
【0002】
ステータスをグラフィック表示し、グラフィック上又は物理ボタンで操作を受け付けるGUI(Graphical User Interface)を含むUIが多様な分野の機器で利用されている。このような機器では、入力コマンドに応じて複数の画面を遷移表示するためのソフトウェアの動作検証が行われる。検証処理では、一般的に、機器の仕様書を元にテスト設計が行われてテストスクリプトが作成され、テストスクリプトの内容に従って動作検証が行われる。テストスクリプトは、各画面について、入力可能なコマンドと、各コマンドが入力された場合の遷移後の画面とを含んでおり、各コマンドを入力した場合に期待値となる遷移後の画面をキャプチャすることによって作成される。このようなテストスクリプトは、画面中のボタン又はアイコン等を人手で操作することによって作成されるので多大な工数を必要とする。また近年では、ソフトウェアのバージョンアップのスピードが速く、更に、オープンソースのOS(Operating System)を採用している機器では、機器の仕様に変更がなくてもOSがバージョンアップされた場合には動作検証を行う必要があり、開発されたソフトウェアの検証処理が追い付かないという状況が生じる。
【0003】
そこで、特許文献1では、人手をかけずに画面遷移を検証するための情報を生成する技術が開示されている。特許文献1に開示の技術では、対象装置のディスプレイに表示された画面の画像データから、画面に含まれるボタンを抽出し、抽出したボタンの操作により生じる画面遷移の前後の画像データと、操作したボタンに関するデータとを含む画面遷移データを記録することにより、画面遷移図を自動で生成することができる。また、特許文献2では、設計図書を読み込んでテストシナリオを自動生成し、シナリオ生成時に出力されるエラー情報を用いて設計図書を修正し、修正した設計図書によって再度テストシナリオを自動生成することにより、自動生成するテストシナリオの精度を向上させる技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2021-15476号公報
【文献】特開2020-204847号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1では、円や矩形の枠で囲まれた領域、周囲の領域と色彩が異なる領域等を、画面に含まれるボタンとして抽出することが開示されている。しかし、ボタンには、機器の操作性を向上させるために意匠性の高いグラフィックが使用され、また、同じ機能(処理命令)が対応付けられたボタンであっても、異なるソフトウェアでは異なる意匠が用いられる場合がある。従って、種々のソフトウェアを検証対象とする場合、それぞれのソフトウェアの実行によって表示される画面中のボタンを精度良く抽出して画面遷移データを作成できる技術が要望されている。
【0006】
1つの側面において、対象プログラムの画面遷移データを適宜自動作成し、迅速なテスト実施を実現することが可能なプログラム等を提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示の一実施形態のプログラムは、GUI画面の表示を伴う対象プログラムを実行し、前記対象プログラムの実行により表示されるGUI画面に含まれる操作可能なオブジェクトの種別を検知し、検知したオブジェクトが操作された場合に表示される画面の遷移に関するデータを取得し、遷移前の前記GUI画面と、該GUI画面中のオブジェクトの種別と、該オブジェクトが操作された場合の画面の遷移に関するデータとを対応付けて、前記対象プログラムの画面遷移データを作成する処理をコンピュータに実行させる。
【発明の効果】
【0008】
1つの側面によれば、対象プログラムの画面遷移データを適宜自動作成し、迅速なテスト実施を実現することができる。
【図面の簡単な説明】
【0009】
【
図1】情報処理装置の構成例を示すブロック図である。
【
図2】オブジェクトDB及び画面遷移DBのレコードレイアウトの一例を示す説明図である。
【
図4】学習モデルの生成処理手順の一例を示すフローチャートである。
【
図5】画面遷移DBの作成処理手順の一例を示すフローチャートである。
【
図6】画面遷移DBの作成処理手順の一例を示すフローチャートである。
【
図7】画面遷移DBの作成途中の状態を示す説明図である。
【
図8】画面遷移DBの作成途中の状態を示す説明図である。
【
図9】対象プログラムの検証処理手順の一例を示すフローチャートである。
【
図11】実施形態2の情報処理装置の構成例を示すブロック図である。
【
図12】実施形態2の画面遷移DBのレコードレイアウトの一例を示す説明図である。
【
図13】実施形態2の画面遷移DBの作成処理手順の一例を示すフローチャートである。
【
図14】実施形態2の画面遷移DBの作成処理手順の一例を示すフローチャートである。
【
図15】実施形態3の画面遷移DBのレコードレイアウトの一例を示す説明図である。
【
図16】実施形態3の画面遷移DBの作成処理手順の一例を示すフローチャートである。
【
図17】実施形態3の画面遷移DBの作成処理手順の一例を示すフローチャートである。
【
図18】オブジェクトDBの変形例を示す説明図である。
【発明を実施するための形態】
【0010】
以下に、本開示のプログラム、情報処理方法、及びモデル生成方法について、その実施形態を示す図面を参照して具体的に説明する。
【0011】
(実施形態1)
本実施形態では、開発対象のGUIプログラムの動作検証を行う情報処理装置について説明する。検証対象のGUIプログラム(以下では対象プログラムと称する)は、入力コマンドに応じて複数のGUI画面を遷移表示するためのソフトウェアであり、GUI画面の表示を伴うプログラムであればどのようなプログラムでもよい。例えば、パーソナルコンピュータ、スマートフォン、タブレット端末、ゲーム端末等、ディスプレイを有する機器又はディスプレイの接続が可能な機器で動作するアプリケーションプログラムを検証対象とすることができる。本実施形態におけるGUI画面は、複数の階層を有する階層構造で構成されており、GUI画面中のオブジェクト(アイコン、ボタン等)を操作することにより、オブジェクトにリンクされたGUI画面(1つ下層のGUI画面)に画面遷移する。また、各GUI画面には、遷移前の画面に戻るためのReturnオブジェクトが設けられており、Returnオブジェクトを操作することにより、リンク元のGUI画面(1つ上層のGUI画面)に画面遷移する。
【0012】
図1は情報処理装置の構成例を示すブロック図である。情報処理装置10は、種々の情報処理及び情報の送受信が可能な装置であり、サーバコンピュータ又はパーソナルコンピュータ等である。情報処理装置10は例えば、開発対象のGUIプログラムが搭載される機器の機器メーカにて管理される。機器メーカは、開発者によって対象プログラムが更新された場合に、情報処理装置10によって対象プログラムの動作検証を行う。また、機器がオープンソースのOSを採用している場合、OSがバージョンアップされた場合にも、情報処理装置10によって対象プログラムの動作検証が行われる。なお、情報処理装置10は、開発者側の装置であってもよく、開発者側で対象プログラムの動作検証が行われてもよい。
【0013】
情報処理装置10は、制御部11、記憶部12、通信部13、入力部14、表示部15、読み取り部16等を含み、これらの各部はバスを介して相互に接続されている。制御部11は、CPU(Central Processing Unit)、MPU(Micro-Processing Unit)、GPU(Graphics Processing Unit)、又はAIチップ(AI用半導体)等の1又は複数のプロセッサを含む。制御部11は、内蔵するROM(Read Only Memory)及びRAM(Random Access Memory)等のメモリを用い、記憶部12に記憶してあるプログラムP等を適宜実行することにより、情報処理装置10が行うべき種々の情報処理及び制御処理を実行する。制御部11は、プロセッサ、メモリ、通信デバイス等を集積した1つのハードウェア(SoC:System On a Chip)として構成されていてもよい。
【0014】
記憶部12は、ハードディスク、SSD(Solid State Drive)、フラッシュメモリ等を含む。記憶部12は、制御部11が実行するプログラムP(プログラム製品)及びプログラムPの実行に必要な各種のデータを記憶している。また記憶部12は、例えば機械学習によって訓練データを学習済みの学習モデルMを記憶している。学習モデルMは、GUI画面が入力された場合に、GUI画面に含まれる操作可能なオブジェクトを検出するように学習された学習済みモデルである。学習モデルMは、人工知能ソフトウェアを構成するプログラムモジュールとしての利用が想定される。学習モデルMは、入力値に対して所定の演算を行い、演算結果を出力するものであり、記憶部12には、この演算を規定する関数の係数や閾値等のデータが学習モデルMとして記憶される。
【0015】
また記憶部12は、画面遷移作成プログラムP1及び画面遷移検証プログラムP2を記憶している。画面遷移作成プログラムP1は、対象プログラムに基づいて、対象プログラムの動作検証に用いる画面遷移データ(後述の画面遷移DB12b)を作成する処理を実現するためのプログラムである。画面遷移検証プログラムP2は、対象プログラム又は対象プログラムの実行環境が更新された場合に、更新後の対象プログラムに基づいて、対象プログラムの実行によって出力されるGUI画面のシミュレートを実現するためのプログラムである。記憶部12に記憶されるプログラムP,P1,P2の一部又は全部は、情報処理装置10の製造段階において記憶部12に書き込まれてもよく、制御部11が通信部13を介して他の装置からダウンロードして記憶部12に記憶してもよい。更に記憶部12は、後述するオブジェクトDB12a及び画面遷移DB12bを記憶する。学習モデルM、オブジェクトDB12a及び画面遷移DB12bの一部又は全部は、情報処理装置10に接続された他の記憶装置に記憶されてもよく、情報処理装置10が通信可能な他の記憶装置に記憶されてもよい。
【0016】
通信部13は、有線通信又は無線通信に関する処理を行うための通信モジュールであり、ネットワークを介して他の装置との間で情報の送受信を行う。ネットワークは、インターネット又は公衆電話回線網であってもよく、情報処理装置10が設けられている施設内に構築されたLAN(Local Area Network)であってもよい。入力部14は、ユーザによる操作入力を受け付け、操作内容に対応した制御信号を制御部11へ送出する。表示部15は、液晶ディスプレイ又は有機ELディスプレイ等であり、制御部11からの指示に従って各種の情報を表示する。入力部14の一部及び表示部15は一体として構成されたタッチパネルであってもよく、また、タッチパネルは情報処理装置10に外付けされている構成でもよい。
【0017】
読み取り部16は、CD(Compact Disc)、DVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ、SDカード、マイクロSDカード、コンパクトフラッシュ(登録商標)等の可搬型記憶媒体10aに記憶された情報を読み取る。記憶部12に記憶されるプログラムP,P1,P2の一部又は全部は、制御部11が読み取り部16を介して可搬型記憶媒体10aから読み取って記憶部12に記憶してもよい。
【0018】
本実施形態において、情報処理装置10は複数のコンピュータからなるマルチコンピュータであってもよく、ソフトウェアによって仮想的に構築された仮想マシンであってもよく、クラウドサーバであってもよい。また、情報処理装置10は、入力部14及び表示部15は必須ではなく、接続されたコンピュータを通じて操作を受け付ける構成でもよく、表示すべき情報を外部の表示装置へ出力する構成でもよい。また、プログラムP,P1,P2は単一のコンピュータ上で実行されてもよく、ネットワークを介して相互に接続された複数のコンピュータ上で実行されてもよい。
【0019】
図2はオブジェクトDB12a及び画面遷移DB12bのレコードレイアウトの一例を示す説明図である。
図2AはオブジェクトDB12aを示し、
図2Bは画面遷移DB12bを示す。オブジェクトDB12aは、GUI画面に表示される可能性のある、操作可能なオブジェクトに関する情報が記憶されたデータベースである。
図2Aに示すオブジェクトDB12aは、オブジェクトID列、オブジェクト名列、処理命令列、及び優先順位列を含み、各オブジェクトに固有に割り当てられたオブジェクトID及び各オブジェクトに付けられたオブジェクト名に対応付けて、各オブジェクトに割り当てられた処理命令(例えばコマンド)及び優先順位を記憶する。
図2Aの例では、1,2,3,4の優先順位が各オブジェクトに割り当てられているが、例えば大きい値ほど優先順位が上位となる優先度が割り当てられる構成でもよい。また、優先順位は全てのオブジェクトに割り当てられている必要はない。なお、各オブジェクトのグラフィックデータは、オブジェクトID又はオブジェクト名が付与されて記憶部12の所定領域(例えば予め用意されたオブジェクトフォルダ)に記憶されている。オブジェクトDB12aは、対象プログラム毎に設けられてもよく、この場合、対象プログラムに割り当てられたプログラムIDに対応付けて記憶部12に記憶される。
【0020】
画面遷移DB12bは、対象プログラムを実行した場合に表示されるGUI画面の遷移状態を示す情報が登録されるデータベースである。画面遷移DB12bは、制御部11が画面遷移作成プログラムP1を実行することにより作成されるDBであり、対象プログラム毎に作成され、対象プログラムに割り当てられたプログラムIDに対応付けて記憶部12に記憶される。なお、画面遷移DB12bは、対象プログラムの検証処理を行う際に作成されるので、プログラムIDと、検証処理に割り当てられた処理IDとに対応付けて記憶部12に記憶されてもよい。
図2Bに示す画面遷移DB12bは、遷移前画面名列、オブジェクト名列、操作回数列、及び遷移後画面名列を含み、対象プログラムを実行した場合に表示される各GUI画面(遷移前画面)の名称に対応付けて、GUI画面中に表示されるオブジェクトのオブジェクト名と、各オブジェクトの操作回数と、各オブジェクトを操作した場合に遷移するGUI画面(遷移後画面)の名称とを記憶する。なお、各GUI画面の画面データは、画面名に対応付けて記憶部12の所定領域(例えば予め用意された画面DB)に記憶されている。
図2Bに示す画面遷移DB12bでは、HOME画面にオブジェクト名がA,B,Cのオブジェクトが表示され、Aのオブジェクトが操作された場合、画面Aに遷移し、Bのオブジェクトが操作された場合、画面Bに遷移することが分かる。またHOME画面においてCのオブジェクトが操作された場合、1回目の操作では画面Cに遷移し、2回目の操作では画面C-1に遷移することが分かる。また、画面AにはReturnオブジェクト及びオブジェクト名がA-1のオブジェクトが表示され、Returnオブジェクトが操作された場合、HOME画面に遷移し、A-1のオブジェクトが操作された場合、画面A-1に遷移することが分かる。
【0021】
図3は学習モデルMの説明図であり、
図3Aは学習モデルMの構成例を示し、
図3Bは学習モデルMの学習に用いる訓練データの例を示す。学習モデルMは、GUI画面の画面画像を入力とし、入力されたGUI画面に基づいて、GUI画面中の操作対象のオブジェクトを認識する演算を行い、認識した結果を出力するように学習してある。認識対象のオブジェクトは、
図3Bに示すようなReturnオブジェクト、Menuオブジェクト、Deleteオブジェクト、Homeオブジェクトを含み、予めオブジェクトフォルダ及びオブジェクトDB12aに登録されている。学習モデルMは、GUI画面に含まれる1種類のオブジェクトを認識するシングルラベル分類を実現するモデルであってもよく、複数種類のオブジェクトを認識するマルチラベル分類を実現するモデルであってもよい。
図3Aに示す学習モデルMは、マルチラベル分類を実現するモデルを示している。学習モデルMは、YOLO(You Only Look Once)、R-CNN(Regions with Convolution Neural Network )、SSD(Single Shot Multibook Detector)等の物体検出アルゴリズムを用いて構成することができ、複数のアルゴリズムを組み合わせて構成してもよい。また、学習モデルMは、セマンティックセグメンテーションにより、入力されたGUI画面中のオブジェクトを画素単位で認識するモデルであってもよい。この場合、学習モデルMは、U-Net、FCN(Fully Convolutional Network )、SegNet等のアルゴリズムを用いて構成することができる。
【0022】
学習モデルMは、GUI画面が入力される入力層と、入力されたGUI画面から特徴量を抽出する中間層と、中間層の演算結果を基にGUI画面中のオブジェクトが検出された画像を出力する出力層とを有する。中間層は、各種の関数及び閾値等を用いて、入力層から入力されたGUI画面に基づいて出力値を算出する。出力層は、入力されたGUI画面に対して、検出されたオブジェクトを囲むバウンディングボックス(
図3Aでは破線で示す矩形)と、検出されたオブジェクトの種類を示す判別ラベルと、判別ラベルに対する確信度とが付与された画像(以下ではラベル画像と称する)を出力する。このような構成により、学習モデルMは、GUI画面が入力された場合に、GUI画面中のオブジェクトにバウンディングボックスが付加され、オブジェクトに対して認識結果のオブジェクト名及び確信度が表示されたラベル画像(オブジェクトに関する情報)を出力する。
【0023】
学習モデルMは、訓練用のGUI画面と、このGUI画面中のオブジェクトにマーク(バウンディングボックス)が付けられ、各マークにオブジェクト名(正解のラベル)が対応付けられた画像(正解のラベル画像)とを含む訓練データを用いて機械学習することにより生成できる。訓練データは、GUI画面に対してアノテーションの担当者がGUI画面中のオブジェクトにマーク(バウンディングボックス)及びオブジェクト名(正解ラベル)を付加した画像(正解のラベル画像)を、当該GUI画面に対応付けることにより生成される。なお、訓練用のGUI画面は、例えば
図3Bに示すようなオブジェクトの画像であってもよく、この場合、オブジェクトの画像と、このオブジェクトの名称(正解ラベル)とを訓練データとすることができる。
図3Bに示す例では、異なるグラフィックデザインに対して同じ機能(処理命令)が対応付けられているオブジェクトを示しており、本実施形態では、異なるグラフィックデザインであっても、同じ機能(処理命令)が対応付けられているオブジェクトに対して同じオブジェクト名が対応付けられた訓練データが用いられる。
【0024】
学習モデルMは、訓練データに含まれるGUI画面が入力された場合に、訓練データに含まれる正解のラベル画像を出力するように学習する。学習処理において学習モデルMは、入力されたGUI画面に基づいて中間層及び出力層での演算を行い、出力層から出力するラベル画像を算出する。学習モデルMは、算出したラベル画像と、正解のラベル画像とを比較し、両者が近似するように、中間層及び出力層での演算処理に用いるパラメータを最適化する。具体的には、学習モデルMは、算出したラベル画像中に検出されたオブジェクトに対する判別ラベル及び確信度と、正解のラベル画像中の正解ラベルに応じた値(正解のオブジェクトに対しては1、他のオブジェクトに対しては0)とを比較し、両者が近似するように最適化する。当該パラメータは、中間層及び出力層におけるノード間の重み(結合係数)等である。パラメータの最適化の方法は特に限定されないが、誤差逆伝播法、最急降下法等を用いることができる。これにより、GUI画面が入力された場合に、GUI画面中のオブジェクトの種類を判別し、判別した結果(バウンディングボックス、判別ラベル及び確信度)を示すラベル画像を出力する学習モデルMが得られる。
【0025】
本実施形態の学習モデルMは、
図3Bに示すように、異なるグラフィックデザインであっても、同じ機能(処理命令)が対応付けられているオブジェクトを同じ種類のオブジェクトとして学習する。よって、学習モデルMは、学習していないグラフィックデザインが入力された場合であっても、学習済みのオブジェクトの中から適切なオブジェクト(類似するオブジェクト)に識別することが可能となる。情報処理装置10は、上述したような学習モデルMを予め用意しておき、対象プログラムにおける画像遷移データを生成する際、及び、対象プログラムの検証処理を行う際に用いる。学習モデルMの学習は他の学習装置で行われてもよい。他の学習装置で学習が行われて生成された学習済みの学習モデルMは、例えばネットワーク経由又は可搬型記憶媒体10a経由で学習装置から情報処理装置10にダウンロードされて記憶部12に記憶される。
【0026】
以下に、学習モデルMの生成処理について説明する。
図4は学習モデルMの生成処理手順の一例を示すフローチャートである。以後の説明に用いる各フローチャートに示す「S」は、ステップを示す。以下の処理は、情報処理装置10の制御部11が、記憶部12に記憶してあるプログラムPに従って実行するが、他の学習装置で行われてもよい。なお、上述した訓練データは、予め生成されて記憶部12の所定領域(所定のDB)に記憶してあるものとする。
【0027】
制御部11は、記憶部12に記憶してある訓練データのうちの1つを取得する(S11)。そして、制御部11は、取得した訓練データに基づいて、学習モデルMの学習処理を行う(S12)。ここでは、制御部11は、訓練データに含まれるGUI画面を学習モデルMに入力し、当該GUI画面が入力されることによって学習モデルMから出力される出力値(ラベル画像)を取得する。制御部11は、学習モデルMから出力されたラベル画像と、訓練データに含まれる正解のラベル画像とを比較し、両者が近似するように学習モデルMを学習させる。なお、学習処理において、学習モデルMは、例えば、出力層から入力層に向かって順次更新する誤差逆伝播法を用いて、中間層及び出力層での演算処理に用いるパラメータを最適化する。
【0028】
制御部11は、記憶部12に記憶してある訓練データのうちで、学習処理が行われていない未処理の訓練データがあるか否かを判断する(S13)。未処理の訓練データがあると判断した場合(S13:YES)、制御部11は、S11に戻り、学習処理が未処理の訓練データについてS11~S12の処理を行う。未処理の訓練データがないと判断した場合(S13:NO)、制御部11は、一連の処理を終了する。上述した学習処理により、GUI画面が入力された場合に、GUI画面中のオブジェクトがバウンディングボックスで囲まれ、各バウンディングボックスに判別ラベル及び確信度が付加されたラベル画像を出力する学習モデルMが生成される。なお、既に学習済みの学習モデルMについても、上述した処理を行うことによって再学習させることができ、この場合、判別精度がより高い学習モデルMを生成できる。
【0029】
以下に、情報処理装置10が行う処理について説明する。本実施形態の情報処理装置10は、画面遷移作成プログラムP1を実行することによって対象プログラムにおける画面遷移DB12bを作成する処理と、画面遷移検証プログラムP2を実行することによって対象プログラムにおける画面遷移状態を検証する処理とを行う。なお、情報処理装置10は、例えば最初にリリースされた対象プログラムに基づいて作成した画面遷移DB12bを正解(検証処理における期待値)の画面遷移データとする。そして、情報処理装置10は、対象プログラム又は対象プログラムの実行環境が更新された場合に、対象プログラムに基づいて更新後の画面遷移DB12bを作成し、更新後の画面遷移DB12bを正解の画面遷移DB12bと比較することにより検証処理を実行する。なお、正解の画面遷移DB12bを作成する際に使用する対象プログラムは、最初にリリースされた対象プログラムのほかに、最初に納品された対象プログラムであってもよい。
【0030】
以下に、対象プログラムにおける画面遷移DB12bを作成する処理について説明する。
図5及び
図6は画面遷移DB12bの作成処理手順の一例を示すフローチャート、
図7及び
図8は画面遷移DB12bの作成途中の状態を示す説明図である。情報処理装置10は、開発者によって開発・作製された対象プログラムが初めてリリースされた後に以下の処理を行って、当該対象プログラムにおける画面遷移データを記憶した画面遷移DB12bを作成する。なお、リリースされた対象プログラムはバグ等が解消された状態であり、この対象プログラムに基づいて作成された画面遷移DB12bを正解の画面遷移データとすることができる。
【0031】
情報処理装置10の制御部11は、画面遷移作成プログラムP1を起動し、画面遷移作成プログラムP1の起動に伴い、ここでの処理対象の対象プログラムを実行する(S21)。制御部11は、対象プログラムを実行することによって表示対象となるGUI画面を生成し、キャプチャする(S22)。制御部11は、例えばスクリーンキャプチャ(スクリーンショット)機能を用いて表示対象のGUI画面をキャプチャする。なお、制御部11が、対象プログラムを実行することによって表示対象となったGUI画面を表示部15に表示し、表示部15に表示されたGUI画面をカメラで撮影して得られた画像を取得することにより、GUI画面をキャプチャしてもよい。
【0032】
制御部11は、作成中の画面遷移DB12bに記憶してある遷移前画面において、キャプチャしたGUI画面と同一の画面があるか否かを検索する(S23)。例えば制御部11は、この時点で画面遷移DB12bに遷移前画面として記憶してあるGUI画面を記憶部12から読み出し、読み出した各GUI画面と、キャプチャしたGUI画面との類似度をそれぞれ算出し、最大の類似度が閾値以上である場合、同一の画面があると判断し、最大の類似度が算出されたGUI画面を同一画面に特定する。類似度は、例えば相関係数、コサイン類似度を用いることができる。また、制御部11は、機械学習によって構築された学習モデルを用いて、2つのGUI画面の類似度を推定する構成でもよい。例えばCNNで構成され、2つのGUI画面が入力された場合に、2つのGUI画面の類似度を出力するように学習された学習モデルを用いてもよい。この場合、制御部11は、2つのGUI画面を学習済みの学習モデルに入力し、学習モデルからの出力情報に基づいて、2つのGUI画面の類似度を推定できる。なお、2つの画面が同一であるか否かの判断基準としての閾値は、対象プログラム毎、又は検証処理の内容に応じて変更可能であってもよい。
【0033】
制御部11は、検索した結果、同一画面があるか否かを判断し(S24)、同一画面がないと判断した場合(S24:NO)、現在のGUI画面(ここではS22でキャプチャしたGUI画面)を遷移前画面として画面遷移DB12bに登録する(S25)。ここでは、制御部11は、現在のGUI画面に画面名を割り当て、割り当てた画面名を画面遷移DB12bの遷移前画面名列に記憶し、現在のGUI画面の画像データに画面名を付与して記憶部12の所定領域(画面DB)に記憶する。そして、制御部11は、現在のGUI画面中の操作可能なオブジェクトを認識する(S26)。具体的には、制御部11は、現在のGUI画面を学習モデルMに入力し、学習モデルMから出力されたラベル画像を取得する。例えば制御部11は、
図7Aに示すように、A,B,Cのオブジェクトを含むGUI画面を学習モデルMに入力した場合、各オブジェクトをバウンディングボックスで示したラベル画像を取得する。なお、本実施形態では、オブジェクトDB12aに各オブジェクトの処理命令が記憶してあるので、制御部11は、学習モデルMを用いてGUI画面中のオブジェクトの名称だけでなく各オブジェクトの処理命令(種別)を検知することができる。また、制御部11は、学習モデルMを用いた画像認識に加えて、OCR(Optical Character Recognition)機能を用いてGUI画面中のテキストを抽出することにより、所定のテキストをグラフィックデザインに含むオブジェクトを認識してもよい。例えば
図3Bに示すように「MENU」のテキストを含むグラフィックデザインのMenuオブジェクトの場合、OCR機能によって「MENU」のテキストを抽出することにより、Menuオブジェクトを認識できる。
【0034】
制御部11は、認識した各オブジェクトを画面遷移DB12bに登録する(S27)。ここでは、制御部11は、認識した各オブジェクトのオブジェクト名(判別ラベル)を画面遷移DB12bのオブジェクト名列に記憶し、各オブジェクトのグラフィックデータにオブジェクト名を付与して記憶部12の所定領域(オブジェクトフォルダ)に記憶する。
図7Aには、現在のGUI画面にHOME画面の名称が割り当てられ、HOME画面中にオブジェクト名がA,B,Cのオブジェクトが認識された場合の画面遷移DB12bの記憶内容を示す。なお、この時点で、制御部11は、各オブジェクトの操作回数に0を記憶しておく。
【0035】
検索した結果、同一画面があると判断した場合(S24:YES)、現在のGUI画面は既に画面遷移DB12bに登録済みであるので、制御部11は、S25~S27をスキップしてS28に移行する。制御部11は、作成中の画面遷移DB12bを参照して、現在のGUI画面中のオブジェクトに、操作回数0のオブジェクトがあるか否かを判断する(S28)。操作回数0のオブジェクトがあると判断した場合(S28:YES)、制御部11は、操作回数0のオブジェクトのうちで、優先順位が高いオブジェクトを特定する(S29)。ここでは、制御部11は、操作回数0のオブジェクトのそれぞれに対して設定されている優先順位をオブジェクトDB12aから取得し、最も高い優先順位のオブジェクトを特定する。なお、優先順位が割り当てられていないオブジェクトに対しては最低の優先順位を割り当てればよい。また、
図7Aに示すように複数のオブジェクトを有する画面において、画面中の各オブジェクトに優先順位が割り当てられていない場合、制御部11は任意の1つのオブジェクトを特定する。その際、制御部11は、例えば各オブジェクトの画面中の表示位置(配置位置)を考慮してもよく、各オブジェクトに割り当てたオブジェクト名に基づいて50音順又はアルファベット順で任意の1つを特定してもよい。
【0036】
制御部11は、特定したオブジェクトに対応付けられている処理命令(オブジェクトの種別)を特定する(S30)。本実施形態では、各オブジェクトの処理命令はオブジェクトDB12aに記憶してあるので、制御部11は、特定したオブジェクトの処理命令をオブジェクトDB12aによって特定することができる。そして、制御部11は、特定したオブジェクトを操作し(S31)、オブジェクトに対応付けられている処理命令を実行する。なお、ここでのオブジェクトの操作はソフトウェア処理であり、制御部11は、特定したオブジェクトが操作された場合に送出されるコマンド(制御信号)を受け付け、コマンドに応じた処理命令を実行する。なお、操作は、例えばタップ、ダブルタップ、スワイプ等であり、予め設定されている操作を行う。また、オブジェクト毎に操作の種類が異なる構成でもよい。例えば、各オブジェクトに対応付けて、各オブジェクトに行うべき操作の種類を登録しておき、制御部11は、各オブジェクト及び各オブジェクトに対する操作の種類に応じたコマンドを受け付けることにより、オブジェクトに対する操作内容(操作の種類)に応じた処理命令の実行が可能となる。
【0037】
制御部11は、オブジェクトに対応付けられている処理命令を実行することによって次に表示対象となるGUI画面(遷移後のGUI画面)を生成し、キャプチャする(S32)。なお、遷移後のGUI画面は、遷移前のGUI画面とは全く異なる画面であってもよく、遷移前のGUI画面の一部のみが異なる画面であってもよい。GUI画面をキャプチャする処理はS22と同じである。制御部11は、S32でキャプチャしたGUI画面を、遷移前のGUI画面と、操作対象としたオブジェクトとに対応付けて遷移後画面として画面遷移DB12bに記憶する(S33)。ここでは、制御部11は、キャプチャしたGUI画面に画面名を割り当て、割り当てた画面名を画面遷移DB12bの遷移後画面名列に記憶し、キャプチャしたGUI画面に画面名を付与して記憶部12の所定領域(画面DB)に記憶する。また、制御部11は、このオブジェクトの操作回数を1に更新しておく。これにより、制御部11は、遷移前のGUI画面と、当該GUI画面中のオブジェクトと、当該オブジェクトが操作された場合の遷移後のGUI画面とを含む画面遷移データを作成して画面遷移DB12bに記憶できる。
【0038】
そして制御部11は、S23に移行し、現在のGUI画面(ここではS32でキャプチャしたGUI画面)と同一画面があるか否かを検索し(S23)、同一画面がないと判断した場合(S24:NO)、現在のGUI画面を遷移前画面として画面遷移DB12bに登録する(S25)。また、制御部11は、現在のGUI画面中の操作可能なオブジェクトを認識し(S26)、認識した各オブジェクトを画面遷移DB12bに登録する(S27)。ここまでの処理で、例えばHOME画面中のオブジェクトAが操作されることにより画面Aに遷移し、画面AにReturnオブジェクト及びオブジェクトA-1が表示されている場合の画面遷移データが、
図7Bに示すように画面遷移DB12bに記憶される。制御部11は、現在のGUI画面中のオブジェクトに、操作回数0のオブジェクトがないと判断するまで、S23~S33を繰り返す。これにより、例えば
図8に示すような画面遷移DB12bが作成される。
図8には、HOME画面中のオブジェクトAが操作されて画面Aに遷移し、画面Aにおいて優先順位が最高のReturnオブジェクトが操作されてHOME画面に戻り、HOME画面中のオブジェクトBが操作されて画面Bに遷移し、画面Bにおいて優先順位が最高のReturnオブジェクトが操作されてHOME画面に戻り、HOME画面中のオブジェクトCが操作されて画面Cに遷移し、画面Cにおいて優先順位が最高のReturnオブジェクトが操作されてHOME画面に戻った場合の画面遷移DB12bの記憶内容を示す。
【0039】
制御部11は、現在のGUI画面中のオブジェクトに、操作回数0のオブジェクトがないと判断した場合(S28:NO)、現在のGUI画面中のいずれかのオブジェクトを操作した場合の遷移後のGUI画面に、操作回数0のオブジェクトがあるか否かを判断する(S34)。即ち、現在のGUI画面よりも下層のGUI画面に、操作回数0のオブジェクトがあるか否かを判断する。
図8に示す画面遷移DB12bでは、HOME画面中に操作回数0のオブジェクトがなく、HOME画面から遷移可能な画面A,B,Cに操作回数0のオブジェクトがある。制御部11は、遷移後のGUI画面に操作回数0のオブジェクトがあると判断した場合(S34:YES)、遷移後のGUI画面に遷移するためのオブジェクトを操作して遷移後のGUI画面に遷移する(S35)。例えば制御部11は、HOME画面中のオブジェクトAを操作して画面Aに遷移させる。具体的には、制御部11は、オブジェクトAに対応付けられている処理命令を特定し、オブジェクトAを操作することにより、オブジェクトAに対応付けられている処理命令を実行し、次に表示対象となる画面A(遷移後のGUI画面)を生成する。なお、制御部11は、画面Aの代わりに、画面B又は画面Cに遷移させてもよく、操作回数0のオブジェクトの数が多い画面に遷移させてもよい。
【0040】
制御部11は、S33に移行し、遷移前のGUI画面と、操作したオブジェクトとに対応付けて遷移後のGUI画面を画面遷移DB12bに記憶する(S33)。ここでは、制御部11は、このオブジェクトに対応するレコードを画面遷移DB12bに追加し、このオブジェクトの直近(最大)の操作回数に1を加算した操作回数と遷移後のGUI画面とを新たなレコードに記憶する。即ち、このオブジェクトの操作が2回目である場合、操作回数2に対応付けて遷移後のGUI画面を記憶する。その後、制御部11はS23に移行する。
【0041】
遷移後のGUI画面に操作回数0のオブジェクトがないと判断した場合(S34:NO)、即ち、現在のGUI画面よりも下層のGUI画面に操作回数0のオブジェクトがない場合、制御部11は、現在のGUI画面の遷移前のGUI画面(1つ上層の画面)があるか否かを判断する(S36)。遷移前のGUI画面があると判断した場合(S36:YES)、制御部11は、Returnオブジェクトを操作して遷移前のGUI画面(1つ上層の画面)に遷移する(戻る)(S37)。ここでは、制御部11は、Returnオブジェクトに対応付けられている処理命令を特定し、Returnオブジェクトを操作することにより、Returnオブジェクトに対応付けられている処理命令を実行し、次に表示対象となるGUI画面(遷移前のGUI画面)を生成する。そして制御部11は、S28に移行し、現在のGUI画面に操作回数0のオブジェクトがあるか否かを判断し(S28)、現在のGUI画面又は現在のGUI画面よりも下層のGUI画面に操作回数0のオブジェクトがあると判断するまで、S28,S34,S36~S37を繰り返し、上層のGUI画面に画面遷移する(戻る)。
【0042】
制御部11は、現在のGUI画面に操作回数0のオブジェクトがあると判断した場合(S28:YES)、S29に移行し、遷移後のGUI画面に操作回数0のオブジェクトがあると判断した場合(S34:YES)、S35に移行する。S36で遷移前のGUI画面がないと判断した場合(S36:NO)、即ち、上層のGUI画面に遷移した結果、現在のGUI画面が最上層のGUI画面(例えばHOME画面)となった場合、制御部11は一連の処理を終了する。この時点で作成された画面遷移DB12bが、対象プログラム又は実行環境が更新された場合に対象プログラムの動作検証に用いる正解(期待値)の画面遷移データとなる。上述した処理では、GUI画面中の各オブジェクトを少なくとも1回操作した場合の画面遷移DB12bを作成するが、例えばGUI画面中の各オブジェクトを少なくとも2回ずつ操作した場合の画面遷移DB12bを作成するように構成されていてもよい。この場合、S28で、制御部11は、現在のGUI画面中のオブジェクトに、操作回数2未満のオブジェクトがあるか否かを判断すればよい。
【0043】
上述した処理により、本実施形態では、対象プログラムを実際に動作させることによって得られる画像遷移DB12b(画像遷移データ、画面遷移状態を示すテストスクリプト)の自動作成が可能である。また、対象プログラムについて初めて作成された画面遷移DB12b、例えば初めてリリースされた対象プログラムに基づいて作成した画面遷移DB12bが、以降に更新される対象プログラムの動作検証処理における正解(期待値)として使用される。これにより、機器の仕様書から画面遷移DB12b(テストスクリプト)を作成する作業を行うことなく、動作検証処理の実施が可能となる。なお、対象プログラムについて初めて画面遷移DB12bが作成された場合、画面遷移DB12bに登録された各画面への画面遷移データが正しいか否かを検証担当者が確認し、誤った画面遷移データを適宜修正することにより、動作検証処理における正解として使用可能となる。
【0044】
次に、上述した処理によって、対象プログラムに基づいて初めて作成した画面遷移DB12b(以下では正解の画面遷移DB12bと称する)を用いた検証処理について説明する。情報処理装置10は、正解の画面遷移DB12bが作成された対象プログラムが更新された場合、又は、対象プログラムの実行環境(例えばOS)が更新された場合に、画面遷移作成プログラムP1を再度実行して、更新後の画面遷移DB12bを作成する。そして、情報処理装置10は、作成した更新後の画面遷移DB12bを正解の画面遷移DB12bと比較し、差分が生じた箇所を不具合の発生箇所として提示する。
【0045】
図9は対象プログラムの検証処理手順の一例を示すフローチャート、
図10は画面例を示す説明図である。情報処理装置10の制御部11は、
図5及び
図6に示す処理によって正解の画面遷移DB12bを作成した対象プログラムについて、対象プログラムが更新された場合、又は、対象プログラムの実行環境(例えばOS)が更新された場合に以下の検証処理を行う。
【0046】
情報処理装置10の制御部11は、対象プログラム又は対象プログラムの実行環境のいずれかが更新されたか否かを判断する(S41)。対象プログラムの更新は、例えば開発者によって更新された対象プログラムが納品され、記憶部12の所定領域(例えば予め用意されたフォルダ)に記憶された場合に、対象プログラムが更新されたと判断する。なお、対象プログラムの更新は、開発者によるバージョンアップに加えて、対象プログラムが自動でバージョンアップされた場合も含む。実行環境の更新は、例えば対象プログラムが搭載される機器の実行環境(例えばOS)がバージョンアップされた場合に、実行環境が更新されたと判断する。なお、対象プログラム及び実行環境の更新状況は、入力部14又は通信部13を介して受け付ける構成でもよい。対象プログラム及び実行環境の両方が更新されていないと判断した場合(S41:NO)、制御部11は、いずれかが更新されるまで待機する。
【0047】
対象プログラム又は実行環境のいずれかが更新されたと判断した場合(S41:YES)、制御部11は、更新後の対象プログラムにおける画面遷移DB12bを作成する処理を実行する(S42)。S42の処理は、
図5及び
図6に示す画面遷移DB12bの作成処理であり、制御部11は、画面遷移作成プログラムP1を起動し、画面遷移作成プログラムP1の起動に伴い処理対象の対象プログラムを実行することによって画面遷移データが蓄積された更新後の画面遷移DB12bを作成する。そして、制御部11は、予め作成してある正解の画面遷移DB12bと、S42で作成した更新後の画面遷移DB12bとを比較し、更新後の画面遷移DB12b中の画面遷移データに対して動画検証を行い、不具合の有無を判定する。
【0048】
具体的には、制御部11は、更新後の画面遷移DB12bから画面遷移データを1つ読み出す(S43)。ここでは、制御部11は、更新後の画面遷移DB12bの1つのレコードに記憶してある遷移前画面名、オブジェクト名、操作回数、及び遷移後画面名を画面遷移データとして読み出す。次に制御部11は、読み出した画面遷移データにおける遷移前画面名、オブジェクト名、及び操作回数に対応する正解の遷移後画面を読み出す(S44)。ここでは、制御部11は、読み出した画面遷移データにおける遷移前画面名、オブジェクト名、及び操作回数に対応付けて正解の画面遷移DB12bに記憶してある遷移後画面名(正解の遷移後画面名)を読み出し、読み出した正解の遷移後画面名に基づいて、画面DBに記憶してある遷移後画面(正解の遷移後のGUI画面)を読み出す。
【0049】
制御部11は、S43で読み出した画面遷移データに含まれる遷移後画面名に基づいて、画面DBに記憶してある遷移後画面(遷移後のGUI画面)を読み出し、読み出した遷移後のGUI画面を、S44で読み出した正解の遷移後のGUI画面と比較する(S45)。ここでは、制御部11は、比較対象の2つのGUI画面の類似度(類似度合)を算出し、類似度が閾値以上である場合、遷移後のGUI画面は正解の画面である(検証結果:OK)と判断し、類似度が閾値未満(所定値未満)である場合、遷移後のGUI画面は正解の画面ではない(検証結果:NG)と判断する。ここでも類似度は、相関係数、コサイン類似度等を用いることができ、また、機械学習によって構築された学習モデルを用いて推定されてもよい。なお、2つの画面の比較結果に基づいて検証結果がOKであるかNGであるかを判断する判断基準としての閾値は、例えば検証処理の内容に応じて変更可能であってもよい。例えば、検証処理中に遷移後のGUI画面全体が真っ白になるWhite screen状態、真っ黒になるBlack screen状態、青になるBlue screen状態が発生する場合がある。このような状態では遷移後のGUI画面と正解のGUI画面との類似度は低い。従って、このような状態を検証結果NGとして検出することを目的とする検証処理の場合、閾値として小さい値を設定すればよい。また、正解のGUI画面との差分が小さい場合であっても当該差分を検証結果NGとして検出することを目的とする検証処理の場合、正解のGUI画面との類似度は高いので、閾値として大きい値を設定すればよい。
【0050】
制御部11は、S43で読み出した画面遷移データに含まれる遷移後のGUI画面と正解の遷移後のGUI画面とを比較した検証結果がNGであるか否かを判断し(S46)、NGであると判断した場合(S46:YES)、検証結果がNGである理由を特定する(S47)。検証結果がNGである理由には、White screen状態、Black screen状態、Blue screen状態のほかに、画面中のオブジェクトが反応しなくなるFreeze状態、画面中のテキストが適切な範囲内に収まらないProtrude Text(文字列異常)状態が含まれる。よって、制御部11は、遷移後のGUI画面の全体が白、黒、又は青のいずれかであるか否かを判定し、いずれかであると判定した場合、White screen状態、Black screen状態、又はBlue screen状態であると特定する。また制御部11は、遷移後のGUI画面において、画面中のオブジェクトを操作して次のGUI画面への切替を行う処理を所定回数又は所定時間繰り返した(再試行した)場合に次のGUI画面に切り替わらずにリトライアウトした場合、Freeze状態であると特定する。また制御部11は、遷移後のGUI画面において、画面中の一連のテキストの背景が複数色であるか否かを判定し、複数色であると判定した場合、テキストがテキスト領域からはみ出したProtrude Text状態であると特定する。一般的に一連のテキストは同じ背景に表示されるので、一連のテキストの背景が複数色である場合、一連のテキストがテキスト領域内に収まっていないProtrude Text状態であると特定できる。なお、制御部11は、OCR機能を用いて、遷移後のGUI画面中のテキストを読み取り、予め用意してある辞書に登録されていない単語又は用語のテキストが含まれる場合、Protrude Text状態であると特定してもよい。また、制御部11は、機械学習によって構築された学習モデルを用いて、検証結果がNGである理由を推定する構成でもよい。例えばCNNで構成され、遷移後のGUI画面が入力された場合に、入力されたGUI画面がWhite screen状態、Black screen状態、Blue screen状態、Freeze状態、Protrude Text状態等のいずれであるかを示す情報を出力するように学習された学習モデルを用いてもよい。この場合、制御部11は、遷移後のGUI画面を学習済みの学習モデルに入力し、学習モデルからの出力情報に基づいて、遷移後のGUI画面が検証結果NGの状態であるか否か、及び検証結果NGの理由を推定できる。
【0051】
制御部11は、検証結果がNGであると判断した画面遷移データを記憶部12の所定領域(例えば予め用意された検証結果DB)に記憶する(S48)。ここでは、制御部11は、画面遷移データに含まれる遷移前画面名、オブジェクト名、操作回数、及び遷移後画面名と、検証結果がNGである理由とを対応付けて記憶する。また、制御部11は、この画面遷移データに対する正解の遷移後のGUI画面も、画面遷移データ及びNGの理由に対応付けて記憶してもよい。制御部11は、検証結果がNGでないと判断した場合(S46:NO)、S47~S48をスキップする。
【0052】
制御部11は、S42で作成した更新後の画面遷移DB12bに記憶されている画面遷移データのうちで、上述した検証処理を行っていない未処理の画面遷移データがあるか否かを判断する(S49)。未処理の画面遷移データがあると判断した場合(S49:YES)、制御部11は、S43に戻り、検証処理が未処理の画面遷移データについてS43~S48の処理を行う。未処理の画面遷移データがないと判断した場合(S49:NO)、制御部11は、一連の検証処理を終了し、検証結果DBに蓄積した検証結果に基づいて検証結果画面を生成する(S50)。
図10は検証結果画面例を示す。
図10Aに示す画面は、画面Xが遷移前画面であった場合に画面X中のオブジェクトYを操作した場合に遷移後の画面Yが正解の画面Yとは異なり、検証結果がNGである画面遷移データを表示する。なお、検証結果DBに正解の遷移後のGUI画面が記憶されている場合、
図10Aに示すように、検証結果がNGである画面遷移データに加えて、正解の遷移後のGUI画面を表示することができる。
図10Bに示す画面は、画面Bが遷移前画面であった場合に画面B中のReturnオブジェクトを操作した場合に遷移後のGUI画面がBlack screen状態となり、検証結果がNGである画面遷移データを表示する。
【0053】
制御部11は、生成した検証結果画面を出力し(S51)、一連の処理を終了する。なお、制御部11は、検証結果画面を記憶部12に記憶してもよく、表示部15へ出力して表示してもよく、通信部13によって指定された装置へ送信してもよい。また、制御部11は、検証結果画面を、情報処理装置10が通信可能なプリンタへ通信部13によって送信して印刷処理を実行してもよい。これにより、検証処理の結果を任意の方法によって提供することが可能となる。なお、検証担当者等は、検証結果がNGとなった画面遷移データを検証結果画面によって確認し、正解の画面遷移データと異なる画面遷移データについて、バグ等の不具合の発生であるか、更新された対象プログラムにおける仕様変更であるか等を判断し、判断結果に応じた対応を行う。
【0054】
上述した検証処理により、本実施形態では、対象プログラム又は対象プログラムの実行環境が更新された場合に、更新後の画面遷移DB12bが自動で作成され、予め作成されている正解の画面遷移DB12b(テストスクリプト)との比較に基づいて、更新後の画面遷移DB12bに記憶された各画面遷移データが適切な画面遷移を示しているかを検証する処理を自動で実行できる。よって、対象プログラム又は実行環境が頻繁に改良、バージョンアップされる場合であっても、対象プログラム又は実行環境が更新される都度、更新後の画面遷移DB12bの作成及び検証処理が自動で実行されるので、検証担当者は検証結果画面を確認すればよく、検証処理による業務負担の増加が抑制される。
【0055】
本実施形態における画面遷移DB12bの作成処理では、GUI画面中の各オブジェクトに対して優先順位が設定されており、優先順位が高いオブジェクトから順に操作して画面遷移データが作成されて画面遷移DB12bに蓄積される。例えば、Returnオブジェクトに高い優先順位を設定した場合、例えば
図8に示すように、HOME画面中の各オブジェクトA,B,Cが操作されて各画面A,B,Cに遷移した後に、各画面A,B,CにおいてReturnオブジェクトが操作されてHOME画面に戻すことができる。即ち、HOME画面から1つ下層の画面A,B,Cへの画面遷移データと、画面A,B,CからHOME画面への画面遷移データとが優先的に作成され、その後、画面A(又はB,C)から更に1つ下層の画面A-1(又はB-1,C-1)への画面遷移データと、画面A-1(又はB-1,C-1)から画面A(又はB,C)への画面遷移データとが作成される。このような処理によれば、階層構造で構成された各GUI画面において、上層の階層から順に階層の深さ別に、同一の深さの階層の各GUI画面までの画面遷移データを収集することができる。このような処理は、例えば改良箇所又はバージョンアップ箇所が大量にある場合、又は、対象プログラムの品質が良好でない場合に行うことにより、上層の階層から順に、階層の深さ別に、対象プログラムの実行による画面遷移を広い範囲で検証することができ、画面遷移データを効率の良く作成することが可能となる。
【0056】
また、Returnオブジェクトに低い優先順位を設定した場合、
図8に示すHOME画面において、1つのオブジェクト(例えばオブジェクトA)が操作されて画面Aに遷移した後に、画面AにおいてReturnオブジェクト以外のオブジェクト(例えばオブジェクトA-1)が操作されて更に下層の画面A-1に遷移する。即ち、HOME画面から1つ下層の画面Aへの画面遷移データが作成された後、画面Aから更に1つ下層の画面A-1への画面遷移データが作成される。このような処理によれば、階層構造で構成された各GUI画面において、HOME画面中の1つのオブジェクトに対して、当該オブジェクトを操作した場合に深さ方向に順次遷移する各GUI画面における画面遷移データを収集できる。このような処理は、例えば対象プログラムの品質がある程度安定している場合に行うことにより、任意のGUI画面から下層側の深さ方向の画面遷移を重点的に検証することができる。よって、例えばバグが発生し易い箇所、ある機能が実現されている箇所、又は、重点的に検証したい箇所における画面遷移データを効率よく収集することが可能となる。
【0057】
上述したように、各オブジェクトに適切な優先順位を設定することにより、GUI画面の上層の階層から順に階層毎(同一深さの階層毎)に各GUI画面への画面遷移データを作成する処理を優先するか、GUI画面の階層の深さ方向の画面遷移データを作成する処理を優先するかを切り替えることができる。また、上述したように同一深さの階層毎に各GUI画面への画面遷移データを作成する処理、及び、階層の深さ方向に順次各GUI画面への画面遷移データを作成する処理では、階層毎、又は、階層の深さ方向に各GUI画面に遷移させることができるので、各GUI画面が画面遷移データの作成対象から漏れることを抑制でき、高精度の画面遷移データを作成できる。これに対して、例えばGUI画面中のオブジェクトをランダムに操作して各GUI画面への画面遷移データを作成する場合、操作されるオブジェクトに偏りが生じ、操作されないオブジェクトが発生する可能性がある。この場合、画面遷移データの作成対象から漏れるGUI画面が発生する可能性があり、画面遷移データの精度低下を招く虞がある。なお、各オブジェクトに設定される優先順位は、検証処理の担当者等が手動で設定してもよく、予め設定されたルールに従って自動的に設定されてもよい。
【0058】
本実施形態では、GUI画面中のオブジェクトを認識する処理を、学習モデルMを用いた画像認識によって行う構成である。これにより、学習していないグラフィックデザインのオブジェクトについても、学習済みのオブジェクトのいずれかに判別することが可能となる。例えばグラフィックデザインが類似するオブジェクトに判別される。なお、オブジェクトの認識処理は、例えばルールベースによる画像認識によって行う構成でもよい。例えば、各オブジェクトの画像(グラフィックデザイン)から生成されたテンプレート画像を予め用意しておき、テンプレート画像を用いたパターンマッチングによってGUI画面中のオブジェクトを特定してもよい。
【0059】
上述の実施形態では、処理対象のGUIプログラムは機器に搭載されるとして説明したが、GUIプログラムは、汎用パーソナルコンピュータのアプリケーションプログラムであってよく、Webアプリであってもよい。
【0060】
本実施形態において、画面遷移作成プログラムP1による画面遷移DB12bの作成処理、及び、画面遷移検証プログラムP2による検証処理は、情報処理装置10がローカルで行う構成に限定されない。例えば、画面遷移DB12bの作成処理を実行するサーバを設けてもよい。この場合、情報処理装置10は、画面遷移DB12bの作成対象の対象プログラムをサーバへ送信し、サーバが、画面遷移作成プログラムP1を起動させることによって対象プログラムの画面遷移DB12bを作成して情報処理装置10へ送信するように構成される。この場合、情報処理装置10は、サーバで生成された正解の画面遷移DB12b及び更新後の画面遷移DB12bを取得し、取得した2つの画面遷移DB12bを用いて、画面遷移検証プログラムP2による検証処理を実行できる。また、検証処理を実行するサーバを設けてもよい。この場合、情報処理装置10は、正解の画面遷移DB12b及び更新後の画面遷移DB12bをサーバへ送信し、サーバが、2つの画面遷移DB12bを比較することによって検証処理を行って検証結果画面を作成して情報処理装置10へ送信するように構成される。この場合、情報処理装置10は、サーバで生成された検証結果画面を取得し、例えば表示部15に表示することができる。このような構成とした場合であっても、本実施形態と同様の処理が可能であり、同様の効果が得られる。
【0061】
(実施形態2)
上述した実施形態1では、GUI画面中に検出したオブジェクトに対応付けてある処理命令がオブジェクトDB12aに登録してあるが、対象プログラムの実行環境によっては、オブジェクトに対応付けられている処理命令が公開されていない場合がある。この場合、検出したオブジェクトに対応付けてある処理命令を実行することができず、オブジェクトを操作した場合に表示対象となるGUI画面(遷移後のGUI画面)を生成することができない。そこで、本実施形態では、対象プログラムを実際に実行し、表示対象となったGUI画面を表示部15に表示し、表示したGUI画面中のオブジェクトを検出し、検出したオブジェクトをロボットアームによって実際に操作することにより、オブジェクトを操作した場合に表示対象となるGUI画面への画面遷移を実現し、画面遷移データを作成する情報処理装置について説明する。
【0062】
図11は実施形態2の情報処理装置の構成例を示すブロック図である。本実施形態の情報処理装置10は、
図1に示す実施形態1の情報処理装置10の構成に加えて、カメラ接続部17及びロボットアーム駆動部18を含む。実施形態1と同様の構成については説明を省略する。なお、本実施形態の情報処理装置10において、表示部15は、キャプチャ用表示部15a及び操作用表示部15bを含み、操作用表示部15bはタッチパネルで構成されている。
【0063】
カメラ接続部17には、例えばケーブルを介してカメラ17aが接続される。カメラ17aは、静止画又は動画等の画像データを取得し、取得した画像データを情報処理装置10へ出力する。カメラ接続部17は、カメラ17aから出力された画像データを取得する。情報処理装置10の制御部11は、カメラ17aから送出された画像データをカメラ接続部17を介して取得し、記憶部12に記憶させる。なお、カメラ接続部17は、カメラ17aとの間で無線通信できるように構成されていてもよい。
【0064】
ロボットアーム駆動部18には、ロボットアーム18bが接続されており、ロボットアーム18bの先端には、タッチパネルに対する操作が可能な手指部18aが取り付けられている。ロボットアーム駆動部18は、制御部11からの指示に従って、ロボットアーム18bの駆動処理を行い、手指部18aを操作用表示部15b上の任意の位置に移動させ、手指部18aによって任意の位置に対する操作を行う。手指部18aによる操作は、例えばタップ、ダブルタップ、スワイプ等を含む。
【0065】
上述した構成の本実施形態の情報処理装置10は、画面遷移DB12bを作成する際に、対象プログラムを実行することによって表示対象となるGUI画面をキャプチャ用表示部15a及び操作用表示部15bに逐次表示する。そして、情報処理装置10は、キャプチャ用表示部15aに表示されたGUI画面をカメラ17aによってキャプチャすることにより、GUI画面中のオブジェクトを検出する。また情報処理装置10は、操作用表示部15bに表示されたGUI画面に対して、ロボットアーム駆動部18によってロボットアーム18bを駆動することにより、操作用表示部15bの表示画面に対して手指部18aによる操作を行う。
【0066】
図12は実施形態2の画面遷移DB12bのレコードレイアウトの一例を示す説明図である。本実施形態の画面遷移DB12bは、
図2Bに示す実施形態1の画面遷移DB12bの構成に加えて、配置位置列を含む。配置位置列は、遷移前のGUI画面におけるオブジェクトの配置位置を示す情報を記憶する。オブジェクトの配置位置は、例えば表示部15(キャプチャ用表示部15a、操作用表示部15b)に表示されたGUI画面の表示領域の左上を原点として右方向をX軸、下方向をY軸とした座標において、オブジェクトの表示領域(例えば矩形領域)の左上及び右下の画素の座標値で表される。
【0067】
図13及び
図14は実施形態2の画面遷移DB12bの作成処理手順の一例を示すフローチャートである。
図13及び
図14に示す処理は、
図5及び
図6に示す処理において、S21,S22の間にS61を追加し、S26,S27の間にS62を追加し、S30の代わりにS63を追加し、S31,S32の間にS64を追加し、S34のYESとS35との間にS65を追加し、S36のYESとS37との間にS66を追加したものである。
図5及び
図6と同じ処理については説明を省略する。
【0068】
本実施形態の情報処理装置10では、制御部11は、画面遷移作成プログラムP1の起動に伴い、対象プログラムを実行した場合(S21)、対象プログラムの実行によって表示対象となるGUI画面を生成し、表示部15a,15bに表示する(S61)。制御部11は、キャプチャ用表示部15aに表示されたGUI画面をカメラ17aで撮影してキャプチャする(S22)。なお、制御部11は、スクリーンキャプチャ機能を用いてGUI画面をキャプチャしてもよい。
【0069】
キャプチャしたGUI画面と同一画面がない場合(S24:NO)、制御部11は、S25~S26の処理を実行し、GUI画面中に認識した各オブジェクトの配置位置を特定する(S62)。ここでは、制御部11は、キャプチャしたGUI画面の画像データに基づいて、GUI画面の表示領域において、各オブジェクトの領域の左上及び右下の画素の座標値を算出する。そして、制御部11は、各オブジェクトを画面遷移DB12bに登録する(S27)。本実施形態では、制御部11は、遷移前のGUI画面の名称に対応付けて、各オブジェクトのオブジェクト名及び配置位置を画面遷移DB12bに記憶する。
【0070】
なお、制御部11は、キャプチャしたGUI画面と同一画面がないと判断した場合(S24:NO)、以下の処理を実行してもよい。制御部11は、キャプチャしたGUI画面と、既に画面遷移DB12bに遷移前画面として登録してあるGUI画面との一致率(類似度)を算出する。そして、制御部11は、算出した一致率が所定値以上である場合、登録済みのGUI画面と同じ機能におけるGUI画面であると判断し、S25で現在のGUI画面を画面遷移DB12bに登録する際に、現在のGUI画面に、既に登録済みのGUI画面と同じ機能であることを示す情報を付加して画面遷移DB12bに登録してもよい。例えば、対象プログラムがナビゲーションシステムに関するプログラムである場合、「ナビ機能」と「オーディオ機能」とでは、例えば背景色やアイコンの色テーマを分けて設計されていることがある。また、背景色のみならず、アイコンの形状や色味を異ならせる場合がある。対象プログラムが「複合機制御プログラム」である場合、「プリンタ機能」と「コピー機能」とでは背景色やアイコンの色テーマが異なるように設計されていることがある。このような対象プログラムでは、対象プログラムに含まれる機能を大きく分け、その機能毎にGUI画面をグループ化し、後にグループ別の検証を実行することが行われる場合がある。例えば
図7に示すHOME画面上のオブジェクトA,B,Cのうち、オブジェクトA,Bへの操作に対して遷移する画面は「機能α(実際にはナビ機能)」に関する画面、オブジェクトCへの操作に対して遷移する画面は「機能β(実際にはオーディオ機能)のようにグループ化できる。これにより、後の検証において「機能β」を優先的に検証する、といった機能別の検証が可能になる。
【0071】
本実施形態の制御部11は、S29の処理後、特定したオブジェクトの配置位置に基づいてロボットアーム18bを駆動し(S63)、操作用表示部15bに表示中のGUI画面に対して、特定したオブジェクトに対する操作を手指部18aにて行う(S31)。ここでは、制御部11は、特定したオブジェクトの配置位置を画面遷移DB12bから取得し、オブジェクトの配置位置に基づいてロボットアーム駆動部18にてロボットアーム18bを駆動させて、操作用表示部15bに表示してあるGUI画面中のオブジェクトに対向する位置に手指部18aを移動させ、更に、ロボットアーム駆動部18によってロボットアーム18bを駆動させて、GUI画面中のオブジェクトに対して手指部18aによるタップ操作を行う。なお、キャプチャ用表示部15aに表示されるGUI画面と、操作用表示部15bに表示されるGUI画面とが異なるサイズである場合、画面サイズの比率に基づいて、キャプチャしたGUI画面から算出されたオブジェクトの配置位置を、操作用表示部15bに表示されているGUI画面中のオブジェクトの配置位置に変換する処理を行えばよい。これにより、操作用表示部15bに表示中のGUI画面において、キャプチャしたGUI画面中のオブジェクトと同じオブジェクトに対して操作を行うことが可能となる。
【0072】
制御部11は、GUI画面中のオブジェクトが操作されることによって次に表示対象となるGUI画面を生成して表示部15a,15bに表示する(S64)。そして、制御部11は、キャプチャ用表示部15aに表示されたGUI画面をキャプチャし(S32)、キャプチャしたGUI画面を、遷移前のGUI画面と、操作対象としたオブジェクトとに対応付けて遷移後画面として画面遷移DB12bに記憶する(S33)。
【0073】
また制御部11は、現在のGUI画面から遷移する下層のGUI画面に操作回数0のオブジェクトがあると判断した場合(S34:YES)、遷移後のGUI画面に遷移するためのオブジェクトの配置位置に基づいてロボットアーム18bを駆動し(S65)、操作用表示部15bに表示中のGUI画面に対して、当該オブジェクトに対するタップ操作を手指部18aにて行って、遷移後のGUI画面に遷移する(S35)。ここでも制御部11は、遷移後のGUI画面に遷移するためのオブジェクトの配置位置を画面遷移DB12bから取得し、オブジェクトの配置位置に基づいてロボットアーム18bを駆動させて、操作用表示部15bに表示してあるGUI画面中の当該オブジェクトに対向する位置に手指部18aを移動させ、更に、当該オブジェクトに対するタップ操作を手指部18aにて行う。これにより、現在のGUI画面中の任意のオブジェクトを操作することができ、任意のGUI画面に遷移させることができる。
【0074】
また制御部11は、現在のGUI画面の遷移前のGUI画面があると判断した場合(S36:YES)、Returnオブジェクトの配置位置に基づいてロボットアーム18bを駆動し(S66)、操作用表示部15bに表示中のGUI画面に対して、Returnオブジェクトに対するタップ操作を手指部18aにて行って、遷移前のGUI画面に遷移する(S37)。ここでも制御部11は、Returnオブジェクトの配置位置を画面遷移DB12bから取得し、Returnオブジェクトの配置位置に基づいてロボットアーム18bを駆動させて、操作用表示部15bに表示してあるGUI画面中のReturnオブジェクトに対向する位置に手指部18aを移動させ、更に、Returnオブジェクトに対するタップ操作を手指部18aにて行う。これにより、現在のGUI画面中のReturnオブジェクトを操作することができ、現在のGUI画面の遷移前のGUI画面に戻すことができる。
【0075】
上述した処理により、GUI画面中のオブジェクトに対応付けられている処理命令が不明である場合であっても、実際にGUI画面を表示してGUI画面中のオブジェクトを物理的に操作することにより、当該オブジェクトが操作された場合の対象プログラムの処理を実行することができる。よって、例えば各オブジェクトに対応付けられている処理命令が公開されていないOSを採用している機器用のGUIプログラムについても、GUIプログラムを実行することによる画面遷移DB12bの自動作成が可能である。なお、本実施形態では、GUI画面中のオブジェクトに対して手指部18aによるタップ操作を行う構成を例に説明したが、この構成に限定されず、また、オブジェクト毎に操作の種類が異なる構成でもよい。例えば、各オブジェクトに対応付けて、各オブジェクトに行うべき操作の種類を登録しておき、制御部11は、各オブジェクトに対する操作を行う際に、操作の種類を特定し、特定した操作の種類に応じた動作をロボットアーム18bに行わせることにより、各オブジェクトに対して各種類の操作を行うことができる。
【0076】
本実施形態の情報処理装置10は、上述した処理により、例えば初めてリリースされた対象プログラムに基づいて正解の画面遷移DB12bを作成でき、最新の対象プログラムに基づいて更新後の画面遷移DB12bを作成できる。また、本実施形態の情報処理装置10は、
図9に示す処理の実行が可能であり、正解の画面遷移DB12b及び更新後の画面遷移DB12bに基づいて、最新の対象プログラムに対する動作検証を行うことができる。
【0077】
本実施形態では、キャプチャ用表示部15a及び操作用表示部15bを各別に設けてある構成を例に説明したが、1つの表示部15であってもよい。即ち、表示部15に表示されたGUI画面をカメラ17aがキャプチャし、また、表示部15に表示されたGUI画面に対して手指部18aが操作を行う構成でもよい。
【0078】
(実施形態3)
上述した実施形態1~2では、正解の画面遷移データ(遷移後のGUI画面)との比較結果に基づいて検証結果(OK/NG)を判断していた。本実施形態では、遷移後のGUI画面の状態に加えて、音信号の出力状態に基づいて検証結果を判断する情報処理装置について説明する。従って、本実施形態では、遷移後のGUI画面が正解の画面に一致する(類似度が閾値以上である)場合であっても、画面の遷移前後における音信号の出力状態が正解の状態でなければ、検証結果はNGと判断される。本実施形態の情報処理装置10は、
図1に示す実施形態1の情報処理装置10と同様の構成を有するので、構成についての説明は省略する。
【0079】
図15は実施形態3の画面遷移DB12bのレコードレイアウトの一例を示す説明図である。本実施形態の画面遷移DB12bは、
図2Bに示す実施形態1の画面遷移DB12bの構成に加えて、遷移前のGUI画面における音信号の出力状態を示す情報を記憶する音情報列と、遷移後のGUI画面における音信号の出力状態を示す情報を記憶する音情報列とを含む。音情報は、例えば出力音の有無、音量、画面遷移してから音信号が出力されるまでの時間等に関する情報を含む。
【0080】
図16及び
図17は実施形態3の画面遷移DB12bの作成処理手順の一例を示すフローチャートである。
図16及び
図17に示す処理は、
図5及び
図6に示す処理において、S22,S23の間にS71を追加し、S25の代わりにS72を追加し、S32,S33の間にS73を追加し、S35の後にS74を追加したものである。
図5及び
図6と同じ処理については説明を省略する。
【0081】
本実施形態の情報処理装置10では、制御部11は、画面遷移作成プログラムP1の起動に伴い、対象プログラムを実行した場合(S21)、対象プログラムの実行によって表示対象となるGUI画面をキャプチャする(S22)と共に、出力対象となる音をキャプチャして音情報を取得する(S71)。例えば制御部11は、出力音の有無及び音量を取得する。なお、制御部11は、出力された音が、音声であるか音楽であるか等、音の種類を取得してもよく、音声である場合には音声認識機能によって出力内容を取得してもよい。また制御部11は、出力された音を録音して録音データを取得してもよい。
【0082】
制御部11は、キャプチャしたGUI画面(現在のGUI画面)と同一画面がないと判断した場合(S24:NO)、現在のGUI画面を遷移前画面として音情報と共に画面遷移DB12bに登録する(S72)。これにより、対象プログラムを実行することによって表示対象となったGUI画面に加えて、当該GUI画面の表示中の出力音の状態を示す音情報を登録することができる。
【0083】
また制御部11は、S29で特定したオブジェクトを操作することによって表示対象となったGUI画面をキャプチャする(S32)と共に、出力音をキャプチャして音情報を取得する(S73)。そして制御部11は、現在のGUI画面を遷移後画面として音情報と共に、遷移前のGUI画面と、操作対象としたオブジェクトと、オブジェクトの操作回数とに対応付けて画面遷移DB12bに記憶する(S33)。
【0084】
また制御部11は、現在のGUI画面から遷移する下層のGUI画面に操作回数0のオブジェクトがあると判断した場合(S34:YES)、遷移後のGUI画面に遷移し(S35)、遷移後のGUI画面における出力音をキャプチャして音情報を取得する(S74)。この場合も、制御部11は、遷移前のGUI画面と、操作対象としたオブジェクトと、オブジェクトの操作回数とに対応付けて、遷移後画面として現在のGUI画面及び音情報を画面遷移DB12bに記憶する(S33)。上述した処理により、現在のGUI画面をキャプチャする際に同時に出力音をキャプチャすることにより、オブジェクトの操作による画面遷移だけでなく出力音の遷移状態もキャプチャできる。
【0085】
本実施形態の情報処理装置10は、上述した処理により、例えば初めてリリースされた対象プログラムに基づいて正解の画面遷移DB12bを作成でき、最新の対象プログラムに基づいて更新後の画面遷移DB12bを作成できる。また、本実施形態の情報処理装置10は、
図9に示す処理の実行が可能であり、正解の画面遷移DB12b及び更新後の画面遷移DB12bに基づいて、最新の対象プログラムに対する動作検証を行うことができる。なお、本実施形態では、
図9の処理において、S42では
図16及び
図17の処理を行い、S43で読み出される画面遷移データには、遷移前のGUI画面の表示中における音情報と、遷移後のGUI画面の表示中における音情報とが含まれる。また、
図9の処理において、本実施形態の制御部11は、S44で、正解の遷移後のGUI画面と共に、このGUI画面の表示中の音情報(正解の音情報)を読み出す。そして、制御部11は、S45で、S43で読み出した画面遷移データに含まれる遷移後のGUI画面及び音情報を、正解の遷移後のGUI画面及び音情報と比較し、検証結果を判断する。例えば制御部11は、比較対象の音情報において、出力音の有無が一致するか否かを判断し、出力音がある場合には音量が一致する(音量の差分が閾値未満である)か否かを判断する。制御部11は、比較対象の音情報が共に出力音なしである場合、遷移後の音情報は正解の音情報である(検証結果:OK)と判断し、一方が出力音ありで他方が出力音なしである場合、遷移後の音情報は正解の音情報でない(検証結果:NG)と判断する。また、制御部11は、比較対象の音情報が共に出力音ありである場合、比較対象の音情報における音量を比較し、音量が一致する場合、遷移後の音情報は正解の音情報である(検証結果:OK)と判断し、音量が一致しない場合、遷移後の音情報は正解の音情報でない(検証結果:NG)と判断する。なお、比較対象の音情報に出力内容が含まれる場合、制御部11は、出力内容が一致するか否かに基づいて、検証結果を判断してもよい。例えば制御部11は、比較対象の音情報における出力内容に同じキーワードが含まれる場合、遷移後の音情報は正解の音情報である(検証結果:OK)と判断し、出力内容に含まれるキーワードが異なる場合、遷移後の音情報は正解の音情報でない(検証結果:NG)と判断してもよい。
【0086】
上述した処理により、本実施形態では、検証結果がNGである状態として、出力されるべき音声が出力されないNo sound状態の発生を検証できる。これにより、遷移後のGUI画面が正解の画面に一致する(類似度が閾値以上である)場合であっても、出力される音情報が正解の音情報に一致しない場合には、検証結果NGと判断できる。このように、GUI画面の遷移状態だけでなく音の出力状態に基づいて、対象プログラムの実行による遷移状態の適否を検証することにより、より精度の高い動作検証処理を実現できる。
【0087】
上述した実施形態1~3では、現在のGUI画面において操作可能なオブジェクトを操作することにより画面遷移データを作成する構成である。また、各オブジェクトには優先順位が設定されており、優先順位に従った順序で操作して画面遷移データを効率よく作成することができる。このほかに、例えば、各オブジェクトに対して操作条件を設定しておき、操作条件を満たす場合に各オブジェクトを操作して画面遷移データを作成する構成としてもよい。例えば、各オブジェクトの操作条件として、複数のオブジェクトの同時操作、GUI画面の表示から所定時間における操作禁止等を設定しておくことにより、画面遷移データの作成対象とするGUI画面の範囲(検証範囲)を適切にコントロールすることができる。よって、画面構成が複雑であるGUIプログラムに対する動作検証においても、優先順位の高いGUI画面から順に画面遷移データを効率よく作成することができ、動作検証の高速化及び効率化が可能となる。
【0088】
図18はオブジェクトDB12aの変形例を示す説明図である。GUI画面に表示されるオブジェクトは、GUI画面の種類(機能の種類)に応じて異なる処理命令が割り当てられることがある。
図18Bは、AMラジオの聴取中のGUI画面例と、CD、SDカード等の記録メディアからの音楽の再生中のGUI画面例とを示す。AMラジオの聴取中のGUI画面と、音楽の再生中のGUI画面とは同じ構成を有しており、操作可能なボタンとしてオブジェクトB1~B4が設けられている。しかし、例えばオブジェクトB3には、AMラジオのGUI画面ではTUNE UP(チャンネル数を増加させて聴取可能なチャンネルを検索する処理)の処理命令が割り当てられており、音楽再生のGUI画面ではTRACK UP(次の音楽を再生する処理)の処理命令が割り当てられている。よって、GUI画面中のオブジェクトを検出した場合に、制御部11は、GUI画面の種類を判別し、判別した種類に応じた処理命令を特定することにより、各GUI画面中のオブジェクトに対応付けられている処理命令を適切に特定できる。GUI画面の種類は、例えばGUI画面中のキーワードをOCR等で抽出することにより判別してもよい。
【0089】
図18AのオブジェクトDB12aを用いる場合、例えば
図6中のS30で、制御部11は、現在のGUI画面に含まれるキーワードを抽出し、抽出したキーワード及びオブジェクト名に基づいて、当該キーワードが含まれるGUI画面において、各オブジェクトに対応付けられている処理命令をオブジェクトDB12aから特定することができる。このような構成とした場合、同一のオブジェクトに対して、各オブジェクトに割り当てられている機能をGUI画面毎に切り替えることができる。よって、1つのオブジェクトに対して複数の処理命令を割り当てることができるので、使用されるオブジェクトの種類を削減することができ、操作性の高いGUI画面の提供が可能となる。
【0090】
各実施形態に記載した事項は相互に組み合わせることが可能である。また、特許請求の範囲に記載した独立請求項及び従属請求項は、引用形式に関わらず全てのあらゆる組み合わせにおいて、相互に組み合わせることが可能である。さらに、特許請求の範囲には他の2以上のクレームを引用するクレームを記載する形式(マルチクレーム形式)を用いているが、これに限るものではない。マルチクレームを少なくとも一つ引用するマルチクレーム(マルチマルチクレーム)を記載する形式を用いて記載しても良い。
【0091】
今回開示された実施形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0092】
10 情報処理装置
11 制御部
12 記憶部
13 通信部
14 入力部
15 表示部
17 カメラ接続部
18 ロボットアーム駆動部
M 学習モデル
12a オブジェクトDB
12b 画面遷移DB
【要約】
【課題】対象プログラムの画面遷移データを適宜自動作成し、迅速なテスト実施を実現することが可能なプログラム等を提供する。
【解決手段】コンピュータは、GUI(Graphical User Interface)画面の表示を伴う対象プログラムを実行する。また、コンピュータは、対象プログラムの実行により表示されるGUI画面に含まれる操作可能なオブジェクトの種別を検知し、検知したオブジェクトが操作された場合に表示される画面の遷移に関するデータを取得する。そして、コンピュータは、遷移前のGUI画面と、該GUI画面中のオブジェクトの種別と、該オブジェクトが操作された場合の画面の遷移に関するデータとを対応付けて、対象プログラムの画面遷移データを作成する。
【選択図】
図1