【文献】
堀旭宏ほか,Webアプリケーションに対する,画像比較に基づいた回帰テスト結果自動合否判定,情報処理学会研究報告 [online],情報処理学会,2016年,第2016-SE-194巻,第10号,[検索日 2019.06.19], pp.1−8,ISSN 2188-8825, インターネット <URL: https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=1
(58)【調査した分野】(Int.Cl.,DB名)
アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定部と、
前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付部と、
前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第1の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第2の画面が有れば、前記第1の画面と前記第2の画面とが同一の画面であると判定する再判定部と、
を有することを特徴とする画面判別装置。
前記再判定部は、前記第1の画面と前記第2の画面とが同一の画面であると判定する場合には、前記第1の画面を、前記自動的な操作を再実行した際の画面遷移における前記遷移済みの画面には含めない、
ことを特徴とする請求項1記載の画面判別装置。
アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定手順と、
前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付手順と、
前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第1の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第2の画面が有れば、前記第1の画面と前記第2の画面とが同一の画面であると判定する再判定手順と、
をコンピュータが実行することを特徴とする画面判別方法。
アプリケーションに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法に基づき判定する判定手順と、
前記異同の判定結果を出力し、前記判定結果について修正対象とする画面を特定するための条件の入力を受け付ける受付手順と、
前記アプリケーションに関して表示される画面の自動的な操作を再実行して画面遷移を発生させ、遷移先の各画面について前記条件に合致するか否かを判定し、当該条件に合致する第1の画面が有る場合に、遷移済みの画面の中に当該条件に合致する第2の画面が有れば、前記第1の画面と前記第2の画面とが同一の画面であると判定する再判定手順と、
をコンピュータに実行させることを特徴とするプログラム。
【背景技術】
【0002】
近年、ニーズに合ったサービスを迅速に提供するため、サービスを短いサイクルで提供する開発スタイルが増加しており、それに伴いソフトウェアテストの頻度も増加している。このような中、Webアプリケーションにおいて、機能テストにおける画面遷移テストに稼働がかかることが問題となっている。機能テストにおける画面遷移テストは、機能テストの中でも、「クライアントサイドからのインタラクションに対し、クライアントサイドに表示される画面から、仕様通りに実装されているかどうかを確認することができる機能に対するテスト」とここでは定義する。機能テストにおける画面遷移テストに稼働がかかる理由としては、クライアントサイドからのインタラクションとして、画面に有るリンクやボタンをクリックしたり、フォームに適切な値を入力したりするなどの人間の操作が求められるためである。
【0003】
このような画面遷移テストを自動化し、稼働削減を狙う方法として、テストケースをスクリプトで記述することで、自動実行する手法が広く知られている。しかし、テストケースの作成には稼働がかかるため、繰り返し同一のテストを行わない場合や、既存機能に修正が入り、テストスクリプトが使用できなくなる場合はスクリプト化によって発生した稼働の元が取れなくなる可能性があり、スクリプト化の実施の判断は難しい。こういった問題を解決するために、テスト対象を解析して仕様情報を復元し、復元された仕様情報からテストスクリプトを自動生成する、リバースベースのテストスクリプト自動生成技術(以下、「リバースベーステスト技術」という。)が存在する(非特許文献1)。
【0004】
リバースベーステスト技術では、テスト対象から自動で復元した仕様情報に基づいてテストが自動生成される。しかし、仕様情報を漏れなく復元することは技術的に困難であるため、復元できなかった箇所はユーザに教えてもらうことで漏れのない仕様情報の復元、テスト生成を目指す。具体的には、実際にWebアプリを自動操作して探索しながら(以下、「動的解析」という。)テスト対象の画面遷移情報を復元していく。続いて、復元された情報に基づいて、画面遷移図(仕様情報)と、図上の画面遷移に紐付けられたテストスクリプトを生成する。復元できなかった画面遷移(=探索中に辿り着けなかった画面遷移)は画面遷移図上に示されるため、ユーザがそれを見て人手でその画面遷移を実現するスクリプトを作成し、当該スクリプトをリバースベーステスト技術に入力として与え、リバースベーステスト技術を再実行することで仕様情報を補う(以下、「スクリプト作成による仕様情報補助手法」という。)。
【0005】
動的解析中は、到達した画面が過去に既に遷移したことがある画面かどうかを判別する必要がある。しかし、一般的に画面遷移テストを実施する際における1画面という単位はヒューリスティックに決まるものであり、明確な定義は存在しないため、マシンによって自動で判別することは難しい。
【0006】
例えば、検索サイトのテストにおいて、検索結果が存在する画面と存在しない画面とで別の画面としてテストをしたいとする。この場合、検索結果が存在する場合も検索結果が存在しない場合も同じURLとなっているWebアプリケーションもあり、URLで判別できるとは限らない。そこで、検索結果が存在する場合のHTMLファイルと検索結果が存在しない場合のHTMLファイルとのDiffをとる(相違点を抽出する)方法も考えられる。しかし、この場合には検索結果が少しでも異なれば異なる画面として判別されてしまうため、検索結果が存在する場合において、検索した単語が異なれば、それらはすべて異なる画面として判別されてしまう。
【0007】
こういった問題を解決するために、Tree Edit Distanceを用いた画面比較技術(非特許文献2)では、比較したい画面のHTMLのDOMツリーが一致するまでノードの削除・挿入を行ったときの削除・挿入の回数で画面類似度を定義し、当該回数に対する閾値を設けて同一か否かを判別している。しかし、テスト対象によって適切な閾値は異なるため、正確な画面判別は難しい。例えば、広告など、アクセスする度に変化する要素を持つテスト対象では、閾値は高く設定するべきであると考えられるが、閾値が高すぎる場合、異なる画面を同一と判定してしまう可能性が高まる。
【0008】
以上より、リバースベーステスト技術における動的解析中の画面判別を正確に行うことは難しいということがいえる。
【発明を実施するための形態】
【0019】
以下、図面に基づいて本発明の実施の形態を説明する。
図4は、本発明の実施の形態における仕様解析装置10のハードウェア構成例を示す図である。
図4の仕様解析装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、インタフェース装置105、表示装置106、及び入力装置107等を有する。
【0020】
仕様解析装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0021】
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って仕様解析装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【0022】
図5は、本発明の実施の形態における仕様解析装置10の機能構成例を示す図である。
図5において、仕様解析装置10は、動的解析部11、仕様復元部12、スクリプト生成部13及びユーザ補助受付部14等を有する。これら各部は、仕様解析装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。仕様解析装置10は、また、条件リスト記憶部15を利用する。条件リスト記憶部15は、例えば、メモリ装置103若しくは補助記憶装置102、又は仕様解析装置10にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【0023】
動的解析部11は、テスト対象のWebアプリケーション(以下、「対象アプリ」という。)について動的解析を行う。具体的には、動的解析部11は、対象アプリに関して表示される画面の自動的な操作を実行して画面遷移を発生させ、遷移先の各画面について遷移済みの各画面との異同を所定の方法(公知の画面判別技術)に基づいて判定する。
【0024】
仕様復元部12は、動的解析部11により得られた画面遷移に基づいて、対象アプリの仕様情報(画面遷移図)を復元する。この際、仕様復元部12は、画面の異同の判定結果をユーザが把握可能なように仕様情報を復元する。
【0025】
スクリプト生成部13は、仕様復元部12によって復元された仕様情報に基づいてテストスクリプトを生成する。
【0026】
ユーザ補助受付部14は、仕様復元部12によって復元された仕様情報を出力(例えば、表示)し、当該仕様情報に対する修正の入力をユーザから受け付ける。特に、画面の異同の判定結果に修正が有る場合、ユーザ補助受付部14は、当該判定結果について修正対象とする画面を特定するための条件(以下、「画面特定条件」という。)の入力をユーザから受け付ける。ユーザ補助受付部14は、受け付けた画面特定条件を条件リスト記憶部15に記憶する。
【0027】
ユーザ補助受付部14が仕様情報の修正を受け付けた場合、動的解析部11、仕様復元部12及びスクリプト生成部13は、それぞれの処理を再実行する。動的解析部11は、再実行の際、上記所定の方法とは異なる方法で、画面の異同を判定する。具体的には、動的解析部11は、再実行して得られる画面遷移において、遷移先の各画面について条件リスト記憶部15に記憶されている画面特定条件に合致するか否かを判定し、当該画面特定条件に合致する第1の画面が有る場合に、遷移済みの画面の中に当該画面特定条件に合致する第2の画面が有れば、前記第1の画面と前記第2の画面とが同一の画面であると判定する。すなわち、画面特定条件に基づいて、動的解析部11による画面の同一性の判定結果が修正される。
【0028】
以下、仕様解析装置10が実行する処理手順について説明する。
図6は、仕様解析装置10が実行する処理手順の一例を説明するためのフローチャートである。
【0029】
ステップS101において、動的解析部11は、対象アプリについて動的解析処理を実行する。動的解析処理では、実際に対象アプリの画面を自動操作して画面遷移を発生させ、遷移先の画面の探索が再帰的に行われる。この際、遷移先の画面と遷移済みの画面との同一性が判定される。
【0030】
続いて、仕様復元部12は、動的解析処理において把握された画面遷移に基づいて、対象アプリに関する仕様情報(画面遷移図)を復元(生成)する(S102)。本実施の形態では、
図7に示される仕様情報が、正しい仕様情報であるとする。
【0031】
図7は、本実施の形態の対象アプリに関する正しい仕様情報を示す図である。
図7では、対象アプリが検索サイトである例の仕様情報が示されている。この場合、対象アプリは、トップ画面である画面g1において入力された単語で検索を行い、当該単語に該当する検索結果が有れば、検索結果が有ることを示す画面g2を生成し、当該単語に該当する検索結果が無ければ、検索結果が無いことを示す画面g3を生成する。
【0032】
仮に、ステップS101において、異なると判別されるべき画面(例えば、画面g2と画面g3)が同一であると判別された場合、ステップS102において復元される仕様情報は、例えば、
図8に示すようなものになる。
【0033】
図8は、異なると判別されるべき画面が同一であると判別された場合の仕様情報の例である。
図8では、画面g3が、画面g2と同一であると判定されている。換言すれば、検索結果が有る場合と無い場合とのそれぞれの画面は区別されていない。その結果、検索結果が無い場合の画面遷移が復元されていない。なお、本実施の形態では、画面g2と同一であると判定された、画面g4、g5、g3及びg6も、画面g2に集約されずに、画面g2と同一と判定されたことが分かるように、画面g2とは別に仕様情報に含まれる。すなわち、画面g4、g5、g3及びg6が画面g2の下に配置されることによって、画面g4、g5、g3及びg6が、画面g2と同一であると判定されたことが表現されている。
【0034】
また、ステップS101において、同一であると判別されるべき画面が異なると判別された場合、ステップS102において復元される仕様情報は、例えば、
図9に示すようなものになる。
【0035】
図9は、同一であると判別されるべき画面が異なると判別された場合の仕様情報の例である。
図9において、画面g4、g5及びg6は、いずれも検索結果が有る場合の画面であり、対象アプリのテストとしては、画面g2と同一の画面として判別されるべきである。しかし、ステップS101の動的解析処理において、これらが異なる画面であると判定されてしまうと、それぞれの画面に対する画面遷移が復元されてしまう。
【0036】
続いて、スクリプト生成部13は、動的解析処理の結果に基づいて、テストスクリプトを生成する(S103)。動的解析の結果に基づくテストスクリプトの生成は、公知の技術を用いて行われればよい。なお、テストスクリプトには、仕様情報が示す各画面遷移が実現されるように、各画面に対する操作命令が記述される。
【0037】
続いて、ユーザ補助受付部14は、ステップS102において復元された仕様情報(以下、「復元仕様情報」という。)に誤りが有るか否かについて、ユーザによる確認結果の入力を受け付ける(S104)。例えば、ユーザ補助受付部14は、復元仕様情報と、復元仕様情報に対する誤りの有無をユーザから受け付けるためのボタン等を含む照会画面を表示装置106に表示する。ユーザは、照会画面に含まれる復元仕様情報を参照して、誤りの有無を確認する。復元仕様情報に誤りが無い場合、ユーザは、誤りが無いことを示す入力を照会画面に対して行う。この場合(S104でNo)、
図6の処理手順は終了する。
【0038】
一方、復元仕様情報に誤りが有る場合、ユーザは、誤りが有ることを示す入力を照会画面に対して行う。この場合(S104でYes)、ユーザ補助受付部14は、ユーザ補助処理を実行する(S105)。ユーザ補助処理において、ユーザ補助受付部14は、画面の異同の判定結果に修正を加えたい画面を特定するための画面特定条件の入力等をユーザから受け付ける。入力された画面特定条件は、条件リスト記憶部15に記憶される。
【0039】
続いて、ステップS101以降が再実行される。この際、ステップS101の動的解析処理において、ステップS105において条件リスト記憶部15に記憶された画面特定条件に基づいて、画面の同一性の判定が補われる。その結果、ステップS102では、前回の動的解析処理とは異なった仕様情報が復元される。続いて、ステップS103以降が実行され、復元される仕様情報に誤りが無くなると(S104でNo)、
図6の処理手順は終了する。
【0040】
続いて、S101の詳細について説明する。
図10は、動的解析処理の処理手順の一例を説明するためのフローチャートである。
【0041】
図10の処理手順は、ループL1−1によって囲まれている各ステップが、探索画面リストに含まれる画面ごとに処理が実行される。以下、ループL1−1において処理対象とされている画面を「対象画面」という。なお、探索画面リストには、初期状態において、動的解析部11が初期URLにアクセスすることで取得される1つの画面の画面データ(HTML等)が含まれている。初期URLとは、例えば、対象アプリの画面遷移において起点となる画面に対するURLであり、ユーザによって指定される。本実施の形態では、
図7におけるトップ画面である画面g1に対するURLが、初期URLである。
【0042】
ステップS201において、動的解析部11は、対象画面に対する操作リストを作成する。例えば、対象画面において画面の遷移を発生させる画面要素(リンクやサブミットボタン等)の各ロケータについて操作内容を示す情報(以下、「操作情報」という。)を1要素とするリストが操作リストとして生成される。操作は、クリック等の操作である。ロケータは、操作の対象とされる画面要素の識別情報である。具体的には、対象画面が画面g1(
図7)である場合、画面g1に対する入力値として複数の値が生成され、入力値ごとに、検索ボタンのクリックを示す操作情報が生成される。すなわち、入力値ごとに、異なる操作として扱われる。
【0043】
続いて、動的解析部11は、操作リストの要素(操作情報)ごとに、ループL1−2を実行する。操作リストの要素のうち、ループL1−2において処理対象とされている要素を「対象操作情報」という。
【0044】
ステップS202において、動的解析部11は、対象画面に対し、対象操作情報が示す操作を自動実行する。例えば、対象画面が画面g1であれば、対象操作情報の入力値が画面g1に入力されて、検索ボタンがクリックされる。その結果、画面遷移が発生し、動的解析部11は、対象アプリからダウンロードされる遷移先の画面の画面データを取得する(S203)。
【0045】
続いて、動的解析部11は、遷移先の画面と画面特定条件との比較処理を実行する(S204)。すなわち、遷移先の画面の画面データが、いずれかの画面特定条件に合致するか否かが判定される。なお、画面特定条件は、
図6のステップS105においてユーザによって入力され、条件リスト記憶部15に記憶される情報である。したがって、条件リスト記憶部15に1以上の画面特定条件が記憶されていない場合には、ステップS204は実行されなくてもよい。
【0046】
画面特定条件が1つも無い場合、又は遷移先の画面の画面データがいずれの画面特定条件にも合致しない場合(S205でNo)、動的解析部11は、公知の画面判別技術を用いて、遷移済み画面リストに画面情報が含まれる各画面(以下、「遷移済み画面」という。)と、遷移先の画面との同一性(異同)を判定する(S206)。遷移済み画面リストとは、動的解析処理において既に遷移済みの画面の画面情報を要素とするリストであり、
図10の開始時には空である。なお、画面情報とは、画面データ(HTML等)と、当該画面データに係る画面の遷移元の画面の識別情報等を含む情報である。
【0047】
一方、遷移先の画面がいずれかの画面特定条件(以下、「対象特定条件」という。)に合致する場合(S205でYes)、動的解析部11は、対象特定条件に基づいて、遷移済み画面リストに画面情報が含まれる各遷移済み画面と、遷移先の画面との同一性(異同)を判定する(S207)。この場合、遷移済み画面の中に、対象特定条件に合致する画面の有無を判定することで、遷移先の画面と各遷移済み画面との同一性が判定される。すなわち、対象特定条件に合致する遷移済み画面は、遷移先の画面と同一であると判定される。なお、ステップS207の詳細については後述される。
【0048】
ステップS206又はS207に続いて、動的解析部11は、ステップS206又はS207の判定結果に基づいて処理を分岐させる(S208)。すなわち、ステップS206又はS207において、遷移先の画面がいずれの遷移済み画面とも異なると判定された場合(S208でNo)、動的解析部11は、遷移先の画面の画面情報を遷移済み画面リストに追加する(S209)。続いて、動的解析部11は、遷移先の画面の画面データを探索画面リストに追加する(S210)。したがって、当該遷移先の画面が、ループL1−1における以降のループにおいて処理対象とされる。
【0049】
一方、ステップS206又はS207において、遷移先の画面がいずれかの遷移済み画面(以下、「同一遷移済み画面」という。)と同一であると判定された場合(S208でYes)、動的解析部11は、遷移先の画面の画面情報を、同一遷移済み画面に対する同一画面リストに追加する(S211)。同一画面リストとは、遷移済み画面ごとに関連付けられる、当該遷移済み画面と同一であると判定された画面の画面情報を格納するリストである。
【0050】
対象画面に対する操作リストに含まれる各要素についてループL1−2が終了すると、探索画面リストにおいて、処理対象とされていない画面データが処理対象とされ、ループL1−1が実行される。探索画面リスト内に処理対象とされていない画面データが無くなると、
図10の処理手順は終了する。
【0051】
なお、
図6のステップS102では、遷移済み画面リスト、及び各遷移済み画面に対する同一画面リスト等に基づいて、仕様情報(画面遷移図)が復元(生成)される。例えば、
図8は、画面g4、g5、g3及びg6のそれぞれの画面情報が、画面g2に対する同一画面リストに含まれる場合に復元される仕様情報の例である。一方、
図9は、各画面に対する同一画面リストが空である場合に復元される仕様情報の例である。
【0052】
続いて、
図6のステップS105の詳細について説明する。
図11は、ユーザ補助処理の処理手順の一例を説明するためのフローチャートである。
【0053】
ステップS301において、ユーザ補助受付部14は、画面の同一性の判定に対する誤りの有無の入力をユーザから受け付ける。例えば、ユーザ補助受付部14が、当該誤りの有無をユーザに問い合わせる画面(以下「誤り照会画面」という。)を表示装置106に表示し、誤り照会画面を介して、画面の同一性の判定に対する誤りの有無の入力が受け付けられてもよい。
【0054】
画面の同一性の判定に対する誤りが有ることが入力された場合(S302でYes)、ユーザ補助受付部14は、画面特定条件の入力をユーザから受け付ける(S303)。画面特定条件は、URL、DOM構造、画面のタイトル、画面に含まれるテキスト等、様々な情報に基づく条件でよく、特定の条件に限定されないが、本実施の形態では、タイトルに基づく条件が画面特定条件とされる例について説明する。
【0055】
例えば、
図8に示されるような仕様情報が表示された場合、ユーザは、画面g3についての画面の同一性の判定結果を修正したい(すなわち、画面g3が、画面g2と異なる画面であると判定されるようにしたい。)。ここで、画面g3について、画面g2と異なる特徴として、タイトルが「見つかりませんでした」に後方一致することが挙げられる。そこで、この場合、ユーザは、タイトルが「見つかりませんでした」に後方一致することを画面特定条件として入力する。例えば、CPU104を動的解析部11として機能させるプログラムが、当該条件を容易に解釈可能なように、以下のようなアサーション(以下「アサーションa1」という。)が、画面特定条件として入力されてもよい。
「Assert.That(driver.getTile(), Does.EndWith("見つかりませんでした"))」
アサーションa1は、NUnit形式で記述されたアサーションである。ここで、「driver.getTile()」は、タイトル名を取得する命令である。また、「Does.EndWith("見つかりませんでした")」は、取得されたタイトル名が、「見つかりませんでした」に後方一致するか否かの判定命令である。当該判定の結果が肯定的である場合、アサーションa1は「True」を返却し、否定的である場合、「アサーションa1」は、「False」を返却する。したがって、動的解析部11は、アサーションa1に基づいて、画面のタイトルに「見つかりませんでした」という文字列が後方一致として存在するか否かを判定することで、画面の同一性を判定することになる。
【0056】
又は、
図9に示されるような仕様情報が表示された場合、ユーザは、画面g4、g5及びg6についての画面の同一性の判定結果を修正したい(すなわち、画面g4、g5及びg6が、画面g2と同じ画面であると判定されるようにしたい。)。ここで、画面g4、g5及びg6について、画面g2と共通な特徴として、タイトルが「見つかりました」に後方一致することが挙げられる。そこで、この場合、ユーザは、タイトルが「見つかりました」に後方一致することを画面特定条件として入力する。例えば、CPU104を動的解析部11として機能させるプログラムが、当該条件を容易に解釈可能なように、以下のようなアサーション(以下「アサーションa2」という。)が、画面特定条件として入力されてもよい。
「Assert.That(driver.getTile(), Does.EndWith("見つかりました"))」
アサーションa2は、アサーションa1と同様に、NUnit形式で記述されたアサーションである。アサーションa2は、画面から取得されたタイトル名が、「見つかりました」に後方一致する場合、Trueを返却し、そうでない場合、「False」を返却する。したがって、動的解析部11は、アサーションa2に基づいて、画面のタイトルに「見つかりました」という文字列が後方一致として存在するか否かを判定することで、画面の同一性を判定することになる。
【0057】
続いて、ユーザ補助受付部14は、ユーザによって入力された画面特定条件を、条件リスト記憶部15に記憶する(S304)。
【0058】
一方、画面の同一性の判定に対する誤りが有ることが入力されなかった場合(S302でNo)、ユーザ補助受付部14は、不足している画面遷移を発生させるためのスクリプトを、ユーザによる入力に応じて生成する(S305)。すなわち、画面遷移図に誤りが有り、その誤りが画面の同一性の判別に対するものでない場合、当該誤りは、画面遷移に不足が有るものであるからである。
【0059】
続いて、
図10のステップS204の詳細について説明する。
図12は、遷移先の画面と画面特定条件との比較処理の処理手順の一例を説明するためのフローチャートである。
図12では、
図11において条件リスト記憶部15に記憶される各画面特定条件が順番に処理対象とされてループL2が実行される。ループL2では、ステップS401が実行される。
【0060】
ステップS401において、動的解析部11は、遷移先の画面の画面データが、処理対象の画面特定条件に合致するか否かを判定する。具体的には、動的解析部11は、対象条件としてのアサーション(例えば、アサーションa1又はアサーションa2)を実行し、その戻り値に基づいて遷移先の画面が当該画面特定条件に合致するか否かを判定する。すなわち、アサーションの戻り値がTrueであれば、当該画面が当該画面特定条件に合致すると判定され、アサーションの戻り値がFalseであれば、当該画面が当該画面特定条件に合致しないと判定される。
【0061】
遷移先の画面が当該画面特定条件に合致する場合(S401でYes)、動的解析部11は、ループL2から抜け、処理結果としてTrueを返却する。Trueは、遷移先の画面が、いずれかの画面特定条件に合致することを示す。この場合、当該画面特定条件が、
図10のステップS207における対象特定条件となる。
【0062】
遷移先の画面の画面情報が対象条件に合致しない場合(S401でNo)、動的解析部11は、ループL2を継続する。遷移先の画面の画面情報が、全ての画面特定条件に当てはまらない場合、動的解析部11は、処理結果としてFalseを返却する。Falseは、遷移先の画面がいずれの画面特定条件にも合致しないことを示す。
【0063】
続いて、
図10のステップS207の詳細について説明する。
図13は、対象特定条件に基づく各遷移済み画面と遷移先の画面との同一性の判定処理の処理手順の一例を説明するためのフローチャートである。
図13では、遷移済み画面リストに含まれる各遷移済み画面が順番に処理対象とされてループL3が実行される。ループL3では、ステップS501が実行される。
【0064】
ステップS501において、動的解析部11は、処理対象の遷移済み画面の画面情報に含まれる画面データ(以下、「対象画面データ」という。)が、対象特定条件に合致するか否かを判定する。ここで、対象特定条件とは、
図12において、遷移先の画面の画面データが合致した画面特定条件である。すなわち、ステップS501では、対象画面データが、遷移先の画面の画面データと同じ画面特定条件に合致するか否かが判定される。
【0065】
対象画面データが、対象特定条件に合致する場合(S501でYes)、動的解析部11は、処理対象の遷移済み画面と、遷移先の画面とが同一画面であると判定し、Trueを返却する。一方、いずれの遷移済み画面の画面データについても、対象特定条件に合致しない場合(S502でNo)、動的解析部11は、遷移先の画面が、いずれの遷移済み画面とも異なると判定し、Falseを返却する。
【0066】
ここで、最初に復元された仕様情報が、
図8である場合について具体的に説明する。この場合、
図6のS105において呼び出される
図11の処理手順において、上記したアサーションa1が画面特定条件として条件リスト記憶部15に記憶される。
【0067】
その結果、改めて実行される動的解析処理(
図10)のステップS204(すなわち、
図12)においては、画面が遷移するたびに、遷移先の画面について、当該画面特定条件に合致するか否かが判定される。すなわち、遷移先の画面のタイトルが、「見つかりませんでした」に後方一致するか否かが判定される。
図8の例では、遷移先の画面が画面g3である際に、当該画面特定条件に合致すると判定される。そこで、
図10のステップS205における判定はYesとなり、当該画面特定条件を対象特定条件としてステップS207(すなわち、
図13)が実行される。ここで、
図8の画面g2が、遷移済み画面リストに含まれていたとする。画面g2のタイトルは、「見つかりませんでした」に後方一致しないため、
図13において、画面g3は、画面g2とは異なる画面であると判定される。したがって、
図10のステップS208の判定はNoとなり、画面g3の画面情報が、遷移済み画面リストに追加される。その結果、その後に実行される
図6のステップS102において、画面g3への遷移が、画面g2への遷移とは異なる遷移として表現された仕様情報(画面遷移図)が復元(生成)される。すなわち、検索結果が無い場合の画面遷移が復元される。
【0068】
一方、最初に復元された仕様情報が、
図9である場合について具体的に説明する。この場合、
図6のS105において呼び出される
図11の処理手順において、上記したアサーションa2が画面特定条件として条件リスト記憶部15に記憶される。
【0069】
その結果、改めて実行される動的解析処理(
図10)のステップS204(すなわち、
図12)においては、画面が遷移するたびに、遷移先の画面について、当該画面特定条件に合致するか否かが判定される。すなわち、遷移先の画面のタイトルが、「見つかりました」に後方一致するか否かが判定される。
図8の例では、遷移先の画面が画面g2、g4、g5及びg6である際に、当該画面特定条件に合致すると判定される。そこで、これらの各画面が遷移先の画面である場合に、
図10のステップS205における判定はYesとなり、当該画面特定条件を対象特定条件としてステップS207(すなわち、
図13)が実行される。ここで、画面の遷移の早い順が、画面g2、g4、g5、g6の通りであるとする。この場合、遷移先の画面が、画面g2である場合には、遷移済み画面リストには、対象特定条件に合致する遷移済み画面は含まれていない。したがって、
図10のステップS208の判定はNoとなり、画面g2の画面情報が、遷移済み画面リストに追加される。一方、遷移先の画面が、画面g4、g5又はg6である場合には、対象特定条件に合致する画面g2が遷移済み画面リストに含まれている。したがって、
図10のステップS208の判定はYesとなり、画面g4、g5及びg6の画面情報は、画面g2の同一画面リストへ追加される。その結果、その後に実行される
図6のステップS102において、画面g4、g5及びg6への遷移は、画面g2への遷移とは同じ遷移として表現された仕様情報(画面遷移図)が復元(生成)される。
【0070】
上述したように、本実施の形態によれば、動的解析中に他の画面と同一であると判定された画面も含めて全ての遷移先の画面を保存し、探索終了後に、画面の同一性の判定結果をユーザに提示して、修正対象とする画面を特定するための条件をユーザから受け付けることができる。その結果、再度の動的解析において、当該条件に基づいて画面の同一性の判定を補うことができる。したがって、画面の同一性の判別の誤りを少ない稼働で修正可能とすることができ、ひいては、過不足のないテストスクリプトを生成できるようになる。
【0071】
なお、本実施の形態は、Webアプリケーション以外のアプリケーションの画面遷移に関して適用されてもよい。
【0072】
なお、本実施の形態において、仕様解析装置10は、画面判別装置の一例である。動的解析部11は、判定部及び再判定部の一例である。ユーザ補助受付部14は、受付部の一例である。
【0073】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。