JP2017027108A - 画面検証支援プログラム、装置、及び方法 - Google Patents

画面検証支援プログラム、装置、及び方法 Download PDF

Info

Publication number
JP2017027108A
JP2017027108A JP2015141611A JP2015141611A JP2017027108A JP 2017027108 A JP2017027108 A JP 2017027108A JP 2015141611 A JP2015141611 A JP 2015141611A JP 2015141611 A JP2015141611 A JP 2015141611A JP 2017027108 A JP2017027108 A JP 2017027108A
Authority
JP
Japan
Prior art keywords
classification
equivalence
screen
callback
flag
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.)
Pending
Application number
JP2015141611A
Other languages
English (en)
Inventor
聡 宗像
Satoshi Munakata
聡 宗像
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 JP2015141611A priority Critical patent/JP2017027108A/ja
Publication of JP2017027108A publication Critical patent/JP2017027108A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】アプリケーション画面の検証において、少数かつ適切な検証対象を特定する。
【解決手段】複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつコールバック関数により更新される要素の各々に、階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、フラグの設定の組み合わせ毎に、複数の分類基準を作成し、複数の分類基準の各々にしたがって、複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ基準分類数に近くなる分類基準を特定する。
【選択図】図1

Description

本発明は、画面検証支援プログラム、画面検証支援装置、及び画面検証支援方法に関する。
ウェブアプリケーションの画面(ウェブページ)を更新する場合に、HTMLをウェブサーバから再読み込みするのではなく、表示中のウェブページをウェブクライアント側で書き換えるSPA(Single-Page Application)という方式が存在する。すなわち、SPA型のウェブアプリケーションでは、動的に画面更新が行われる。具体的には、画面更新のために新たに必要となるデータは、API(Application Programming Interface)サーバから取得する。より具体的には、APIサーバが提供するデータ取得用のWebAPIを、ウェブクライアント側から呼び出す。そして、WebAPIを呼び出した後にAPIサーバからレスポンスが返ってきたときに、ウェブクライアントは、呼び出したWebAPIに対応付けられたコールバック関数を呼び出して実行することにより、画面を更新する。
また、画面更新の高速化のために、ウェブクライアントは、複数のWebAPIを非同期に並列で呼び出す。複数のWebAPIが非同期に呼び出された場合、ウェブクライアント側で観測される各コールバック関数の呼出順序は不定になる。つまり、アプリケーションの実行毎に、コールバック関数が異なる順序で呼び出される可能性がある。
そのため、複数のWebAPIを非同期に呼び出して画面が更新されるウェブアプリケーションでは、コールバック関数の呼出順序に関わらず、画面更新結果が仕様に違反しないことを検証する必要がある。画面更新結果が仕様に違反しているか否かは、コールバック関数をあらゆる呼出順序で実行した場合における画面更新処理前後の画面スナップショットや画面変更点などの各画面更新結果を、検証作業者の目視確認により判断することになる。画面更新結果が仕様に違反しているか否かを機械的に判断することが困難なアプリケーションの仕様が存在するために、人間が目視で判断せざるを得ない場合が生じ得るからである。
また、アプリケーションの仕様の検証に関する技術として、オブジェクト指向プログラムにおけるあるクラスのオブジェクトの振る舞いを可視化する技術が提案されている。この技術では、注目するクラスのオブジェクト群をそれらの振る舞いに基づいて同値分割し、そのクラスの代表的な振る舞いのみを可視化している。
特表2000−510659号公報 特開平5−197535号公報 特開2009−199399号公報 特開2002−245068号公報
宗像 聡、「クラス動作シナリオ可視化手法のプログラム理解作業に対する有効性評価」、情報処理学会研究報告 Vol.2010-SE-167 No.10、2010
実用的なウェブアプリケーションでは、画面更新結果は大量に生成されるため、全ての画面更新結果を逐一人間が目視で確認することは現実的ではない。そこで、大量の画面更新結果を逐一目視確認する労力を回避するために、上記のオブジェクトを同値分割する技術を利用して、画面更新結果を同値分割することも考えられる。例えば、更新処理後の画面の各々を示すHTMLの文字列の類似度に基づいて、画面更新結果の各々の同値性を判断し、画面更新結果の各々を同値性に基づいて分類する。そして、分類されたグループの中の代表的な画面更新結果を検証することが考えられる。
しかし、同値性の判断を厳密にした場合には、画面更新結果が多数のグループに分類されることになり、目視で検証すべき画面更新結果の数の削減効果が少ない。一方、同値性の判断を緩和することも考えられる。しかし、HTMLの要素の中には、画面更新結果間で厳密に同値性を判断すべき要素もあれば、画面更新結果間で異なっていても、アプリケーションの仕様違反になるとは限らない要素もある。そのため、例えば、HTMLの文字列の類似度の基準を単純に低くするなどして、同値性の判断を緩和した場合には、上記のような要素の特性を考慮することができず、画面更新結果の各々を同値性に基づいて適切に分類することができない場合が生じ得る。
本発明は、一つの側面として、アプリケーション画面の検証において、少数かつ適切な検証対象を特定することを目的とする。
本発明は、一つの態様として、複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれる要素の各々にフラグを設定する。フラグを設定する要素は、前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々である。フラグは、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグである。また、フラグは、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグを含む。また、フラグは、同一階層かつ同一種別の要素間の比較の際に、該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを含む。そして、前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成する。そして、前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類する。その場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する。
一つの側面として、アプリケーション画面の検証において、少数かつ適切な検証対象を特定することができる、という効果を有する。
本実施形態に係る画面検証支援装置の概略構成を示す機能ブロック図である。 SPA型のウェブアプリケーションを説明するための図である。 HTMLとDOMとの関係を示す図である。 コールバック関数の一例を示す図である。 コールバック関数の呼出順序と画面更新結果との対応の一例を示す図である。 DOMの文字列表現の同値性に基づく同値分類の一例を示す図である。 子要素の並び順の相違、及び内包文字列の相違を説明するための図である。 内包文字列の相違を比較対象とした同値分類の一例を示す図である。 分類基準を緩和した同値分類の一例を示す図である。 分類基準データベース(DB)の一例を示す図である。 実行設定DBの一例を示す図である。 画面更新結果DBの一例を示す図である。 同値集合IDを記録した画面更新結果DBの一例を示す図である。 分類理由DB24の一例を示す図である。 同値集合数と強調度1との関係の一例を示す図である。 コールバック関数の数と同値集合数と強調度2との関係の一例を示す図である。 検証画面の一例を示す図である。 本実施形態に係る画面検証支援装置として機能するコンピュータの概略構成を示すブロック図である。 画像検証支援処理の一例を示すフローチャートである。 実行設定登録画面の一例を示す図である。 フラグ設定対象登録画面の一例を示す図である。 フラグの設定及びHTMLの更新を説明するための図である。 フラグが設定されたHTMLとDOMとの関係を示す図である。 同値分類処理の一例を示すフローチャートである。 要素比較処理の一例を示すフローチャートである。 要素間の比較を説明するための図である。 画面表示処理の一例を示すフローチャートである。 分類基準毎の強調度1の一例を示す図である。 コールバック関数集合毎の強調度2の一例を示す図である。 DOMの構造比較画面を検証画面上に重畳した一例を示す図である。
まず、実施形態の詳細を説明する前に、以下の実施形態で適用しているSPA(Single-Page Application)型のウェブアプリケーションにおける画面更新、及び画面検証における問題点について説明する。
図2に示すように、SPA型のウェブアプリケーションでは、まず、ウェブクライアント(ウェブブラウザ)101が、初期画面(更新される前の画面)のウェブページを、ウェブサーバ102に要求する(図2中の(1))。ウェブサーバ102は、ウェブクライアント101からの要求を処理するリクエスト処理部103と、複数のウェブページの各々を示すHTML(HyperText Markup Language)が格納されたページデータベース(DB)104とが含まれる。リクエスト処理部103は、要求されたウェブページを示すHTMLをページDB104から取得して、ウェブクライアント101に返信する(図2中の(2))。ウェブクライアント101では、返信されたHTML105に基づいて初期画面を表示する。
図2中のAに示すように、SPA型のウェブアプリケーションの初期画面のHTML101には、APIサーバが提供する情報を取得するためのWebAPI呼出が含まれる。ウェブクライアント101は、WebAPIを呼び出して、APIサーバ106から情報を取得する。具体的には、図2の例では、初期画面のHTML105に、APIサーバ106から「お店情報」を取得するためのWebAPI呼出と、「お店人気情報」を取得するためのWebAPI呼出とが含まれている。ウェブクライアント101は、APIサーバ106に、「お店情報」の要求(図2中の(3))と、「お店人気情報」の要求(図2中の(5))とを行う。
APIサーバ106は、ウェブクライアント101からの要求を処理するリクエスト処理部107と、ウェブクライアント101へのレスポンスを生成するレスポンス生成部108と、提供情報DB109とが含まれる。提供情報DB109には、ウェブクライアント101に提供される各種情報110が格納されている。リクエスト処理部107は、ウェブクライアント101からの要求をレスポンス生成部108へ受け渡す。レスポンス生成部108は、要求された情報を提供情報DB109から取得して、リクエスト処理部107へ返し、リクエスト処理部103からウェブクライアント101に返信する。図2の例では、(4)が「お店情報」の返信、(6)が「お店人気情報」の返信を示す。
また、図2中のBに示すように、初期画面のHTML101には、複数のWebAPI呼出の各々に対応するコールバック関数呼出が含まれている。コールバック関数は、WebAPI呼出に対してレスポンスが返ってきたタイミングで呼び出されて、実行される関数である。図2では、お店情報が取得されたタイミングで、お店情報を描画するコールバック関数(F5)を呼び出し(図2中の(7))、お店人気情報が取得されたタイミングで、お店情報を並び替えるコールバック関数(F4)を呼び出す(図2中の(8))例を示している。
呼び出されたコールバック関数が実行されることにより、HTMLが更新され(図2中の更新後の画面のHTML111)、表示中の画面が更新される。初期画面のHTML105が複数のWebAPI呼出を含む場合、すなわち複数のコールバック関数が実行される場合には、1つのウェブページが何度も更新されることになる。コールバック関数が実行されて更新された画面の情報を、以下では「画面更新結果」といい、ここでは、HTMLをウェブアプリケーションから利用するためのAPIであるDOM(Document Object Model)を用いる場合について説明する。図3に示すように、DOM112は、HTML111の各要素のデータ構造を順序木で表した階層化文書である。HTML111とDOM112とは等価であり、相互に変換できる。なお、HTML111の要素(DOM112の要素でもある)のうち、アプリケーションから更新される可能性のある要素にはID属性が付与されている。
ここで、複数のWebAPI呼出の各々に対するレスポンスのタイミングは、ウェブクライアント101、ウェブクライアント101とAPIサーバ106間のネットワーク、APIサーバ106の負荷状況などに依存して、順序不定である。上述したように、コールバック関数は、WebAPI呼出に対するレスポンスが返ってきたタイミングで呼び出されるものであるため、コールバック関数の実行順序も不定となる。例えば、図2の例では、APIサーバ106への情報の要求が、(3)お店情報の要求、(4)お店人気情報の要求の順で行われたとしても、レスポンスは、(6)お店人気情報の返信、(5)お店情報の返信の順になる場合もある。このように、WebAPI呼出を複数含むウェブアプリケーションでは、WebAPI呼出の各々に対応するコールバック関数の各々がどのような順番で呼び出されても、アプリケーションの画面の仕様に違反しないことが必要である。
上記のようなSPA型のウェブアプリケーションの画面の仕様違反を検証する方法として、コールバック関数の呼出順序の全てのパターンについて、画面更新結果を取得し、検証作業者が各画面更新結果を目視で確認することが考えられる。
具体的に、画面更新結果の全てを検証する場合について説明する。例えば、3つのWebAPI呼出を含むウェブアプリケーションで、WebAPI呼出の各々に対応して、図4に示すような、関数IDがF4、F5、及びF6の各々である3つのコールバック関数が呼び出されるとする。以下では、関数IDがFiのコールバック関数を「コールバック関数Fi」又は単に「Fi」と表記する。この場合、コールバック関数の呼出順序は、全部で15件である。この15件の呼出順序の各々について、コールバック関数の呼出順序だけを変えながらアプリケーションを複数回実行することで、コールバック関数の呼出順序と画面更新結果との対応を、各コールバック関数が実行された直後の途中状態も含め、網羅的に記録する。図5に、コールバック関数の呼出順序と画面更新結果との対応の一例を示す。図5の「順序ID」は、コールバック関数の呼出順序の各々を識別するための識別情報であり、呼び出すコールバック関数の関数IDの数字部分を、「R」の後に呼出順に並べて表している。また、図5の「画面更新結果」は、コールバック関数の呼出順序毎の画面更新結果(DOMをHTML形式で表示)である。
この例では、15件の画面更新結果の各々を目視確認することにより、アプリケーション仕様に違反する画面更新結果を引き起こすコールバック関数の呼出順序を絞り込むことができる。この例では、コールバック関数の呼出順序「F4⇒F5」、及び「F6⇒F4」が、アプリケーションの仕様に違反する画面更新結果を引き起こす、最小単位のコールバック関数の呼出順序である。すなわち、コールバック関数F4(drawRanking)は、コールバック関数F5(drawStores)の後に呼び出されなければならず、コールバック関数F6(drawMap)は、コールバック関数F4(drawRanking)の後に呼び出されなければならない。また、コールバック関数の呼出順序「F5⇒F4⇒F6」だけが正常な画面更新結果を生成する。このような検証結果を、15件の画面更新結果の目視確認により得ることになる。
しかし、実用的なウェブアプリケーションでは,画面更新結果が大量に生成されるため、全ての画面更新結果を目視確認することは現実的ではない。例えば、WebAPI呼出数がnのアプリケーションでは、全てのコールバック関数が呼び出された後の最終状態の画面に限っても、n!件の画面更新結果が作成されることになる。例えば、n=7の場合、5,040件(=7!通り)の画面更新結果が作成されることになり、1件の確認に5秒しかかからなかったとしても、画面更新結果の全ての検証に約7時間もかかってしまう。さらに、各コールバック関数が呼出された直後の途中状態の画面更新結果も含めると、下記(1)式に示す件数の画面更新結果が作成されることになる。
途中状態の画面更新結果も含めると、例えば、n=7の場合、136,99件の画面更新結果が作成されるため、1件の確認に5秒しかかからなかったとしても、画面更新結果の全ての検証に約19時間もかかってしまう。
そこで、複数の画面更新結果を、より少数の集合に分類し、各集合の中から代表の画面更新結果を目視確認することにより、検証対象の画面更新結果を削減することが考えられる。例えば、図6に示すように、3つのWebAPI呼出に対するコールバック関数の全呼出順序についての15件の画面更新結果を、DOMの文字列表現の同値性(一致度合い)に基づいて、同値となる画面更新結果に同一の同値集合IDを付与する。同値集合IDが同一の画面更新結果の集合が同値集合であり、図6の例では、15件の画面更新結果が10個の同値集合に分類できた場合を示している。この場合、一度目視確認した画面更新結果と同値である他の画面更新結果は、目視確認しなくてよいため、検証対象の画面更新結果の数は、約33%(=5/15)削減される。なお、以下では、同値集合IDがSiの同値集合を「同値集合Si」と表記する。
検証の一例としては、同値集合から、それぞれ1つだけ画面更新結果を選択する。そして、選択した画面更新結果を目視確認した結果、アプリケーションの仕様に違反していた場合、その画面更新結果が含まれる同値集合に含まれる全ての画面更新結果がアプリケーションの仕様に違反していると判定する。また、アプリケーションの仕様に違反している同値集合に含まれる各画面更新結果と対応するコールバック関数の呼出順序は、全て、アプリケーションの仕様に違反する画面更新結果を引き起こす呼出順序であると判定する。
ここで、SPA型のウェブアプリケーションでは、コールバック関数の呼出順序の違いが、下記のような画面表示内容の違いとして表れる傾向がある。
(1)同じ要素への更新処理の衝突に由来する子要素の並び順の相違
(2)WebAPI呼出処理の非決定性に由来する要素の内包文字列の相違
上記(1)は、例えば、図7の上段に示すように、複数の子要素を含む要素の「描画処理」と「並替処理」との呼出順序が入れ替わった場合などである。上記(2)は、例えば、図7の下段に示すように、「現在時刻を取得して表示する処理」と「他の処理」との呼出順序が入れ替わったことにより、内包文字列(時刻の表示)が相違する場合などである。なお、WebAPI呼出処理の非決定性とは、同じ入力を与えたとしても異なる出力が得られる処理の特性を意味する。
しかし、上記(1)や(2)のような相違が画面上に生じているからといって、必ずしもアプリケーションの仕様に違反しているとは限らない。例えば、リストに表示される各情報の表示順は問わない場合には、上記(1)の相違は問題にならない。また、現在時刻の表示は毎回違ってもよい場合には、上記(2)の相違は問題にならない。
そのため、上記のように、単純に、DOMの文字列表現の同値性に基づいて画面更新結果を分類する場合には、上記の(1)や(2)の相違を考慮する、又は考慮しない等の細かな判断に基づく分類を行うことができない。
例えば、図8に示すように、関数F4(drawRanking)が実行されることにより描画される「お店人気情報の取得時刻」が、コールバック関数の呼出順序毎に全て異なるとする。この場合において、DOMの文字列表現が完全に一致する画面更新結果を同値として分類すると、コールバック関数の呼出順序の数と同じ数(図8の例では、15件)だけ同値集合が作られてしまい、検証対象の画面更新結果の数の削減効果がない。
そこで、同値集合数を減らすために、画面更新結果の同値性の判断基準を緩和して、画面更新結果を分類することが考えられる。理想的には、アプリケーションの仕様を理解している検証作業者自身が、「適切な同値性基準」を定義することが望ましい。「適切な同値性基準」とは、目視確認結果が本来異なる画面更新結果が、同じ同値集合に分類されず、かつ高々少数個の同値集合に分類されるような基準である。つまり、同値性基準は、(A)同値集合の個数と、(B)目視確認結果が本来異なる画面更新結果が同じ同値集合に含まれる危険性との間のトレードオフを決めるパラメータである。
しかし、「適切な同値性基準を定義する」ことは、「目視確認を自動化する」ことに等しく、検証作業前に検証作業者自身の机上検討により導き出すことは困難である。例えば、図8に示す画面更新結果に含まれる全ての要素について、上記(1)及び(2)の画面表示内容の相違を無視する同値性の判断基準を適用する。この場合、図9に示すように、15個の画面更新結果が、わずか2つの同値集合に分類される。図9の例では、同値集合S1には、11個の画面更新結果が含まれ、同値集合S2には、4個の画面更新結果が含まれる。同値集合S1には、実際には、「目視確認結果が本来異なる画面更新結果」であるアプリケーションの仕様違反になる画像更新結果と、仕様違反にならない画像更新結果とが混在する。したがって、各同値集合から1つの画面更新結果を選択して確認するだけでは、アプリケーションの仕様違反を引き起こすコールバック関数の呼出順序を絞り込むことはできない。
そこで、以下で詳述する実施形態では、ウェブアプリケーションの画面の仕様違反の検証対象数を削減するために、画面更新結果を同値分類する際の分類基準として適切な分類基準を特定する。適切な分類基準とは、SPA型のウェブアプリケーションで表れ易い上記(1)及び(2)の相違に対応した分類基準である。さらに、以下の実施形態では、仕様違反となる画面更新結果を引き起こすコールバック関数の呼出順序を特定する。そして、特定した分類基準及び仕様違反を引き起こすコールバック関数の呼出順序をユーザに提示することにより、ユーザによるアプリケーションの画面検証を支援する。
以下、図面を参照して、本発明に関する実施形態の一例を詳細に説明する。なお、上記のSPA型のウェブアプリケーションにおける画面更新、及び画面検証における問題点で説明した部分と同様の部分については、詳細な説明を省略する。
図1に示すように、本実施形態に係る画面検証支援装置10は、ユーザ対話制御部11と、分類基準作成部12と、アプリ実行部13と、コールバック関数呼出制御部14と、画面更新結果記録部15と、画面更新結果分類部16と、検証画面出力部17とを含む。また、画面検証支援装置10の所定の記憶領域には、分類基準データベース(DB)21と、アプリ実行設定DB22と、画面更新結果DB23と、分類理由DB24とが記憶される。なお、分類基準作成部12は、本発明の作成部の一例であり、画面更新結果分類部16及び検証画面出力部17は、本発明の特定部の一例である。
ユーザ対話制御部11は、ユーザからの各種入力を受け付けるための画面及び検証画面の生成と表示とを制御する。また、ユーザ対話制御部11は、ユーザから入力された各種情報を受け付け、受け付けた情報を所定の機能部へ受け渡す。
分類基準作成部12は、画面更新結果を同値性に基づいて分類する際の分類基準として、複数の分類基準を作成する。作成された複数の分類基準から、後述する検証画面出力部17により、適切な分類基準が特定される。複数の分類基準の各々は、画面の検証を行うウェブアプリケーションの初期画面のHTMLに含まれる各要素のうち、WebAPI呼出により更新される可能性がある各要素に対するフラグ(検証アノテーション)の設定の有無により規定される。更新される可能性がある要素は、ID属性が付与された要素としてもよいし、ユーザ対話制御部11を介して、ユーザにより指定された要素としてもよい。
フラグは、各要素について、上記(1)及び(2)の識別有無を指定するものである。具体的には、分類基準作成部12は、上記(1)の識別有無を指定するフラグとして、DOMの構造一致判定で、ある要素の子要素の並び順の同値性を比較対象とすることを示す「Seqフラグ」を設定する。また、分類基準作成部12は、上記(2)の識別有無を指定するフラグとして、DOMの構造一致判定で、ある要素の内包文字列の同値性を比較対象としないことを示す「Tempフラグ」を設定する。
分類基準作成部12は、HTMLに含まれる各要素に対するSeqフラグ及びTempフラグの設定のあらゆる組合せの各々を、分類基準として作成する。例えば、HTMLに3つの要素(P#date、UL#ranking、SVG#map)の各々にSeqフラグ及びTempフラグを設定する場合、27通りの分類基準が作成される。分類基準作成部12は、作成した複数の分類基準を、分類基準DB21に記録する。
図10に、分類基準DB21の一例を示す。図10の例では、各行が1つの分類基準に相当し、各分類基準に基準IDが付与されている。以下では、基準IDがiの分類基準を「分類基準i」と表記する。また、分類基準DB21の各列はフラグの設定対象である各要素が対応付けられており、各分類基準の各列に対応するセルは、その列に対応する要素に対するSeqフラグ及びTempフラグの設定状況を示す。なお、ブランクのセルは、Seqフラグ及びTempフラグのいずれも設定されていない要素を表す。また、本実施形態では、SeqフラグとTempフラグとは排他的な関係にあるため、1つの要素に対して、Seqフラグ及びTempフラグの両方が設定される場合はない。
アプリ実行部13は、ユーザ対話制御部11を介して入力された、画面の検証を行うウェブアプリケーションの実行設定に、実行設定を一意に識別可能な実行設定IDを付与して、実行設定DB22に記録する。図11に実行設定DB22の一例を示す。図11の例では、各行が1つの実行設定に相当し、「URL」は、ウェブアプリケーションを実行する際に指定される実行パスである。アプリ実行部13は、実行設定DB22に記録された実行設定から、所望の実行設定IDに対応付けられたURLに対して、HTTPリクエストを送信する。HTTPリクエストの1回の送信につき、ウェブアプリケーションが1回実行される。
コールバック関数呼出制御部14は、ウェブアプリケーションの実行中に呼び出されるコールバック関数の呼出順序を制御する。本実施形態では、アプリ実行部13及びコールバック関数呼出制御部14の機能により、分類基準作成部12により作成された分類基準毎に、コールバック関数のあらゆる呼出順序で網羅的にウェブアプリケーションが実行される。コールバック関数呼出制御部14は、各コールバック関数の呼出が完了すると、そのコールバック関数の呼出順序を画面更新結果記録部15に通知する。
画面更新結果記録部15は、コールバック関数呼出制御部14からの通知を受けると、各コールバック関数の実行が完了した段階のHTMLを取得し、取得したHTMLをDOMに変換する。そして、画面更新結果記録部15は、DOMを画面更新結果として、通知されたコールバック関数の呼出順序と対応付けて、画面更新結果DB23に記録する。画面更新結果DB23には、分類基準毎に、コールバック関数の呼出順序と画面更新結果とが対応付けて記録される。図12に、画面更新結果DB23の一例を示す。図12の例では、「基準ID」欄の基準IDで特定される分類基準毎に、「順序ID」及び「コールバック関数の呼出順序」と、「画面更新結果」とが対応付けられている。また、後段の処理で使用される「同値集合ID」欄も設けられている。「同値集合ID」欄は、画面更新結果DB23に画像更新結果が記録される段階では空欄である。
画面更新結果分類部16は、分類基準毎の画面更新結果について、DOM構造が同一の画面更新結果に同一の同値集合IDを付与して、図13に示すように、画面更新結果DB23の「同値集合ID」欄に記録する。画面更新結果分類部16は、DOM構造が同一か否かを、DOMの同一階層における同一タグ名の要素同士の同値性に基づいて判断する。この際、各分類基準に応じた、各要素に対するSeqフラグ及びTempフラグの設定に基づいて、要素同士の同値性を判断する。
具体的には、画面更新結果分類部16は、複数の子要素を持つ要素にSeqフラグが設定されている場合は、子要素同士が1対1で対応しており、かつ子要素の並び順も一致している場合に、その要素同士は同値であると判断する。一方、複数の子要素を持つ要素にSeqフラグが設定されていない場合、画面更新結果分類部16は、子要素同士が1対1で対応していれば、子要素の並び順が一致していなくても、その要素同士は同値であると判断する。また、画面更新結果分類部16は、Tempフラグが設定されている要素については、要素間の階層及びタグ名が一致していれば、その要素の内包文字列が異なっていても、同値であると判断する。ただし、Tempフラグが設定されている要素間の比較において、一方の要素の内容文字列が更新されており、他方の要素の内包文字列が更新されていない場合(例えば、Nullの場合)は、画面更新結果分類部16は、その要素同士は同値ではないと判断する。Tempフラグが設定されていない要素間の比較では、画面更新結果分類部16は、要素の階層及びタグ名と共に、内包文字が一致している場合に同値であると判断し、内包文字列が異なっている場合には、同値ではないと判断する。
また、画面更新結果分類部16は、画面更新結果が同値ではないと判断した場合、すなわち、比較した画面更新結果の各々に異なる同値集合IDを付与した場合、その理由を分類理由DB24に記録する。図14に、分類理由DB24の一例を示す。分類理由DB24は、分類基準毎に作成される。図14の例では、分類理由DB24の行及び列は、それぞれ同値集合IDに対応している。各セルには、そのセルの行及び列に対応する2つの同値集合IDが付与された画面更新結果同士が、同じ同値集合として分類されなかった理由が、対象の要素と共に記録されている。
検証画面出力部17は、分類基準毎の画面更新結果の同値分類の結果に基づいて、ウェブアプリケーションの画面の仕様検証のために適切な分類基準を特定する。
ここで、各コールバック関数で行われる画面更新処理は各々異なるが、コールバック関数の呼出順序に制約が全く無い場合に、全く同じ実行環境でウェブアプリケーションを網羅的に実行して、画面更新結果を得るとする。この場合の全画面更新結果をDOMの文字列表現の完全一致で分類した場合の同値集合数を、理想的な同値集合数(ICN)とすると、ICNは、下記(2)式で表すことができる。なお、nはウェブアプリケーションの実行において呼び出されるコールバック関数の数である。
ウェブアプリケーションの仕様違反を引き起こすコールバック関数の呼出順序が存在しない場合、SPA型のウェブアプリケーションに見られる上記(1)の子要素の順序の相違、及び上記(2)の内包文字列の相違を、仕様違反にならない範囲で無視する。この場合、分類した同値集合数はICNに等しくなる。そのため、分類した同値集合数がICNに等しくなる分類基準は、よりウェブアプリケーションの仕様と適合している可能性が高いといえる。
また、ウェブアプリケーションの仕様違反を引き起こすコールバック関数の呼出順序が存在する場合、コールバック関数の呼出順序の違いから画面更新結果にも違いが生じる。そのため、上記(1)及び(2)を仕様違反にならない範囲で無視する場合、分類した同値集合数はICNよりも大きくなる。したがって、ウェブアプリケーションの仕様と適合している分類基準であるほど、分類した同値集合数がICNよりも少し大きくなる。なお、分類した同値集合数がICNよりも小さくなる場合、そもそも、各コールバック関数で行われる画面更新処理前後の画面の違いを識別できていない。そのため、同値集合数がICNよりも小さい場合は、画面更新結果の違いから、仕様違反を引き起こすコールバック関数の呼出順序を発見するという目的には適さない。
そこで、検証画面出力部17は、ウェブアプリケーションの仕様違反を引き起こすコールバック関数の呼出順序の絞り込みに適している分類基準ほど大きくなる値を、各分類基準の強調度1として算出する。強調度1は、同値集合数が、理想的な同値集合数(ICN)と等しくなく、かつICNに近いほど大きくなり、同値集合数が0に近いほど小さくなる値とする。検証画面出力部17は、例えば、下記(3)式により、分類基準毎の強調度1を算出することができる。なお、CNは、該当の分類基準における同値集合数である。また、図15に、(3)式で示す強調度1と同値集合数との関係について、ICN=7の場合の例を示す。
また、検証画面出力部17は、ユーザに指定された分類基準において、コールバック関数の呼出順序の各々に含まれるコールバック関数が同じものの集合である各コールバック関数集合について、検証の際に注目すべき度合いを示す強調度2を算出する。コールバック関数集合の強調度2は、例えば、コールバック関数集合に属するコールバック関数の呼出順序に対応する画面更新結果の同値集合の個数が2に近く、かつ、そのコールバック関数集合に含まれるコールバック関数の個数が少ないほど大きな値とする。仕様違反を引き起こす根本的な原因、すなわち最小単位のコールバック関数の呼出順序を絞り易くなるためである。
検証画面出力部17は、例えば、下記(4)式により、指定された分類基準の強調度2を算出することができる。なお、ユーザにより分類基準が指定されていない場合には、検証画面出力部17は、強調度1が最大となる分類基準が指定されているものとして、その分類基準の強調度2を算出する。
ただし、FNは、各コールバック関数集合に含まれるコールバック関数の数である。また、分子の第1項は、CN=1の場合に強調度2を0にするための定数である。さらに、図16に、(4)式で示す強調度2とFNとCNとの関係の一例を示す。
検証画面出力部17は、強調度1に基づいて、適切な分類基準をユーザに提示すると共に、強調度2に基づいて、適切な分類基準又は指定された分類基準におけるコールバック関数の呼出順序に関する分類結果をユーザに提示する検証画面の画面情報を生成する。
図17に、検証画面30の一例を示す。検証画面30は、複数の分類基準からいずれかの分類基準を選択するための分類基準選択スライドバー31を含む。分類基準選択スライドバー31は、横軸の各位置が同値集合数に対応したバー31Aと、バー31A上の位置を指定するためのつまみ31Bとを含む。また、バー31Aに沿って、各分類基準の分類基準名(例えば、「“基準”+基準ID」)が、その分類基準における同値集合数に対応する位置に配置される。分類基準名は、各分類基準の強調度1が大きい程、文字サイズを大きくする。図17では、分類基準23の強調度1が最も大きかった例であり、分類基準名「基準23」が最も大きな文字サイズで表示されている(図17中の破線の楕円部分)。
また、検証画面30は、分類基準選択スライドバー31で選択された分類基準、すなわち、バー31A上のつまみ31Bの位置に対応する分類基準についての分類結果が表示される分類結果表示領域32を含む。分類結果表示領域32には、選択された分類基準について、各コールバック関数集合に対応するノード33が、コールバック関数集合の包含関係に基づいて、エッジで接続されて配置される。各ノード33内には、コールバック関数集合名(例えば、含まれるコールバック関数名を連結したもの)、及びそのコールバック関数集合に属するコールバック呼出順序についての画面更新結果に付与された同値集合IDが表示される。また、同値集合ID毎に、その同値集合IDが付与された画面更新結果を生成したコールバック関数の呼出順序も表示される。ノード33内の文字サイズは、そのノード33に対応するコールバック関数集合について算出された強調度2が大きい程、大きくする。
なお、分類基準名及びノード33内の文字の文字サイズを変更する以外にも、強調度1及び強調度2の各々に応じて、文字の色、背景色、枠のサイズ、枠線の種類等を変更するようにしてもよい。
さらに、検証画面30には、同値集合数が2以上であるコールバック関数集合に対応するノード33に紐付けて、ノード33内に含まれる同値集合IDが示す同値集合同士が同値とならなかった理由を表記した理由一覧34が表示される。
検証画面出力部17は、生成した検証画面30の画面情報を、ユーザ対話制御部11へ受け渡す。
画面検証支援装置10は、例えば、図18に示すコンピュータ40で実現することができる。コンピュータ40はCPU41、一時記憶領域としてのメモリ42、及び不揮発性の記憶部43を備える。また、コンピュータ40は、表示装置及び入力装置等の入出力装置48が接続される入出力インターフェース(I/F)44を備える。また、コンピュータ40は、記録媒体49に対するデータの読み込みと書き込みとを制御するread/write(R/W)部45、及びインターネット等のネットワークに接続されるネットワークI/F46を備える。CPU41、メモリ42、記憶部43、入出力I/F44、R/W部45、及びネットワークI/F46は、バス47を介して互いに接続される。
記憶部43は、HDD(Hard Disk Drive)、SSD(solid state drive)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部43には、コンピュータ40を画面検証支援装置10として機能させるための画面検証支援プログラム50が記憶される。また、記憶部43は、分類基準DB21、アプリ実行設定DB22、画面更新結果DB23、及び分類理由DB24の各々を構成する情報が記憶される情報記憶領域60を有する。
CPU41は、画面検証支援プログラム50を記憶部43から読み出してメモリ42に展開し、画面検証支援プログラム50が有するプロセスを順次実行する。また、CPU41は、情報記憶領域60から各種情報を読み出し、分類基準DB21、アプリ実行設定DB22、画面更新結果DB23、及び分類理由DB24の各々をメモリ42に展開する。
画面検証支援プログラム50は、ユーザ対話制御プロセス51と、分類基準作成プロセス52と、アプリ実行プロセス53と、コールバック関数呼出制御プロセス54と、画面更新結果記録プロセス55と、画面更新結果分類プロセス56とを有する。さらに、画面検証支援プログラム50は、検証画面出力プロセス57を有する。
CPU41は、ユーザ対話制御プロセス51を実行することで、図1に示すユーザ対話制御部11として動作する。また、CPU41は、分類基準作成プロセス52を実行することで、図1に示す分類基準作成部12として動作する。また、CPU41は、アプリ実行プロセス53を実行することで、図1に示すアプリ実行部13として動作する。また、CPU41は、コールバック関数呼出制御プロセス54を実行することで、図1に示すコールバック関数呼出制御部14として動作する。また、CPU41は、画面更新結果記録プロセス55を実行することで、図1に示す、画面更新結果記録部15として動作する。また、CPU41は、画面更新結果分類プロセス56を実行することで、図1に示す画面更新結果分類部16として動作する。また、CPU41は、検証画面出力プロセス57を実行することで、図1に示す検証画面出力部17として動作する。これにより、画面検証支援プログラム50を実行したコンピュータ40が、画面検証支援装置10として機能することになる。
なお、画面検証支援プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
次に、本実施形態に係る画面検証支援装置10の作用について説明する。ユーザ対話制御部11を介して、ユーザからウェブアプリケーションの実行設定が要求されると、画面検証支援装置10において、図19に示す画像検証支援処理が実行される。なお、以下においても、上記と同様に、実行されるウェブアプリケーションに、図4に示す3つのコールバック関数の呼び出しが含まれる例について説明する。
ステップS10で、ユーザ対話制御部11が、例えば、図20に示すような、実行設定登録画面71を生成して表示装置に表示し、ユーザからの実行設定の登録を受け付ける。ユーザは、実行設定登録画面71のテキストボックス71Aに、実行設定するウェブアプリケーションのURLを入力し、登録ボタン71Bを選択する。登録ボタン71Bが選択されると、ユーザ対話制御部11は、テキストボックス71Aに入力されたURLを読み取り、アプリ実行部13へ受け渡す。アプリ実行部13は、受け渡されたURLに、実行設定IDを付与して、実行設定DB22に記録する。アプリ実行部13は、実行設定DB22に記録されたURLに対して、HTTPリクエストを送信する。そして、ユーザ対話制御部11は、ウェブサーバから返信されたHTMLを受信する。
なお、ステップS10において、実行設定登録画面71から取消ボタン71Cが選択された場合には、画面検証支援処理を終了するようにすればよい。
次に、ステップS20で、ユーザ対話制御部11が、例えば、図21に示すような、フラグ設定対象登録画面72を生成して表示装置に表示し、ユーザから、Seqフラグ及びTempフラグを設定する対象となるHTMLの要素の指定を受け付ける。なお、ユーザからの指定を受け付けることなく、又はユーザからの指定とあわせて、HTMLにおけるID属性が付与された要素を自動で指定するようにしてもよい。ユーザ対話制御部11は、フラグ設定対象登録画面72の更新前HTML表示領域72Aに、上記ステップS10で受け付けたHTMLを表示する。ユーザは、フラグ設定対象登録画面72に表示されたHTMLを参照して、テキストボックス72Bに、例えば、「{タグ名}#{ID}」の書式で、フラグの設定を指定する要素を入力し、登録ボタン72Cを選択する。登録ボタン72Cが選択されると、ユーザ対話制御部11は、テキストボックス72Bに入力された要素を読み取り、分類基準作成部12へ受け渡す。
なお、ステップS20において、フラグ設定対象登録画面72から取消ボタン72Dが選択された場合には、画面検証支援処理を終了するようにすればよい。
分類基準作成部12は、分類基準作成部12は、指定されたHTMLの各要素に対するSeqフラグ及びTempフラグの設定のあらゆる組合せの各々を、分類基準として作成し、分類基準DB21に記録する。ここでは、図10に示す分類基準DB21が作成されたものとする。
次に、ステップS30で、アプリ実行部13及びコールバック関数呼出制御部14が、分類基準作成部12により作成された分類基準毎に、コールバック関数のあらゆる呼出順序で網羅的にウェブアプリケーションを実行する。例えば、図10に示す分類基準DB21における分類基準23を適用する場合、図22の上図に示すように、更新前のHTML81の所定の要素に、分類基準23に従ったTempフラグ85A及びSeq85Bフラグが設定される。コールバック関数呼出制御部14が、コールバック関数の呼出順序を、順序ID=R546が示す順序(F5⇒F4⇒F6)となるように制御した結果、図22の下図に示すように、HTML82が更新されたとする。更新前のHTML81に設定されたフラグは、更新されたHTML82においても、そのまま設定されている。画面更新結果記録部15は、図23に示すように、このHTML82をDOM83に変換し、分類基準23及び順序ID=R546と対応付けて、画面更新結果DB23に記録する。HTML82に設定されたフラグは、DOM83においても、そのまま設定されている。
なお、画面更新結果記録部15は、順序ID=R546のコールバック関数呼出順序でのウェブアプリケーションを実行している途中で、コールバック関数F5が実行された後の画面更新結果、及びコールバック関数F4が実行された後の画面更新結果も取得する。したがって、分類基準23が適用され、かつ順序ID=R546のコールバック関数呼出順序でのウェブアプリケーションの実行が完了した段階では、以下の画面更新結果が得られることになる。
・分類基準23及び順序ID=R5に対応する画面更新結果
・分類基準23及び順序ID=R54に対応する画面更新結果
・分類基準23及び順序ID=R546に対応する画面更新結果
分類基準の全てについて、コールバック関数の呼出順序の全てに対応する画面更新結果が得られたら、処理はステップS40へ移行し、図24に詳細を示す同値分類処理が実行される。
図24に示す同値分類処理のステップS41のループ処理で、画面更新結果分類部16が、分類基準DB21から、分類基準を1つずつ選択して分類基準aに設定し、分類基準aについて、ステップS42以降の処理を実行する。
ステップS42のループ処理では、画面更新結果分類部16が、画面更新結果DB23を参照して、分類基準aの画面更新結果から同値集合IDが未決定のものを1つずつ選択して、画面更新結果Rbに設定する。そして、画面更新結果分類部16が、画面更新結果Rbについて、ステップS43以降の処理を実行する。
ステップS43で、画面更新結果分類部16が、分類基準aの画面更新結果DB23に、同値集合IDが記録されている画面更新結果が存在するか否かを判定する。同値集合IDが記録されている画面更新結果が存在する場合には、処理はステップS44へ移行し、存在しない場合には、処理はステップS68へ移行する。
ステップS44のループ処理では、画面更新結果分類部16が、上記ステップS43で存在すると判定した、分類基準aの画面更新結果DB23に記録されている同値集合IDを1つずつ選択してScに設定する。また、画面更新結果分類部16は、同値集合IDとしてScが付与された画面更新結果のいずれかをRcに設定する。そして、同値集合ID=Scについて、ステップS45以降の処理を実行する。
ステップS45で、画面更新結果分類部16が、後段の処理で使用される一時記憶領域である理由記憶領域を初期化する。次に、ステップS50で、図25に詳細を示す要素比較処理が実行される。
図25に示す要素比較処理のステップS51のループ処理で、画面更新結果分類部16が、順序木であるDOM構造で表された画面更新結果Rbから、ルートノードに相当する要素(HTML)の次の階層から、順序木の順序性に従った順番で要素を1つずつ選択して要素dに設定する。そして、画面更新結果分類部16は、要素dについて、ステップS52〜S63の処理を実行する。
ステップS52では、画面更新結果分類部16が、画面更新結果Rcから、画面更新結果Rbの要素dと同一階層で、かつ順序木の順序性に従った順番が同一の要素を選択し、要素d’に設定する。そして、画面更新結果分類部16は、要素dのタグ名と要素d’のタグ名とが等しいか否かを判定し、等しい場合には、処理はステップS53へ移行し、異なる場合には、処理はステップS63へ移行する。
一例として、図26に、分類基準aが分類基準23、Rbが、順序ID=R546についての画面更新結果、Rcが、順序ID=R564についての画面更新結果の場合における、DOMの構文木構造の比較例を示す。RbのDOM83Bのタグ名「P」の要素が要素dに設定されている場合、RcのDOM83Cにおいて、要素dと同じく、ルートノードの次の階層における2番目の要素であるタグ名「P」の要素が要素d’に設定される(図26中の「比較(1)」)。この場合、要素dのタグ名及び要素d’のタグ名は、共に「P」で等しいため、処理はステップS53へ移行する。
ステップS53では、画面更新結果分類部16が、要素dにTempフラグが設定されているか否かを判定する。要素dにTempフラグが設定されている場合には、処理はステップS54へ移行し、設定されていない場合には、処理はステップS58へ移行する。例えば、上記の図26中の「比較(1)」の例の場合、要素dには、Tempフラグが設定されているため、処理はステップS54へ移行する。
ステップS54では、要素dの内包文字列及び要素d’の内包文字列の一方が初期状態(更新されていない状態、例えば、Null)か否かを判定する。Tempフラグが設定されている場合には、要素間の同値性の判断において、内包文字列の相違を無視することを示す。ただし、一方の要素の内包文字列が更新された状態で、他方の要素の内包文字列が初期状態であることにより、要素間の内包文字列が相違する場合には、両要素は相違するものとして扱う。要素dの内包文字列及び要素d’の内包文字列の一方が初期状態の場合には、処理はステップS55へ移行する。
ステップS55では、画面更新結果分類部16が、画面更新結果Rbが画面更新結果Rcと同値にならない理由として、要素dと要素d’の内包文字列が不一致である旨を、理由記憶領域に記録して、処理はステップS56へ移行する。上記ステップS54が否定判定の場合には、処理はステップS55をスキップして、ステップS56へ移行する。なお、要素d及び要素d’のいずれもが、内包文字列を持たない場合も、ステップS54は否定判定される。
ステップS56では、画面更新結果分類部16が、要素dの子要素と、要素d’の子要素とが、1対1で対応しているか否かを判定する。子要素が1対1で対応しているとは、要素d及び要素d’の各々が、同じ数の子要素を持ち、その子要素の各々の内包文字列が同一であることを意味し、子要素の並び順は問わない。要素dの子要素と、要素d’の子要素とが、1対1で対応していない場合には、処理はステップS57へ移行する。
ステップS57では、画面更新結果分類部16が、画面更新結果Rbが画面更新結果Rcと同値にならない理由として、要素dと要素d’とで、子要素が1対1で対応していない旨を、理由記憶領域に記録する。要素dと要素d’とで、子要素が1対1で対応している場合には、ステップS57の処理はスキップされる。なお、要素d及び要素d’のいずれもが、子要素を持たない場合も、要素dと要素d’との子要素は1対1で対応すると判定する。そして、画面更新結果Rbから次の要素を選択して、ステップS51のループ処理を繰り返す。
上記ステップS53で、要素dにTempフラグが設定されていないと判定されて、処理がステップS58へ移行した場合には、画面更新結果分類部16が、要素dの内包文字列と要素d’の内包文字列とが一致するか否かを判定する。一致しない場合には、処理はステップS59へ移行する。ステップS59では、画面更新結果分類部16が、画面更新結果Rbが画面更新結果Rcと同値にならない理由として、要素dと要素d’の内包文字列が不一致である旨を、理由記憶領域に記録して、処理はステップS60へ移行する。要素dの内包文字列と要素d’の内包文字列とが一致する場合には、処理はステップS59をスキップして、ステップS60へ移行する。
ステップS60では、画面更新結果分類部16が、要素dにSeqフラグが設定されているか否かを判定する。要素dにSeqフラグが設定されている場合には、処理はステップS61へ移行する。例えば、図26中の「比較(2)」又は「比較(3)」の場合、要素dには、Seqフラグが設定されているため、処理はステップS54へ移行する。
ステップS61では、画面更新結果分類部16が、要素dの子要素と、要素d’の子要素とが一致しているか否かを判定する。子要素が一致しているとは、要素d及び要素d’の各々が、同じ数の子要素を持ち、その子要素の各々の内包文字列が同一であり、かつ子要素の並び順も一致している場合である。要素dと要素d’との子要素が一致していない場合には、処理はステップS62へ移行する。
ステップS62では、画面更新結果分類部16が、画面更新結果Rbが画面更新結果Rcと同値にならない理由として、要素dと要素d’とで、子要素が一致していない旨を、理由記憶領域に記録する。要素dと要素d’との子要素が一致している場合には、ステップS62の処理はスキップされる。なお、要素d及び要素d’のいずれもが、子要素を持たない場合も、要素dと要素d’との子要素は一致すると判定する。そして、画面更新結果Rbから次の要素を選択して、ステップS51のループ処理を繰り返す。
上記ステップS60で、要素dにSeqフラグが設定されていないと判定された場合には、要素dと要素d’との子要素の並び順まで含めて一致しているか否かを判定する必要はない。したがって、処理はステップS56へ移行し、要素dと要素d’との子要素が1対1で対応しているか否かを判定する。
上記ステップS52で、要素dのタグ名と要素d’のタグ名とが異なると判定された場合には、処理はステップS63へ移行する。ステップS63では、画面更新結果分類部16が、画面更新結果Rbが画面更新結果Rcと同値とならない理由として、画面更新結果Rbと画面更新結果Rcとの構文木構造が、要素dにおいて相違する旨を、理由記憶領域に記録する。そして、画面更新結果Rbから次の要素を選択して、ステップS51のループ処理を繰り返す。
画面更新結果Rbの要素で、要素dに未設定の要素が存在しなくなった場合には、ステップS51のループ処理を抜けて、同値分類処理(図24)に戻る。なお、要素dの子要素として、上記ステップS56で、1対1で対応するか否かを判定された要素、又は上記ステップS61で、一致するか否かを判定された要素については、要素dに設定する対象から除外する。
図26の例で、上記の要素比較処理を具体的に説明する。なお、図26中の「比較(1)」、「比較(2)」、及び「比較(3)」のいずれの場合も、要素dと要素d’のタグ名は等しいため、ステップS53以降の処理について説明する。
「比較(1)」で示す要素の比較では、要素“P#date”にTempフラグが設定されており、いずれの要素も内包文字列(時刻)が更新されており、いずれの要素も子要素を持たない。したがって、処理はステップS53→S54→S56と移行し、要素“P#date”に関しては、理由記憶領域に同値とならない理由は記録されない。すなわち、Rb(DOM83B)の要素“P#date”と、Rc(DOM83C)の要素“P#date”とは同値であると判定される。
「比較(2)」で示す要素の比較では、要素“UL#ranking”にSeqフラグが設定されており、いずれの要素も内包文字列を持たず、いずれの要素も子要素を持つ。また、その子要素である要素“LI”の各々は、並び順まで含め一致している。したがって、処理はステップS53→S58→S60→S61と移行し、要素“UL#ranking”に関しては、理由記憶領域に同値とならない理由は記録されない。すなわち、Rb(DOM83B)の要素“UL#ranking”と、Rc(DOM83C)の要素“UL#ranking”とは同値であると判定される。
「比較(3)」で示す要素の比較では、要素“SVG#map”にSeqフラグが設定されており、いずれの要素も内包文字列を持たず、いずれの要素も子要素を持つ。また、その子要素である要素“CIRCLE”の各々は、1対1で対応はしているが、並び順は一致していない。したがって、処理はステップS53→S58→S60→S61→S62と移行し、要素“UL#ranking”に関して、理由記憶領域に同値とならない理由(子要素の不一致)が記録される。すなわち、Rb(DOM83B)の要素“SVG#map”と、Rc(DOM83C)の要素“SVG#map”とは同値ではないと判定される。
次に、図24に示す同値分類処理のステップS65で、画面更新結果分類部16が、理由記憶領域に、1つでも理由が記録されているか否かを判定する。理由が記録されている場合には、処理はステップS66へ移行し、理由が記録されていない場合には、処理はステップS67へ移行する。
ステップS67では、画面更新結果分類部16が、理由記憶領域に理由が記録されていないことを受けて、画面更新結果Rbは、画面更新結果Rcと同値であると判定する。そして、画面更新結果分類部16は、画面更新結果Rbの同値集合IDとして、画面更新結果Rcの同値集合IDと同じScを設定して、画面更新結果DB23に記録し、処理はステップS44のループ処理を抜ける。そして、分類基準aの画面更新結果DB23から、同値集合IDが未決定の次の画面更新結果Rbを選択して、ステップS42のループ処理を繰り返す。
一方、ステップS66では、分類基準aの画面更新結果DB23に記録されている同値集合IDのうち、Scに未設定の同値集合IDが残っているか否かを判定する。Scに未設定の同値集合IDが残っている場合には、次の同値集合IDを選択してScに設定し、ステップS44のループ処理を繰り返す。分類基準aの画面更新結果DB23に記録されている全ての同値集合IDをScに設定済みとなった場合には、処理はステップS68へ移行する。
ステップS68では、上記ステップS65における、理由記憶領域に理由が記録されているとの判定結果を受けて、画面更新結果分類部16が、画面更新結果Rbは、画面更新結果Rcと同値ではないと判定する。そして、画面更新結果分類部16は、画面更新結果Rbの同値集合IDとして、ユニークな値(Sb)を設定して、画面更新結果DB23に記録する。
次に、ステップS69で、画面更新結果分類部16が、分類基準aについての分類理由DB24の行がSb、列がSc(又は、行がSc、列がSb)に対応するセルに、理由記憶領域に記録されている理由を記録する。複数の理由が記録されている場合には、全ての理由を、同一セルに記録する。そして、処理はステップS44のループ処理を抜け、分類基準aの画面更新結果DB23から、同値集合IDが未決定の次の画面更新結果Rbを選択して、ステップS42のループ処理を繰り返す。
分類基準aの画面更新結果の全てについて、同値集合IDが決定済みとなった場合には、ステップS42のループ処理を抜ける。そして、全ての分類基準について分類基準aに設定済みとなった場合には、ステップS41のループ処理を抜け、画面検証支援処理(図19)に戻る。
次に、図19に示す画面検証支援処理のステップS70で、図27に詳細を示す画面表示処理が実行される。
図27に示す画面表示処理のステップS71で、検証画面出力部17が、分類基準毎に、同値集合数が、理想的な同値集合数(ICN)と等しくなく、かつICNに近いほど大きくなり、同値集合数が0に近いほど小さくなる強調度1を算出する。検証画面出力部17は、例えば(3)式により分類基準毎の強調度1を算出する。図28に、ICN=7とした場合における分類基準毎の同値集合数(CN)及び強調度1の一例を示す。
次に、ステップS72で、検証画面出力部17が、例えば図17に示す検証画面30の分類基準選択スライドバー31を、ユーザ対話制御部11を介して、表示装置に表示する。具体的には、検証画面出力部17は、所定長さのバー31Aを作成し、バー31Aの一端を同値集合数の最小値(図28の例では、「2」)、他端を同値集合数の最大値(図28の例では、「15」)とし、バー31Aの各位置に同値集合数を対応させる。そして、検証画面出力部17は、バー31Aに沿って、各分類基準の分類基準名(例えば、「“基準”+基準ID」)を、その分類基準における同値集合数に対応する位置に配置する。この際、検証画面出力部17は、上記ステップS71で算出した分類基準毎の強調度1が大きい程、分類基準名の文字サイズを大きくする。また、検証画面出力部17は、初期設定として、つまみ31Bを、強調度1が最大値となる分類基準の位置に配置する。図28の例では、強調度1が最大値となる分類基準は、分類基準22及び23である。強調度1が最大値となる分類基準が複数存在する場合には、いずれかを選択すればよい(図17の例では分類基準23)。
次に、ステップS73で、検証画面出力部17が、つまみ31Bの位置に対応する分類基準について、コールバック関数集合毎に、検証の際に注目すべき度合いが高いほど大きい値となる強調度2を、例えば(4)式により算出する。図29に、分類基準23におけるコールバック関数集合毎の強調度2の一例を示す。あわせて、そのコールバック関数集合に含まれるコールバック関数の数(FN)、そのコールバック関数集合に属するコールバック呼出順序における画面更新結果に付与された同値集合ID、及び同値集合数(CN)を示す。FN、同値集合ID、及びCNは、該当の分類基準における画面更新結果DB23から得られる。
次に、ステップS74で、検証画面出力部17が、検証画面30の分類結果表示領域32に、分類基準選択スライドバー31で選択された分類基準(ここでは、分類基準23)についての分類結果を表示する。具体的には、検証画面出力部17は、各コールバック関数集合に対応するノード33を、コールバック関数集合の包含関係に基づいて、エッジで接続して配置する。また、検証画面出力部17は、各ノード33内に、コールバック関数集合名(例えば、含まれるコールバック関数名を連結したもの)を表示する。さらに、検証画面出力部17は、画面更新結果DB23を参照して、各ノード33内に、そのコールバック関数集合に属するコールバック呼出順序と、対応する同値集合IDとを表示する。検証画面出力部17は、ノード33に対応するコールバック関数集合について算出された強調度2が大きい程、ノード33内の文字サイズを大きくする。
次に、ステップS75で、検証画面出力部17が、同値集合数が2以上であるコールバック関数集合に対応するノード33に紐付けて、ノード33内に含まれる同値集合IDが示す同値集合同士が同値とならなかった理由を理由一覧34として表示する。具体的には、検証画面出力部17は、該当の分類基準(ここでは、分類基準23)についての分類理由DB24の行及び列の組み合わせが、ノード33内に表示されている同値集合IDとなる部分を抜き出す。例えば、図17の検証画面30の例では、コールバック関数集合:F4×F5に対応するノード33内には、同値集合IDとして、S2及びS6が表示されている。したがって、検証画面出力部17は、例えば、図14に示す分類基準23の分類理由DB24のうち、行がS6、列がS2の部分を抜き出して、理由一覧34として表示する。そして、検証画面出力部17は、ノード33と理由一覧34とをエッジで接続する。そして、画面表示処理を終了して、画面検証支援処理(図19)に戻り、画面検証支援処理自体も終了する。
なお、ユーザにより、分類基準選択スライドバー31のつまみ31Bがバー31A上でスライドされ、分類基準の選択が変更された場合には、検証画面出力部17は、選択された分類基準について、上記ステップS73〜S75の処理を実行する。分類基準を選択する際に、強調度1の大きさに応じた文字サイズで表示されている分類基準名から選択することができるため、選択する分類基準のチューニングを容易に行うことができる。
また、検証画面出力部17は、ユーザにより、検証画面30上からいずれかのノード33がクリックされるなどして選択された場合に、図30に示すように、DOMの構造比較画面35を、検証画面30上に重畳して表示するようにしてもよい。この場合、検証画面出力部17は、分類基準選択スライドバー31で選択されている分類基準についての画面更新結果DB23から、選択されたノード33内に表示されている同値集合IDが付与された画面更新結果を取得して、表示すればよい。また、検証画面出力部17は、構造比較画面35で表示しているDOMの要素のうち、選択されたノード33に紐付いている理由一覧34に記載されている要素、すなわち、画面更新結果が同値とならなかった原因となる要素を強調表示するようにしてもよい。
上記のような検証画面30を表示することにより、ユーザは、分類基準選択スライドバー31上で強調表示された分類基準名から、少数かつ適切な分類基準を選択することができる。
また、同値集合IDが1つのみ表示されているノード33に対応するコールバック関数集合(図17の例では、F4×F6、及びF5×F6)では、コールバック関数をいずれの順序で呼び出しても、同値な画面更新結果が得られることを読み取ることができる。一方で、2以上の同値集合IDが表示されているノード33からは、以下の情報が読み取れる。例えば、図17の例で、コールバック関数集合F4×F5、及びF4×F5×F6の各々は、呼び出したコールバック関数がそれぞれ同じなのにも関わらず、その呼出順序の違いによって、異なる画面更新結果になることが読み取れる。
これは、2以上の同値集合IDが表示されているノード33から、仕様違反を引き起こすコールバック関数の呼出順序の候補を把握することができることを意味する。例えば、コールバック関数集合:F4×F5のノード33から、コールバック関数の呼出順序F4⇒F5又はF5⇒F4が、仕様違反を引き起こすコールバック関数の呼出順序であることが読み取れる。また、そのノード33に紐付いた理由一覧34は、どの要素がどのような仕様違反となっているかを直感的に把握できる表現とすることができる。そのため、理由一覧34も参照することにより、コールバック関数の呼出順序の相違により、画面更新結果のどの要素が仕様違反となっているかを読み取ることができる。さらに、構造比較画面35を表示させてDOMを確認することで、仕様違反を引き起こすコールバック関数の呼出順序の候補のうち、いずれのコールバック関数の呼出順序が仕様違反を引き起こすものであるかを特定することができる。
また、ノード及びエッジを用いたグラフで、コールバック関数集合の包含関係を表し、強調度2を用いてノード33を強調表示することにより、仕様違反を引き起こす、より根本的な原因から特定することができるため、効率よく検証を行うことができる。
具体的には、図17及び図30の例で、ユーザは、最も強調表示されたコールバック関数集合:F4×F5に注目し、構造比較画面35を表示させて、同値集合S2及びS6の各々に対応するDOMを目視確認する。そして、ユーザは、同値集合S2が、UL#ranking要素の子要素の並び順が不一致であることにより、仕様違反を引き起こしていること、及び同値集合S6は仕様違反ではないことを特定する。すなわち、コールバック関数の呼出順序F4⇒F5が、UL#ranking要素の仕様違反を引き起こすことを特定することができる。
次に、ユーザは、コールバック関数集合:F4×F5と包含関係があり、かつ強調表示されている他の関数集合として、コールバック関数集合:F4×F5×F6に注目する。ユーザは、既に判明した仕様違反の理由「UL#ranking要素の子要素不一致」以外の理由で同値分類されていない同値集合S7及びS9の各々に対応するDOMを目視確認する。そして、ユーザは、同値集合S9が、SVG#map要素の子要素の並び順が不一致であることにより、仕様違反を引き起こしていること、及び同値集合S7は仕様違反ではないことを特定する。同値集合S6を生成するコールバック関数呼出順序F5⇒F4は、仕様違反を引き起こさないことが既に判明している。したがって、コールバック関数の呼出順序F6⇒F4が、SVG#map要素の仕様違反を引き起こすことを特定することができる。
このように、図17及び図30の例では、以下の根本原因を効率良く絞りこむことができる。
・UL#ranking要素の仕様違反が、コールバック関数の呼出順序F5⇒F4で引き起こされること
・SVG#map要素の仕様違反が、コールバック関数の呼出順序F6⇒F4で引き起こされること
以上説明したように、本実施形態に係る画面検証支援装置によれば、複数のWebAPIが並列に呼び出されるウェブアプリケーションの画面の仕様違反を検証するために、WebAPIの返信に応じたコールバック関数の呼出順序毎の画面更新結果を取得する。そして、検証対象の削減を図るため、取得した画面更新結果を同値の画面更新結果毎に分類する。この同値分類を行うための分類基準を規定するフラグを、コールバック関数の実行により更新される可能性のあるHTMLの要素に付与しておく。フラグでは、画面更新結果の同値性を判断する際に、子要素の並び順を比較対象とするか否か、及び内包文字列の同値性を比較対象とするか否かを設定することができる。このようなフラグを設定することにより、単純な文字列の一致度により画面更新結果を分類する場合に比べ、人が目視により検証する際に考慮するような、柔軟な分類基準を適用することができる。そして、フラグの設定のあらゆる組み合わせにより複数の分類基準を作成し、その中から、画面更新結果の同値集合数が、理想的な同値集合数より大きく、かつ理想的な同値集合数に近い分類数となる適切な分類基準を特定する。したがって、特定された分類基準にしたがって画面更新結果を分類し、同値の画面更新結果から1つを検証対象として選択すればよいため、アプリケーション画面の検証において、少数かつ適切な検証対象を特定することができる。
また、コールバック関数集合の包含関係を表すグラフを表示し、仕様違反を含むコールバック関数集合のうち、検証の際に注目すべき度合い包含関係の上位階層ほど強調して表示するため、仕様違反を引き起こす根本原因を効率よく絞り込むことができる。
さらに、コールバック関数の呼出順序の相違により、画面更新結果が同値とならなかった理由や、同値とならなかった画面更新結果の構造(DOM)を表示することにより、より効率よく仕様違反の検証を行うことができる。
なお、上記実施形態では、要素が持つ子要素の並び順を同値性の比較対象とする場合にSeqフラグを設定し、要素の内包文字列の同値性を比較対象としない場合にTempフラグを設定する場合について説明したが、これに限定されない。Tempフラグについても、要素の内包文字列の同値性を比較対象とする場合に設定するようにしてもよい。また、Seqフラグについても、要素が持つ子要素の並び順を同値性の比較対象としない場合に設定するようにしてもよい。ただし、上記実施形態のようにフラグを設定することで、TempフラグとSeqフラグとが排他的な関係となるため、Tempフラグ及びSeqフラグの設定のあらゆる組合せから分類基準を作成する際に、フラグの組み合わせ数を少なくすることができる。これにより、分類基準の作成、及び分類基準毎の各種処理の計算コストを削減することができる。
また、上記では、画面検証支援プログラム50が記憶部43に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD−ROM、DVD−ROM、USBメモリ等の記録媒体に記録された形態で提供することも可能である。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、
複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつ前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々に、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、
前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成し、
前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する、
処理を実行させる画面検証支援プログラム。
(付記2)
前記複数の分類基準の各々の中で、前記特定した分類基準を強調して表示することをさらに含む処理を前記コンピュータに実行させる付記1記載の画面検証支援プログラム。
(付記3)
前記階層化文書の各々が示す画面を生成するために実行されたコールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した分類結果を表示すると共に、各コールバック関数集合の前記分類結果の表示を、前記コールバック関数集合の包含関係を表すように表示することをさらに含む処理を前記コンピュータに実行させる付記1又は付記2記載の画面検証支援プログラム。
(付記4)
前記コールバック関数集合に含まれるコールバック関数の数が少ないほど、かつ前記分類結果が表す分類数が2に近いほど、前記分類結果の表示の強調の度合いを強くする付記3記載の画面検証支援プログラム。
(付記5)
前記コールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した場合に、同値とならない階層化文書において、要素が持つ複数の子要素の順序が同値でないか、又は要素の内包文字列が同値でない要素を特定して、該コールバック関数集合の分類結果に紐付けて表示することをさらに含む処理を前記コンピュータに実行させる付記3又は付記4記載の画面検証支援プログラム。
(付記6)
前記コールバック関数集合毎の前記分類結果が選択された場合に、該分類結果に含まれる階層化文書を表示することをさらに含む処理を前記コンピュータに実行させる付記3〜付記5のいずれか1項記載の画面検証支援プログラム。
(付記7)
前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素を、HTMLにおいてID属性が付与された要素、及びユーザにより指定された要素の少なくとも一方とする付記1〜付記6のいずれか1項記載の画面検証支援プログラム。
(付記8)
複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつ前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々に、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成する作成部と、
前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する特定部と、
を含む画面検証支援装置。
(付記9)
前記特定部は、前記複数の分類基準の各々の中で、前記特定した分類基準を強調して表示する付記8記載の画面検証支援装置。
(付記10)
前記特定部は、前記階層化文書の各々が示す画面を生成するために実行されたコールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した分類結果を表示すると共に、各コールバック関数集合の前記分類結果の表示を、前記コールバック関数集合の包含関係を表すように表示する付記8又は付記9記載の画面検証支援装置。
(付記11)
前記特定部は、前記コールバック関数集合に含まれるコールバック関数の数が少ないほど、かつ前記分類結果が表す分類数が2に近いほど、前記分類結果の表示の強調の度合いを強くする付記10記載の画面検証支援装置。
(付記12)
前記特定部は、前記コールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した場合に、同値とならない階層化文書において、要素が持つ複数の子要素の順序が同値でないか、又は要素の内包文字列が同値でない要素を特定して、該コールバック関数集合の分類結果に紐付けて表示する付記10又は付記11記載の画面検証支援装置。
(付記13)
前記特定部は、前記コールバック関数集合毎の前記分類結果が選択された場合に、該分類結果に含まれる階層化文書を表示する付記10〜付記12のいずれか1項記載の画面検証支援装置。
(付記14)
前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素を、HTMLにおいてID属性が付与された要素、及びユーザにより指定された要素の少なくとも一方とする付記8〜付記13のいずれか1項記載の画面検証支援装置。
(付記15)
コンピュータに、
複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつ前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々に、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、
前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成し、
前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する、
処理を実行させる画面検証支援方法。
(付記16)
前記複数の分類基準の各々の中で、前記特定した分類基準を強調して表示することをさらに含む処理を前記コンピュータに実行させる付記15記載の画面検証支援方法。
(付記17)
前記階層化文書の各々が示す画面を生成するために実行されたコールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した分類結果を表示すると共に、各コールバック関数集合の前記分類結果の表示を、前記コールバック関数集合の包含関係を表すように表示することをさらに含む処理を前記コンピュータに実行させる付記15又は付記16記載の画面検証支援方法。
(付記18)
前記コールバック関数集合に含まれるコールバック関数の数が少ないほど、かつ前記分類結果が表す分類数が2に近いほど、前記分類結果の表示の強調の度合いを強くする付記17記載の画面検証支援方法。
(付記19)
前記コールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した場合に、同値とならない階層化文書において、要素が持つ複数の子要素の順序が同値でないか、又は要素の内包文字列が同値でない要素を特定して、該コールバック関数集合の分類結果に紐付けて表示することをさらに含む処理を前記コンピュータに実行させる付記17又は付記18記載の画面検証支援方法。
(付記20)
前記コールバック関数集合毎の前記分類結果が選択された場合に、該分類結果に含まれる階層化文書を表示することをさらに含む処理を前記コンピュータに実行させる付記17〜付記19のいずれか1項記載の画面検証支援方法。
(付記21)
前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素を、HTMLにおいてID属性が付与された要素、及びユーザにより指定された要素の少なくとも一方とする付記15〜付記20のいずれか1項記載の画面検証支援方法。
(付記22)
コンピュータに、
複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつ前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々に、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成し、
前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する
ことを含む処理を実行させる画面検証支援プログラムを記憶した記憶媒体。
10 画面検証支援装置
11 ユーザ対話制御部
12 分類基準作成部
13 アプリ実行部
14 コールバック関数呼出制御部
15 画面更新結果記録部
16 画面更新結果分類部
17 検証画面出力部
21 分類基準データベース(DB)
22 アプリ実行設定DB
23 画面更新結果DB
24 分類理由DB
30 検証画面
31 分類基準選択スライドバー
32 分類結果表示領域
33 ノード
34 理由一覧
35 構造比較画面
40 コンピュータ
41 CPU
42 メモリ
43 記憶部
50 画面検証支援プログラム
60 情報記憶領域
71 実行設定登録画面
72 フラグ設定対象登録画面

Claims (9)

  1. コンピュータに、
    複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつ前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々に、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、
    前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成し、
    前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する、
    処理を実行させる画面検証支援プログラム。
  2. 前記複数の分類基準の各々の中で、前記特定した分類基準を強調して表示することをさらに含む処理を前記コンピュータに実行させる請求項1記載の画面検証支援プログラム。
  3. 前記階層化文書の各々が示す画面を生成するために実行されたコールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した分類結果を表示すると共に、各コールバック関数集合の前記分類結果の表示を、前記コールバック関数集合の包含関係を表すように表示することをさらに含む処理を前記コンピュータに実行させる請求項1又は請求項2記載の画面検証支援プログラム。
  4. 前記コールバック関数集合に含まれるコールバック関数の数が少ないほど、かつ前記分類結果が表す分類数が2に近いほど、前記分類結果の表示の強調の度合いを強くする請求項3記載の画面検証支援プログラム。
  5. 前記コールバック関数集合毎に、該コールバック関数集合に含まれるコールバック関数の呼出順序毎の前記階層化文書の各々を前記特定した分類基準で分類した場合に、同値とならない階層化文書において、要素が持つ複数の子要素の順序が同値でないか、又は要素の内包文字列が同値でない要素を特定して、該コールバック関数集合の分類結果に紐付けて表示することをさらに含む処理を前記コンピュータに実行させる請求項3又は請求項4記載の画面検証支援プログラム。
  6. 前記コールバック関数集合毎の前記分類結果が選択された場合に、該分類結果に含まれる階層化文書を表示することをさらに含む処理を前記コンピュータに実行させる請求項3〜請求項5のいずれか1項記載の画面検証支援プログラム。
  7. 前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素を、HTMLにおいてID属性が付与された要素、及びユーザにより指定された要素の少なくとも一方とする請求項1〜請求項6のいずれか1項記載の画面検証支援プログラム。
  8. 複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつ前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々に、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成する作成部と、
    前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する特定部と、
    を含む画面検証支援装置。
  9. コンピュータに、
    複数のコールバック関数が並列に実行されて生成されるウェブアプリケーションの画面について、前記複数のコールバック関数の呼出順序毎の画面の各々を示す階層化文書の各々に含まれ、かつ前記複数のコールバック関数の少なくとも1つにより更新される可能性がある予め定めた要素の各々に、前記階層化文書を同値性に基づいて分類するための分類基準を規定するフラグであって、同一階層かつ同一種別の要素間の比較の際に、該要素が持つ複数の子要素の順序の同値性を比較するか否かを示す順序同値性フラグ、及び該要素の内包文字列の同値性を比較するか否かを示す文字列同値性フラグを設定し、
    前記順序同値性フラグ及び前記文字列同値性フラグの設定の組み合わせ毎に、複数の分類基準を作成し、
    前記複数の分類基準の各々にしたがって、前記複数のコールバック関数の呼出順序毎の階層化文書の各々を分類した場合の分類数が、前記複数のコールバック関数の呼出順序に制約がないとした場合の基準分類数以上、かつ該基準分類数に近くなる分類基準を特定する
    処理を実行させる画面検証支援方法。
JP2015141611A 2015-07-15 2015-07-15 画面検証支援プログラム、装置、及び方法 Pending JP2017027108A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015141611A JP2017027108A (ja) 2015-07-15 2015-07-15 画面検証支援プログラム、装置、及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015141611A JP2017027108A (ja) 2015-07-15 2015-07-15 画面検証支援プログラム、装置、及び方法

Publications (1)

Publication Number Publication Date
JP2017027108A true JP2017027108A (ja) 2017-02-02

Family

ID=57949724

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015141611A Pending JP2017027108A (ja) 2015-07-15 2015-07-15 画面検証支援プログラム、装置、及び方法

Country Status (1)

Country Link
JP (1) JP2017027108A (ja)

Similar Documents

Publication Publication Date Title
US20170286389A1 (en) Dynamic Generation of Electronic Forms and Documents
CN110968309B (zh) 一种模板生成方法、装置、电子设备及存储介质
JP6419736B2 (ja) ダイアログカスタマイズのためのシステムおよび方法
US8918384B2 (en) Decentralized web annotation
CN107729475B (zh) 网页元素采集方法、装置、终端与计算机可读存储介质
US20180373710A1 (en) Managing changes to one or more files via linked mapping records
KR101494844B1 (ko) 메타 데이터를 이용한 차트 변환 시스템 및 그 방법
US20120159359A1 (en) System and method for generating graphical dashboards with drill down navigation
US9658848B2 (en) Stored procedure development and deployment
CN107832052B (zh) 展示预览页面的方法、装置和存储介质以及电子设备
JP2007026316A (ja) 画像管理装置、ならびに画像管理用コンピュータプログラムおよびそれを記録した記録媒体
US7992080B2 (en) Re-usable clauses
US20200133986A1 (en) Network graph parser
WO2011135733A1 (ja) Webページの制御方法、計算機システム及びプログラム
US20090282011A1 (en) Data acquisition apparatus and data acquisition method
US20180089154A1 (en) Computer implemented system and method for transforming web content for display on multiple form factors
US8051110B2 (en) Identifying screen flows to support multiple entities and their diverse rules with a single application instance
JP6446819B2 (ja) 文書差分表示プログラム及び情報処理装置
JP2008242873A (ja) ソフトウェア自動構成装置及び方法
US20150186476A1 (en) Search method and information processing device
JP2016151908A (ja) パーソナル情報匿名化支援装置
CN116483344A (zh) 代码生成方法及装置、终端设备、计算机可读存储介质
JP2017027108A (ja) 画面検証支援プログラム、装置、及び方法
JP6244902B2 (ja) ガジェット間表示連携方法、ガジェット間表示連携プログラム及び情報処理装置
JP2009169596A (ja) 家系図画像生成装置、家系図画像生成方法、及びプログラム