(57)【要約】【課題】画面の同一性の判別の誤りを少ない稼働で修正可能とすること。【解決手段】画面判別装置は、アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定部と、前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付部と、前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第１の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第２の画面が有れば、前記第１の画面と前記第２の画面とが同一の画面であると判定する再判定部と、を有する。【選択図】図５
2019204265.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定部と、
前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付部と、
前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第１の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第２の画面が有れば、前記第１の画面と前記第２の画面とが同一の画面であると判定する再判定部と、
を有することを特徴とする画面判別装置。
【請求項２】
前記再判定部は、前記第１の画面と前記第２の画面とが同一の画面であると判定する場合には、前記第１の画面を、前記自動的な操作を再実行した際の画面遷移における前記遷移済みの画面には含めない、
ことを特徴とする請求項１記載の画面判別装置。
【請求項３】
前記再判定部は、前記第２の画面が無ければ、前記第１の画面を、前記自動的な操作を再実行した際の前記遷移済みの画面に含める、
ことを特徴とする請求項１又は２記載の画面判別装置。
【請求項４】
前記条件は、ＵＲＬ、ＤＯＭ構造、画面のタイトル、又は画面に含まれるテキストに基づく条件である、
ことを特徴とする請求項１乃至３いずれか一項記載の画面判別装置。
【請求項５】
アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定手順と、
前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付手順と、
前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第１の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第２の画面が有れば、前記第１の画面と前記第２の画面とが同一の画面であると判定する再判定手順と、
をコンピュータが実行することを特徴とする画面判別方法。
【請求項６】
アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定手順と、
前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付手順と、
前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第１の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第２の画面が有れば、前記第１の画面と前記第２の画面とが同一の画面であると判定する再判定手順と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面判別装置、画面判別方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ニーズに合ったサービスを迅速に提供するため、サービスを短いサイクルで提供する開発スタイルが増加しており、それに伴いソフトウェアテストの頻度も増加している。このような中、Ｗｅｂアプリケーションにおいて、機能テストにおける画面遷移テストに稼働がかかることが問題となっている。機能テストにおける画面遷移テストは、機能テストの中でも、「クライアントサイドからのインタラクションに対し、クライアントサイドに表示される画面から、仕様通りに実装されているかどうかを確認することができる機能に対するテスト」とここでは定義する。機能テストにおける画面遷移テストに稼働がかかる理由としては、クライアントサイドからのインタラクションとして、画面に有るリンクやボタンをクリックしたり、フォームに適切な値を入力したりするなどの人間の操作が求められるためである。
【０００３】
このような画面遷移テストを自動化し、稼働削減を狙う方法として、テストケースをスクリプトで記述することで、自動実行する手法が広く知られている。しかし、テストケースの作成には稼働がかかるため、繰り返し同一のテストを行わない場合や、既存機能に修正が入り、テストスクリプトが使用できなくなる場合はスクリプト化によって発生した稼働の元が取れなくなる可能性があり、スクリプト化の実施の判断は難しい。こういった問題を解決するために、テスト対象を解析して仕様情報を復元し、復元された仕様情報からテストスクリプトを自動生成する、リバースベースのテストスクリプト自動生成技術（以下、「リバースベーステスト技術」という。）が存在する（非特許文献１）。
【０００４】
リバースベーステスト技術では、テスト対象から自動で復元した仕様情報に基づいてテストが自動生成される。しかし、仕様情報を漏れなく復元することは技術的に困難であるため、復元できなかった箇所はユーザに教えてもらうことで漏れのない仕様情報の復元、テスト生成を目指す。具体的には、実際にＷｅｂアプリを自動操作して探索しながら（以下、「動的解析」という。）テスト対象の画面遷移情報を復元していく。続いて、復元された情報に基づいて、画面遷移図（仕様情報）と、図上の画面遷移に紐付けられたテストスクリプトを生成する。復元できなかった画面遷移（＝探索中に辿り着けなかった画面遷移）は画面遷移図上に示されるため、ユーザがそれを見て人手でその画面遷移を実現するスクリプトを作成し、当該スクリプトをリバースベーステスト技術に入力として与え、リバースベーステスト技術を再実行することで仕様情報を補う（以下、「スクリプト作成による仕様情報補助手法」という。）。
【０００５】
動的解析中は、到達した画面が過去に既に遷移したことがある画面かどうかを判別する必要がある。しかし、一般的に画面遷移テストを実施する際における１画面という単位はヒューリスティックに決まるものであり、明確な定義は存在しないため、マシンによって自動で判別することは難しい。
【０００６】
例えば、検索サイトのテストにおいて、検索結果が存在する画面と存在しない画面とで別の画面としてテストをしたいとする。この場合、検索結果が存在する場合も検索結果が存在しない場合も同じＵＲＬとなっているＷｅｂアプリケーションもあり、ＵＲＬで判別できるとは限らない。そこで、検索結果が存在する場合のＨＴＭＬファイルと検索結果が存在しない場合のＨＴＭＬファイルとのＤｉｆｆをとる（相違点を抽出する）方法も考えられる。しかし、この場合には検索結果が少しでも異なれば異なる画面として判別されてしまうため、検索結果が存在する場合において、検索した単語が異なれば、それらはすべて異なる画面として判別されてしまう。
【０００７】
こういった問題を解決するために、Tree Edit Distanceを用いた画面比較技術（非特許文献２）では、比較したい画面のＨＴＭＬのＤＯＭツリーが一致するまでノードの削除・挿入を行ったときの削除・挿入の回数で画面類似度を定義し、当該回数に対する閾値を設けて同一か否かを判別している。しかし、テスト対象によって適切な閾値は異なるため、正確な画面判別は難しい。例えば、広告など、アクセスする度に変化する要素を持つテスト対象では、閾値は高く設定するべきであると考えられるが、閾値が高すぎる場合、異なる画面を同一と判定してしまう可能性が高まる。
【０００８】
以上より、リバースベーステスト技術における動的解析中の画面判別を正確に行うことは難しいということがいえる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】"画面操作を伴うテストにおけるテストスクリプトの自動生成手法"、倉林 利行, 伊山 宗吉, 切貫 弘之, 丹野 治門、ソフトウェアエンジニアリングシンポジウム2017論文集 pp. 260-264、2017年9月
【非特許文献２】"A survey on tree edit distance and related problems",Philip Bille. 2004. Theoretical Computer Science. Volume 337, Issues 1-3, 9 June 2005, Pages 217-239.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
動的解析中の画面の判別に誤りがあった場合、リバースベーステスト技術によって復元される仕様情報には不足又は間違いが生じる。仕様情報に不足又は間違いが存在する場合、ユーザがそれを訂正することが求められるが、従来のスクリプト作成による仕様情報補助手法では、動的解析中の画面の判別の誤りによって生じた仕様情報の不足又は間違いを補足することができないといった課題が有る。
【００１１】
画面判別の誤りのパターンには以下の２通りが存在するが、各パターンについて当該課題が生じる理由について説明する。
・異なる画面を同一と判別してしまう場合
・同一の画面を異なると判別してしまう場合
上記２パターンについて、図１のような画面遷移となるテスト対象を例に用いて、スクリプト作成による仕様情報補助手法が適切に機能しなくなる理由について説明する。
【００１２】
［異なる画面を同一と判別してしまう場合］
図１のテスト対象において画面Ｂと画面Ｃとを同一と判別してしまう場合、復元される仕様情報は図２のようになる。図２では、画面ＡからＣに遷移する仕様情報が欠けている。これは、動的解析中に画面Ｃに遷移した場合でも、画面Ｂに遷移したと判別されてしまうため、画面Ｃに遷移したことにならないためである。このような場合、スクリプト作成による仕様情報補助手法を用いるために画面ＡからＣに遷移するスクリプトを作成しても、仕様情報を補足することができない。何故なら動的解析における画面の判別能力に変化はないため、作成したスクリプトによって画面Ｃに到達しても、動的解析において画面Ｃは画面Ｂと同一と判別されてしまうからである。
【００１３】
［同一の画面を異なると判定してしまう場合］
図１のテスト対象において、動的解析中に画面Ｂにアクセスする度に異なる画面と判別してしまう場合、復元される仕様情報は図３のようになる。図３では、画面ＡからＢの複数の遷移が独立して存在している。これは、動的解析中に画面Ｂに遷移する度に別の画面と判別されてしまったためである。しかし、スクリプト作成による仕様情報補助手法は、不足している仕様情報を補う手法であるため、余分に出てしまっている仕様情報を修正することはできない。
【００１４】
本課題を解決するためには、画面判別の精度を向上させる方法が考えられる。しかし、そもそも画面の同一性自体の定義が曖昧であり、一般的にはヒューリスティックに判別が行われる。そのため、マシンによって１００％の精度で画面を判別することは非常に困難であり、画面判別の精度を向上させても本課題を解決することは困難である。
【００１５】
本発明は、上記の点に鑑みてなされたものであって、画面の同一性の判別の誤りを少ない稼働で修正可能とすることを目的とする。
【課題を解決するための手段】
【００１６】
そこで上記課題を解決するため、画面判別装置は、アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定部と、前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付部と、前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第１の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第２の画面が有れば、前記第１の画面と前記第２の画面とが同一の画面であると判定する再判定部と、を有する。
【発明の効果】
【００１７】
画面の同一性の判別の誤りを少ない稼働で修正可能とすることができる。
【図面の簡単な説明】
【００１８】
【図１】テスト対象の仕様上の画面遷移の一例を示す図である。
【図２】異なる画面を同一と判別してしまう場合に復元される仕様情報を示す図である。
【図３】同一の画面を異なると判定してしまう場合に復元される仕様情報を示す図である。
【図４】本発明の実施の形態における仕様解析装置１０のハードウェア構成例を示す図である。
【図５】本発明の実施の形態における仕様解析装置１０の機能構成例を示す図である。
【図６】仕様解析装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【図７】本実施の形態の対象アプリに関する正しい仕様情報を示す図である。
【図８】異なると判別されるべき画面が同一であると判別された場合の仕様情報の例である。
【図９】同一であると判別されるべき画面が異なると判別された場合の仕様情報の例である。
【図１０】動的解析処理の処理手順の一例を説明するためのフローチャートである。
【図１１】ユーザ補助処理の処理手順の一例を説明するためのフローチャートである。
【図１２】遷移先の画面と画面特定条件との比較処理の処理手順の一例を説明するためのフローチャートである。
【図１３】対象特定条件に基づく各遷移済み画面と遷移先の画面との同一性の判定処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面に基づいて本発明の実施の形態を説明する。図４は、本発明の実施の形態における仕様解析装置１０のハードウェア構成例を示す図である。図４の仕様解析装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００２０】
仕様解析装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２１】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って仕様解析装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００２２】
図５は、本発明の実施の形態における仕様解析装置１０の機能構成例を示す図である。図５において、仕様解析装置１０は、動的解析部１１、仕様復元部１２、スクリプト生成部１３及びユーザ補助受付部１４等を有する。これら各部は、仕様解析装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。仕様解析装置１０は、また、条件リスト記憶部１５を利用する。条件リスト記憶部１５は、例えば、メモリ装置１０３若しくは補助記憶装置１０２、又は仕様解析装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００２３】
動的解析部１１は、テスト対象のＷｅｂアプリケーション（以下、「対象アプリ」という。）について動的解析を行う。具体的には、動的解析部１１は、対象アプリに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法（公知の画面判別技術）に基づいて判定する。
【００２４】
仕様復元部１２は、動的解析部１１により得られた画面遷移に基づいて、対象アプリの仕様情報（画面遷移図）を復元する。この際、仕様復元部１２は、画面の異同の判定結果をユーザが把握可能なように仕様情報を復元する。
【００２５】
スクリプト生成部１３は、仕様復元部１２によって復元された仕様情報に基づいてテストスクリプトを生成する。
【００２６】
ユーザ補助受付部１４は、仕様復元部１２によって復元された仕様情報を出力（例えば、表示）し、当該仕様情報に対する修正の入力をユーザから受け付ける。特に、画面の異同の判定結果に修正が有る場合、ユーザ補助受付部１４は、当該判定結果について修正対象とする画面を特定するための条件（以下、「画面特定条件」という。）の入力をユーザから受け付ける。ユーザ補助受付部１４は、受け付けた画面特定条件を条件リスト記憶部１５に記憶する。
【００２７】
ユーザ補助受付部１４が仕様情報の修正を受け付けた場合、動的解析部１１、仕様復元部１２及びスクリプト生成部１３は、それぞれの処理を再実行する。動的解析部１１は、再実行の際、上記所定の方法とは異なる方法で、画面の異同を判定する。具体的には、動的解析部１１は、再実行して得られる画面遷移において、遷移先の各画面について条件リスト記憶部１５に記憶されている画面特定条件に合致するか否かを判定し、当該画面特定条件に合致する第１の画面が有る場合に、遷移済みの画面の中に当該画面特定条件に合致する第２の画面が有れば、前記第１の画面と前記第２の画面とが同一の画面であると判定する。すなわち、画面特定条件に基づいて、動的解析部１１による画面の同一性の判定結果が修正される。
【００２８】
以下、仕様解析装置１０が実行する処理手順について説明する。図６は、仕様解析装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【００２９】
ステップＳ１０１において、動的解析部１１は、対象アプリについて動的解析処理を実行する。動的解析処理では、実際に対象アプリの画面を自動操作して画面遷移を発生させ、遷移先の画面の探索が再帰的に行われる。この際、遷移先の画面と遷移済みの画面との同一性が判定される。
【００３０】
続いて、仕様復元部１２は、動的解析処理において把握された画面遷移に基づいて、対象アプリに関する仕様情報（画面遷移図）を復元（生成）する（Ｓ１０２）。本実施の形態では、図７に示される仕様情報が、正しい仕様情報であるとする。
【００３１】
図７は、本実施の形態の対象アプリに関する正しい仕様情報を示す図である。図７では、対象アプリが検索サイトである例の仕様情報が示されている。この場合、対象アプリは、トップ画面である画面ｇ１において入力された単語で検索を行い、当該単語に該当する検索結果が有れば、検索結果が有ることを示す画面ｇ２を生成し、当該単語に該当する検索結果が無ければ、検索結果が無いことを示す画面ｇ３を生成する。
【００３２】
仮に、ステップＳ１０１において、異なると判別されるべき画面（例えば、画面ｇ２と画面ｇ３）が同一であると判別された場合、ステップＳ１０２において復元される仕様情報は、例えば、図８に示すようなものになる。
【００３３】
図８は、異なると判別されるべき画面が同一であると判別された場合の仕様情報の例である。図８では、画面ｇ３が、画面ｇ２と同一であると判定されている。換言すれば、検索結果が有る場合と無い場合とのそれぞれの画面は区別されていない。その結果、検索結果が無い場合の画面遷移が復元されていない。なお、本実施の形態では、画面ｇ２と同一であると判定された、画面ｇ４、ｇ５、ｇ３及びｇ６も、画面ｇ２に集約されずに、画面ｇ２と同一と判定されたことが分かるように、画面ｇ２とは別に仕様情報に含まれる。すなわち、画面ｇ４、ｇ５、ｇ３及びｇ６が画面ｇ２の下に配置されることによって、画面ｇ４、ｇ５、ｇ３及びｇ６が、画面ｇ２と同一であると判定されたことが表現されている。
【００３４】
また、ステップＳ１０１において、同一であると判別されるべき画面が異なると判別された場合、ステップＳ１０２において復元される仕様情報は、例えば、図９に示すようなものになる。
【００３５】
図９は、同一であると判別されるべき画面が異なると判別された場合の仕様情報の例である。図９において、画面ｇ４、ｇ５及びｇ６は、いずれも検索結果が有る場合の画面であり、対象アプリのテストとしては、画面ｇ２と同一の画面として判別されるべきである。しかし、ステップＳ１０１の動的解析処理において、これらが異なる画面であると判定されてしまうと、それぞれの画面に対する画面遷移が復元されてしまう。
【００３６】
続いて、スクリプト生成部１３は、動的解析処理の結果に基づいて、テストスクリプトを生成する（Ｓ１０３）。動的解析の結果に基づくテストスクリプトの生成は、公知の技術を用いて行われればよい。なお、テストスクリプトには、仕様情報が示す各画面遷移が実現されるように、各画面に対する操作命令が記述される。
【００３７】
続いて、ユーザ補助受付部１４は、ステップＳ１０２において復元された仕様情報（以下、「復元仕様情報」という。）に誤りが有るか否かについて、ユーザによる確認結果の入力を受け付ける（Ｓ１０４）。例えば、ユーザ補助受付部１４は、復元仕様情報と、復元仕様情報に対する誤りの有無をユーザから受け付けるためのボタン等を含む照会画面を表示装置１０６に表示する。ユーザは、照会画面に含まれる復元仕様情報を参照して、誤りの有無を確認する。復元仕様情報に誤りが無い場合、ユーザは、誤りが無いことを示す入力を照会画面に対して行う。この場合（Ｓ１０４でＮｏ）、図６の処理手順は終了する。
【００３８】
一方、復元仕様情報に誤りが有る場合、ユーザは、誤りが有ることを示す入力を照会画面に対して行う。この場合（Ｓ１０４でＹｅｓ）、ユーザ補助受付部１４は、ユーザ補助処理を実行する（Ｓ１０５）。ユーザ補助処理において、ユーザ補助受付部１４は、画面の異同の判定結果に修正を加えたい画面を特定するための画面特定条件の入力等をユーザから受け付ける。入力された画面特定条件は、条件リスト記憶部１５に記憶される。
【００３９】
続いて、ステップＳ１０１以降が再実行される。この際、ステップＳ１０１の動的解析処理において、ステップＳ１０５において条件リスト記憶部１５に記憶された画面特定条件に基づいて、画面の同一性の判定が補われる。その結果、ステップＳ１０２では、前回の動的解析処理とは異なった仕様情報が復元される。続いて、ステップＳ１０３以降が実行され、復元される仕様情報に誤りが無くなると（Ｓ１０４でＮｏ）、図６の処理手順は終了する。
【００４０】
続いて、Ｓ１０１の詳細について説明する。図１０は、動的解析処理の処理手順の一例を説明するためのフローチャートである。
【００４１】
図１０の処理手順は、ループＬ１−１によって囲まれている各ステップが、探索画面リストに含まれる画面ごとに処理が実行される。以下、ループＬ１−１において処理対象とされている画面を「対象画面」という。なお、探索画面リストには、初期状態において、動的解析部１１が初期ＵＲＬにアクセスすることで取得される１つの画面の画面データ（ＨＴＭＬ等）が含まれている。初期ＵＲＬとは、例えば、対象アプリの画面遷移において起点となる画面に対するＵＲＬであり、ユーザによって指定される。本実施の形態では、図７におけるトップ画面である画面ｇ１に対するＵＲＬが、初期ＵＲＬである。
【００４２】
ステップＳ２０１において、動的解析部１１は、対象画面に対する操作リストを作成する。例えば、対象画面において画面の遷移を発生させる画面要素（リンクやサブミットボタン等）の各ロケータについて操作内容を示す情報（以下、「操作情報」という。）を１要素とするリストが操作リストとして生成される。操作は、クリック等の操作である。ロケータは、操作の対象とされる画面要素の識別情報である。具体的には、対象画面が画面ｇ１（図７）である場合、画面ｇ１に対する入力値として複数の値が生成され、入力値ごとに、検索ボタンのクリックを示す操作情報が生成される。すなわち、入力値ごとに、異なる操作として扱われる。
【００４３】
続いて、動的解析部１１は、操作リストの要素（操作情報）ごとに、ループＬ１−２を実行する。操作リストの要素のうち、ループＬ１−２において処理対象とされている要素を「対象操作情報」という。
【００４４】
ステップＳ２０２において、動的解析部１１は、対象画面に対し、対象操作情報が示す操作を自動実行する。例えば、対象画面が画面ｇ１であれば、対象操作情報の入力値が画面ｇ１に入力されて、検索ボタンがクリックされる。その結果、画面遷移が発生し、動的解析部１１は、対象アプリからダウンロードされる遷移先の画面の画面データを取得する（Ｓ２０３）。
【００４５】
続いて、動的解析部１１は、遷移先の画面と画面特定条件との比較処理を実行する（Ｓ２０４）。すなわち、遷移先の画面の画面データが、いずれかの画面特定条件に合致するか否かが判定される。なお、画面特定条件は、図６のステップＳ１０５においてユーザによって入力され、条件リスト記憶部１５に記憶される情報である。したがって、条件リスト記憶部１５に１以上の画面特定条件が記憶されていない場合には、ステップＳ２０４は実行されなくてもよい。
【００４６】
画面特定条件が１つも無い場合、又は遷移先の画面の画面データがいずれの画面特定条件にも合致しない場合（Ｓ２０５でＮｏ）、動的解析部１１は、公知の画面判別技術を用いて、遷移済み画面リストに画面情報が含まれる各画面（以下、「遷移済み画面」という。）と、遷移先の画面との同一性（異同）を判定する（Ｓ２０６）。遷移済み画面リストとは、動的解析処理において既に遷移済みの画面の画面情報を要素とするリストであり、図１０の開始時には空である。なお、画面情報とは、画面データ（ＨＴＭＬ等）と、当該画面データに係る画面の遷移元の画面の識別情報等を含む情報である。
【００４７】
一方、遷移先の画面がいずれかの画面特定条件（以下、「対象特定条件」という。）に合致する場合（Ｓ２０５でＹｅｓ）、動的解析部１１は、対象特定条件に基づいて、遷移済み画面リストに画面情報が含まれる各遷移済み画面と、遷移先の画面との同一性（異同）を判定する（Ｓ２０７）。この場合、遷移済み画面の中に、対象特定条件に合致する画面の有無を判定することで、遷移先の画面と各遷移済み画面との同一性が判定される。すなわち、対象特定条件に合致する遷移済み画面は、遷移先の画面と同一であると判定される。なお、ステップＳ２０７の詳細については後述される。
【００４８】
ステップＳ２０６又はＳ２０７に続いて、動的解析部１１は、ステップＳ２０６又はＳ２０７の判定結果に基づいて処理を分岐させる（Ｓ２０８）。すなわち、ステップＳ２０６又はＳ２０７において、遷移先の画面がいずれの遷移済み画面とも異なると判定された場合（Ｓ２０８でＮｏ）、動的解析部１１は、遷移先の画面の画面情報を遷移済み画面リストに追加する（Ｓ２０９）。続いて、動的解析部１１は、遷移先の画面の画面データを探索画面リストに追加する（Ｓ２１０）。したがって、当該遷移先の画面が、ループＬ１−１における以降のループにおいて処理対象とされる。
【００４９】
一方、ステップＳ２０６又はＳ２０７において、遷移先の画面がいずれかの遷移済み画面（以下、「同一遷移済み画面」という。）と同一であると判定された場合（Ｓ２０８でＹｅｓ）、動的解析部１１は、遷移先の画面の画面情報を、同一遷移済み画面に対する同一画面リストに追加する（Ｓ２１１）。同一画面リストとは、遷移済み画面ごとに関連付けられる、当該遷移済み画面と同一であると判定された画面の画面情報を格納するリストである。
【００５０】
対象画面に対する操作リストに含まれる各要素についてループＬ１−２が終了すると、探索画面リストにおいて、処理対象とされていない画面データが処理対象とされ、ループＬ１−１が実行される。探索画面リスト内に処理対象とされていない画面データが無くなると、図１０の処理手順は終了する。
【００５１】
なお、図６のステップＳ１０２では、遷移済み画面リスト、及び各遷移済み画面に対する同一画面リスト等に基づいて、仕様情報（画面遷移図）が復元（生成）される。例えば、図８は、画面ｇ４、ｇ５、ｇ３及びｇ６のそれぞれの画面情報が、画面ｇ２に対する同一画面リストに含まれる場合に復元される仕様情報の例である。一方、図９は、各画面に対する同一画面リストが空である場合に復元される仕様情報の例である。
【００５２】
続いて、図６のステップＳ１０５の詳細について説明する。図１１は、ユーザ補助処理の処理手順の一例を説明するためのフローチャートである。
【００５３】
ステップＳ３０１において、ユーザ補助受付部１４は、画面の同一性の判定に対する誤りの有無の入力をユーザから受け付ける。例えば、ユーザ補助受付部１４が、当該誤りの有無をユーザに問い合わせる画面（以下「誤り照会画面」という。）を表示装置１０６に表示し、誤り照会画面を介して、画面の同一性の判定に対する誤りの有無の入力が受け付けられてもよい。
【００５４】
画面の同一性の判定に対する誤りが有ることが入力された場合（Ｓ３０２でＹｅｓ）、ユーザ補助受付部１４は、画面特定条件の入力をユーザから受け付ける（Ｓ３０３）。画面特定条件は、ＵＲＬ、ＤＯＭ構造、画面のタイトル、画面に含まれるテキスト等、様々な情報に基づく条件でよく、特定の条件に限定されないが、本実施の形態では、タイトルに基づく条件が画面特定条件とされる例について説明する。
【００５５】
例えば、図８に示されるような仕様情報が表示された場合、ユーザは、画面ｇ３についての画面の同一性の判定結果を修正したい（すなわち、画面ｇ３が、画面ｇ２と異なる画面であると判定されるようにしたい。）。ここで、画面ｇ３について、画面ｇ２と異なる特徴として、タイトルが「見つかりませんでした」に後方一致することが挙げられる。そこで、この場合、ユーザは、タイトルが「見つかりませんでした」に後方一致することを画面特定条件として入力する。例えば、ＣＰＵ１０４を動的解析部１１として機能させるプログラムが、当該条件を容易に解釈可能なように、以下のようなアサーション（以下「アサーションａ１」という。）が、画面特定条件として入力されてもよい。
「Assert.That(driver.getTile(), Does.EndWith("見つかりませんでした"))」
アサーションａ１は、ＮＵｎｉｔ形式で記述されたアサーションである。ここで、「driver.getTile()」は、タイトル名を取得する命令である。また、「Does.EndWith("見つかりませんでした")」は、取得されたタイトル名が、「見つかりませんでした」に後方一致するか否かの判定命令である。当該判定の結果が肯定的である場合、アサーションａ１は「Ｔｒｕｅ」を返却し、否定的である場合、「アサーションａ１」は、「Ｆａｌｓｅ」を返却する。したがって、動的解析部１１は、アサーションａ１に基づいて、画面のタイトルに「見つかりませんでした」という文字列が後方一致として存在するか否かを判定することで、画面の同一性を判定することになる。
【００５６】
又は、図９に示されるような仕様情報が表示された場合、ユーザは、画面ｇ４、ｇ５及びｇ６についての画面の同一性の判定結果を修正したい（すなわち、画面ｇ４、ｇ５及びｇ６が、画面ｇ２と同じ画面であると判定されるようにしたい。）。ここで、画面ｇ４、ｇ５及びｇ６について、画面ｇ２と共通な特徴として、タイトルが「見つかりました」に後方一致することが挙げられる。そこで、この場合、ユーザは、タイトルが「見つかりました」に後方一致することを画面特定条件として入力する。例えば、ＣＰＵ１０４を動的解析部１１として機能させるプログラムが、当該条件を容易に解釈可能なように、以下のようなアサーション（以下「アサーションａ２」という。）が、画面特定条件として入力されてもよい。
「Assert.That(driver.getTile(), Does.EndWith("見つかりました"))」
アサーションａ２は、アサーションａ１と同様に、ＮＵｎｉｔ形式で記述されたアサーションである。アサーションａ２は、画面から取得されたタイトル名が、「見つかりました」に後方一致する場合、Ｔｒｕｅを返却し、そうでない場合、「Ｆａｌｓｅ」を返却する。したがって、動的解析部１１は、アサーションａ２に基づいて、画面のタイトルに「見つかりました」という文字列が後方一致として存在するか否かを判定することで、画面の同一性を判定することになる。
【００５７】
続いて、ユーザ補助受付部１４は、ユーザによって入力された画面特定条件を、条件リスト記憶部１５に記憶する（Ｓ３０４）。
【００５８】
一方、画面の同一性の判定に対する誤りが有ることが入力されなかった場合（Ｓ３０２でＮｏ）、ユーザ補助受付部１４は、不足している画面遷移を発生させるためのスクリプトを、ユーザによる入力に応じて生成する（Ｓ３０５）。すなわち、画面遷移図に誤りが有り、その誤りが画面の同一性の判別に対するものでない場合、当該誤りは、画面遷移に不足が有るものであるからである。
【００５９】
続いて、図１０のステップＳ２０４の詳細について説明する。図１２は、遷移先の画面と画面特定条件との比較処理の処理手順の一例を説明するためのフローチャートである。図１２では、図１１において条件リスト記憶部１５に記憶される各画面特定条件が順番に処理対象とされてループＬ２が実行される。ループＬ２では、ステップＳ４０１が実行される。
【００６０】
ステップＳ４０１において、動的解析部１１は、遷移先の画面の画面データが、処理対象の画面特定条件に合致するか否かを判定する。具体的には、動的解析部１１は、対象条件としてのアサーション（例えば、アサーションａ１又はアサーションａ２）を実行し、その戻り値に基づいて遷移先の画面が当該画面特定条件に合致するか否かを判定する。すなわち、アサーションの戻り値がＴｒｕｅであれば、当該画面が当該画面特定条件に合致すると判定され、アサーションの戻り値がＦａｌｓｅであれば、当該画面が当該画面特定条件に合致しないと判定される。
【００６１】
遷移先の画面が当該画面特定条件に合致する場合（Ｓ４０１でＹｅｓ）、動的解析部１１は、ループＬ２から抜け、処理結果としてＴｒｕｅを返却する。Ｔｒｕｅは、遷移先の画面が、いずれかの画面特定条件に合致することを示す。この場合、当該画面特定条件が、図１０のステップＳ２０７における対象特定条件となる。
【００６２】
遷移先の画面の画面情報が対象条件に合致しない場合（Ｓ４０１でＮｏ）、動的解析部１１は、ループＬ２を継続する。遷移先の画面の画面情報が、全ての画面特定条件に当てはまらない場合、動的解析部１１は、処理結果としてＦａｌｓｅを返却する。Ｆａｌｓｅは、遷移先の画面がいずれの画面特定条件にも合致しないことを示す。
【００６３】
続いて、図１０のステップＳ２０７の詳細について説明する。図１３は、対象特定条件に基づく各遷移済み画面と遷移先の画面との同一性の判定処理の処理手順の一例を説明するためのフローチャートである。図１３では、遷移済み画面リストに含まれる各遷移済み画面が順番に処理対象とされてループＬ３が実行される。ループＬ３では、ステップＳ５０１が実行される。
【００６４】
ステップＳ５０１において、動的解析部１１は、処理対象の遷移済み画面の画面情報に含まれる画面データ（以下、「対象画面データ」という。）が、対象特定条件に合致するか否かを判定する。ここで、対象特定条件とは、図１２において、遷移先の画面の画面データが合致した画面特定条件である。すなわち、ステップＳ５０１では、対象画面データが、遷移先の画面の画面データと同じ画面特定条件に合致するか否かが判定される。
【００６５】
対象画面データが、対象特定条件に合致する場合（Ｓ５０１でＹｅｓ）、動的解析部１１は、処理対象の遷移済み画面と、遷移先の画面とが同一画面であると判定し、Ｔｒｕｅを返却する。一方、いずれの遷移済み画面の画面データについても、対象特定条件に合致しない場合（Ｓ５０２でＮｏ）、動的解析部１１は、遷移先の画面が、いずれの遷移済み画面とも異なると判定し、Ｆａｌｓｅを返却する。
【００６６】
ここで、最初に復元された仕様情報が、図８である場合について具体的に説明する。この場合、図６のＳ１０５において呼び出される図１１の処理手順において、上記したアサーションａ１が画面特定条件として条件リスト記憶部１５に記憶される。
【００６７】
その結果、改めて実行される動的解析処理（図１０）のステップＳ２０４（すなわち、図１２）においては、画面が遷移するたびに、遷移先の画面について、当該画面特定条件に合致するか否かが判定される。すなわち、遷移先の画面のタイトルが、「見つかりませんでした」に後方一致するか否かが判定される。図８の例では、遷移先の画面が画面ｇ３である際に、当該画面特定条件に合致すると判定される。そこで、図１０のステップＳ２０５における判定はＹｅｓとなり、当該画面特定条件を対象特定条件としてステップＳ２０７（すなわち、図１３）が実行される。ここで、図８の画面ｇ２が、遷移済み画面リストに含まれていたとする。画面ｇ２のタイトルは、「見つかりませんでした」に後方一致しないため、図１３において、画面ｇ３は、画面ｇ２とは異なる画面であると判定される。したがって、図１０のステップＳ２０８の判定はＮｏとなり、画面ｇ３の画面情報が、遷移済み画面リストに追加される。その結果、その後に実行される図６のステップＳ１０２において、画面ｇ３への遷移が、画面ｇ２への遷移とは異なる遷移として表現された仕様情報（画面遷移図）が復元（生成）される。すなわち、検索結果が無い場合の画面遷移が復元される。
【００６８】
一方、最初に復元された仕様情報が、図９である場合について具体的に説明する。この場合、図６のＳ１０５において呼び出される図１１の処理手順において、上記したアサーションａ２が画面特定条件として条件リスト記憶部１５に記憶される。
【００６９】
その結果、改めて実行される動的解析処理（図１０）のステップＳ２０４（すなわち、図１２）においては、画面が遷移するたびに、遷移先の画面について、当該画面特定条件に合致するか否かが判定される。すなわち、遷移先の画面のタイトルが、「見つかりました」に後方一致するか否かが判定される。図８の例では、遷移先の画面が画面ｇ２、ｇ４、ｇ５及びｇ６である際に、当該画面特定条件に合致すると判定される。そこで、これらの各画面が遷移先の画面である場合に、図１０のステップＳ２０５における判定はＹｅｓとなり、当該画面特定条件を対象特定条件としてステップＳ２０７（すなわち、図１３）が実行される。ここで、画面の遷移の早い順が、画面ｇ２、ｇ４、ｇ５、ｇ６の通りであるとする。この場合、遷移先の画面が、画面ｇ２である場合には、遷移済み画面リストには、対象特定条件に合致する遷移済み画面は含まれていない。したがって、図１０のステップＳ２０８の判定はＮｏとなり、画面ｇ２の画面情報が、遷移済み画面リストに追加される。一方、遷移先の画面が、画面ｇ４、ｇ５又はｇ６である場合には、対象特定条件に合致する画面ｇ２が遷移済み画面リストに含まれている。したがって、図１０のステップＳ２０８の判定はＹｅｓとなり、画面ｇ４、ｇ５及びｇ６の画面情報は、画面ｇ２の同一画面リストへ追加される。その結果、その後に実行される図６のステップＳ１０２において、画面ｇ４、ｇ５及びｇ６への遷移は、画面ｇ２への遷移とは同じ遷移として表現された仕様情報（画面遷移図）が復元（生成）される。
【００７０】
上述したように、本実施の形態によれば、動的解析中に他の画面と同一であると判定された画面も含めて全ての遷移先の画面を保存し、探索終了後に、画面の同一性の判定結果をユーザに提示して、修正対象とする画面を特定するための条件をユーザから受け付けることができる。その結果、再度の動的解析において、当該条件に基づいて画面の同一性の判定を補うことができる。したがって、画面の同一性の判別の誤りを少ない稼働で修正可能とすることができ、ひいては、過不足のないテストスクリプトを生成できるようになる。
【００７１】
なお、本実施の形態は、Ｗｅｂアプリケーション以外のアプリケーションの画面遷移に関して適用されてもよい。
【００７２】
なお、本実施の形態において、仕様解析装置１０は、画面判別装置の一例である。動的解析部１１は、判定部及び再判定部の一例である。ユーザ補助受付部１４は、受付部の一例である。
【００７３】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７４】
１０          仕様解析装置
１１          動的解析部
１２          仕様復元部
１３          スクリプト生成部
１４          ユーザ補助受付部
１５          条件リスト記憶部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
Ｂ            バス
【図１】
2019204265.tif 000003
【図２】
2019204265.tif 000004
【図３】
2019204265.tif 000005
【図４】
2019204265.tif 000006
【図５】
2019204265.tif 000007
【図６】
2019204265.tif 000008
【図７】
2019204265.tif 000009
【図８】
2019204265.tif 000010
【図９】
2019204265.tif 000011
【図１０】
2019204265.tif 000012
【図１１】
2019204265.tif 000013
【図１２】
2019204265.tif 000014
【図１３】
2019204265.tif 000015