(57)【特許請求の範囲】
【請求項１】
１以上のコンピュータシステムが、クライアント層を含む動的なWebアプリケーションにアクセスするステップと、
前記１以上のコンピュータシステムが、前記動的なWebアプリケーションをクロールするステップと、前記クロールは、ガイドクローリングの１以上のインスタンスを含み、それぞれのインスタンスは、自動クローリングの先行するインスタンスが、ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態に到達したときに始動され、始動されたとき、前記動的なWebアプリケーションに関して１以上の予め決定された動作を実行し、
前記１以上のコンピュータシステムが、前記クローリングに基づいて、前記動的なWebアプリケーションのスクリーン置換えモデルであって、階層的な有限状態マシン（FSM）を含むスクリーン置換えモデルを生成するステップと、
前記１以上のコンピュータシステムが、前記スクリーン置換えモデルの生成が終了した後、前記動的なWebアプリケーションのクライアント層を検証するために前記スクリーン置換えモデルにモデルチェックを行うステップと、
を含むことを特徴とする方法。
【請求項２】
前記動的なWebアプリケーションは、HTML（Hyper  Text  Markup  Language）コンテンツ、XML（Extensible  Markup  Language）コンテンツ、又はJavaScriptリソースのうちの１以上を含む、
請求項１記載の方法。
【請求項３】
前記動的なWebアプリケーションは、前記動的なWebアプリケーションの始動又は実行の間にAJAX（Asynchronous  JavaScript  and  XML）を利用する、
請求項１記載の方法。
【請求項４】
前記動的なWebアプリケーションは、前記動的なWebアプリケーションに組み込まれた１以上の実行可能なコードセグメントを含み、
前記クローリングは、１以上の実行可能なコードセグメントを実行することを含む、
請求項１記載の方法。
【請求項５】
前記動的なWebアプリケーションは、１以上のWebページを含み、
前記動的なWebアプリケーションをクロールするステップは、前記１以上のWebページのそれぞれについて、
前記Webページを表示するためのコンテンツを受信するステップと、
受信されたコンテンツを、前記Webページのドキュメントオブジェクトモデル（DOM）の表現に変換するステップと、
前記WebページのDOMの表現をクロールするステップとを含む、
請求項１記載の方法。
【請求項６】
前記受信されたコンテンツを、前記Webページのうちの現在のページのDOMの表現に変換するステップは、
前記動的なWebアプリケーションのWebページのうちの前のページのDOMの表現を受信するステップと、
前記Webページのうちの前記前のページのDOMの表現を変更して、前記Webページのうちの現在のページと前記Webページのうちの前のページとの間の１以上の差を組み込むステップと、を含み、
前記動的なWebアプリケーションのスクリーン置換えモデルを生成するステップは、
前記Webページのうちの現在のページのDOMの表現と、前記Webページのうちの前のページのDOMの表現との間の１以上の差に基づいて前記スクリーン置換えモデルを生成するステップを含む、
請求項５記載の方法。
【請求項７】
ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態は、ユーザからの入力を受信する１以上のユーザインタラクションモジュールを有する前記動的なWebアプリケーションの特定のWebページに対応する状態を含み、
前記動的なWebアプリケーションをクロールすることは、前記１以上のユーザインタラクションモジュールのうちの１以上との相互作用をシミュレートするための１以上の入力を入力するステップを含む、
請求項１記載の方法。
【請求項８】
前記１以上の入力は、前記特定のWebページのDOMの表現の分析を通して自動的に生成される、
請求項７記載の方法。
【請求項９】
前記スクリーン置換えモデルにモデルチェックを行うステップは、前記スクリーン置換えモデルが前記動的なWebアプリケーションについて予め決定された仕様を満たすかを調べるステップを含む、
請求項１記載の方法。
【請求項１０】
前記スクリーン置換えモデルが前記動的なWebアプリケーションについて前記予め決定された仕様を満たすかを調べるステップは、
前記スクリーン置換えモデルが前記仕様において規定される１以上の機能的な特性を満たすかを判定するステップと、
前記スクリーン置換えモデルが前記仕様において規定された前記動的なWebアプリケーションの可用性に関連する１以上のナビゲーション特性を満たすかを判定するステップと、
を含む請求項９記載の方法。
【請求項１１】
ソフトウェアをエンコードしたコンピュータ読み取り可能な記憶媒体であって、
前記ソフトウェアは、コンピュータに、
クライアント層を含む動的なWebアプリケーションにアクセスするステップと、
前記動的なWebアプリケーションをクロールするステップと、前記クロールは、ガイドクローリングの１以上のインスタンスを含み、それぞれのインスタンスは、自動クローリングの先行するインスタンスが、ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態に到達したときに始動され、始動されたとき、前記動的なWebアプリケーションに関して１以上の予め決定された動作を実行し、
前記クロールに基づいて、前記動的なWebアプリケーションのスクリーン置換えモデルであって、階層的な有限状態マシン（FSM）を含むスクリーン置換えモデルを生成するステップと、
前記スクリーン置換えモデルの生成が終了した後、前記動的なWebアプリケーションのクライアント層を検証するために前記スクリーン置換えモデルにモデルチェックを行うステップと、
を実行させる命令を含むことを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項１２】
前記動的なWebアプリケーションは、HTML（Hyper  Text  Markup  Language）コンテンツ、XML（Extensible  Markup  Language）コンテンツ、又はJavaScriptリソースのうちの１以上を含む、
請求項１１記載のコンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記動的なWebアプリケーションは、前記動的なWebアプリケーションの始動又は実行の間にAJAX（Asynchronous  JavaScript  and  XML）を利用する、
請求項１１記載のコンピュータ読み取り可能な記憶媒体。
【請求項１４】
前記動的なWebアプリケーションは、前記動的なWebアプリケーションに組み込まれた１以上の実行可能なコードセグメントを含み、
前記クロールは、１以上の実行可能なコードセグメントを実行することを含む、
請求項１１記載のコンピュータ読み取り可能な記憶媒体。
【請求項１５】
前記動的なWebアプリケーションは、１以上のWebページを含み、
前記動的なWebアプリケーションをクロールするステップは、前記１以上のWebページのそれぞれについて、
前記Webページを表示するためのコンテンツを受信するステップと、
受信されたコンテンツを、前記Webページのドキュメントオブジェクトモデル（DOM）の表現に変換するステップと、
前記WebページのDOMの表現をクロールするステップとを含む、
請求項１１記載のコンピュータ読み取り可能な記憶媒体。
【請求項１６】
前記受信されたコンテンツを、前記Webページのうちの現在のページのDOMの表現に変換するステップは、
前記動的なWebアプリケーションのWebページのうちの前のページのDOMの表現を受信するステップと、
前記Webページのうちの前記前のページのDOMの表現を変更して、前記Webページのうちの現在のページと前記Webページのうちの前のページとの間の１以上の差を組み込むステップと、を含み、
前記動的なWebアプリケーションのスクリーン置換えモデルを生成するステップは、
前記Webページのうちの現在のページのDOMの表現と、前記Webページのうちの前のページのDOMの表現との間の１以上の差に基づいて前記スクリーン置換えモデルを生成するステップを含む、
請求項１５記載のコンピュータ読み取り可能な記憶媒体。
【請求項１７】
ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態は、ユーザからの入力を受信する１以上のユーザインタラクションモジュールを有する前記動的なWebアプリケーションの特定のWebページに対応する状態を含み、
前記動的なWebアプリケーションをクロールすることは、前記１以上のユーザインタラクションモジュールのうちの１以上との相互作用をシミュレートするための１以上の入力を入力するステップを含む、
請求項１１記載のコンピュータ読み取り可能な記憶媒体。
【請求項１８】
前記１以上の入力は、前記特定のWebページのDOMの表現の分析を通して自動的に生成される、
請求項１７記載のコンピュータ読み取り可能な記憶媒体。
【請求項１９】
前記スクリーン置換えモデルにモデルチェックを行うステップは、前記スクリーン置換えモデルが前記動的なWebアプリケーションについて予め決定された仕様を満たすかを調べるステップを含む、
請求項１１記載のコンピュータ読み取り可能な記憶媒体。
【請求項２０】
前記スクリーン置換えモデルが前記動的なWebアプリケーションについて前記予め決定された仕様を満たすかを調べるステップは、
前記スクリーン置換えモデルが前記仕様において規定される１以上の機能的な特性を満たすかを判定するステップと、
前記スクリーン置換えモデルが前記仕様において規定された前記動的なWebアプリケーションの可用性に関連する１以上のナビゲーション特性を満たすかを判定するステップと、
を含む請求項１９記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証に関するものであり、より詳細には動的なWebアプリケーションの検証に関する。
【背景技術】
【０００２】
Webアプリケーションの基本的な検証（又は検査）についての従来の技術は、Selenium、WebKing及びSahiのような捕捉−再生ツールの使用を一般に含む。これらのフレームワークを使用して、特定のWebアプリケーションを検証するのを望むユーザは、１つのテストシナリオを一度に、様々なテストシナリオを通してアプリケーションを手動で使用する。アプリケーションを使用する間にユーザにより行われるアクションは、例えばHTML（Hyper  Text  Markup  Language）DOM（Document  Object  Model）レベルでツールにより記録され、様々なステップで挿入される期待される動作に関するユーザにより定義されたアサーションにより、後に再生される。しかし、この検証技術は、かなりの量の手動の試みを必要とする。アプリケーションにおけるJavaScript(登録商標)コードの単体テストを実行するため、JsUnitのようなフレームワークを使用することができる一方で、このテストの方式は、まさにその本質から、非常にローカライズされた、言語に依存するものであり、手動による集約的なものである。
【０００３】
別の検証技術は、テストケースを生成する観点から、デスクトップのGUI（Graphical  user  interface）アプリケーションのモデルのリバースエンジニアリングを含む。しかし、デスクトップGUIアプリケーションは、現代の動的なWebアプリケーションのリッチなユーザインタフェース及びインタラクティブ性の幾つかを共有する一方で、現代の動的なWebアプリケーションは、従来のデスクトップGUIアプリケーションで共有されないか又は存在しない、例えば同期クライアント−サーバ通信及びDOMに基づくユーザインタフェースのような他の特徴を有する。さらに、これらの従来の技術及び他の従来の技術は、特にAJAX（Asynchronous  JavaScript  and  XML）のような非同期技術を使用したWebアプリケーションといった、動的なWebアプリケーションに不適切なままである。Webアプリケーションの更に他の検証技術は、幾つかの種類の状態に基づくモデルを通した関連する動作を表し、次いで、様々な従来の技術を使用してモデルをチェックすることでWebアプリケーションのテストを提案している。係るアプローチは、手動でモデルを指定し、慣習的、静的、及び／又はユーザインタラクティブ性のないWebアプリケーションに合わせて調整される。さらに、これらのアプローチは、モデルからのテストトレースを生成すること、次いで１つずつこれらのトレースをチェックすることを含む。
【発明の概要】
【課題を解決するための手段】
【０００４】
特定の実施の形態は、Webアプリケーションの検証に関する。特定の実施の形態は、JAVA(登録商標)又は他のソフトウェアプラットフォームを含み、HTML（Hyper  Text  Markup  Language）コンテンツ、XML（Extensible  Markup  Language）コンテンツ、JavaScriptリソース及び／又は他の埋め込まれたリソースを含むWebページを表示する動的なWebアプリケーションの検証に関する。特定の実施の形態は、例えばAJAX（Asynchronous  JavaScript  and  XML）のような非同期技術を利用する動的なWebアプリケーションの検証に関する。特定の実施の形態は、スクリーン置換え図又はモデルの形式で動的なWebアプリケーションの動作モデルを生成する。特定の実施の形態では、スクリーン置換えモデルはXMLでフォーマットされる。特定の実施の形態では、スクリーン置換えモデルは、階層的な有限状態マシン（FSM）を含む。特定の実施の形態では、スクリーン置換えモデルは、配置された動的なWebアプリケーションのガイドクローリング（guided  crawling）の結果として生成される。特定の実施の形態では、クローリングは、全自動のクローリングの２つのインスタンス（instances）、ガイドされる「カスタム」クローリングの少なくとも１つのインスタンスを含む。特定の実施の形態では、モデルのチェックは、スクリーン置換えモデルの生成が終了された後にスクリーン置換えモデルを評価するために使用され、これによりモデルの全体的な特性の評価が可能となる。特定の実施の形態は、動的なWebアプリケーションのクライアント層（client-tier）を評価することに関する。
【０００５】
上述されたように、特定の実施の形態は、動的なWebアプリケーションの評価に関する。例を通して、係る動的なWebアプリケーションは、機能豊かな、クライアント側のユーザインタフェースにより特徴付けられ、高度なユーザインタラクティブ性をサポートする。例を通して、これら動的なWebアプリケーションの係る機能を可能にするため、AJAX及びAdobe  Flashのような技術が利用される。また、上述されたように、特定の実施の形態は、Webアプリケーションのクライアント側の動作を検証することに焦点を当てている。例を通して、Webアプリケーションのクライアント層は、エンドユーザのマシン（又はクライアント装置）内にあり、該マシンで実行されるWebアプリケーションを実現するコードの一部を示す。典型的に、Webアプリケーションは、ネットワークを通してコンテンツを消費し、エンドユーザのマシンのディスプレイの内容を表示する（例えばMicrosoft  Windows(登録商標)  Internet  Explorer,  Mozilla  Firefox,  Apple  Safari,  Google  Chrome及びOpera等といった）Webブラウザの環境で実行される。
【０００６】
一般に、Webアプリケーションは、ネットワークを通してWebブラウザ又は他のクライアントアプリケーションを介してアクセスされるアプリケーション、又はWebブラウザがサポートする言語でコード化され、アプリケーションを実行可能にするためにWebブラウザに依存するコンピュータソフトウェアアプリケーションである。Webアプリケーションは、Webブラウザの遍在性（ubiquity）、（シン・クライアントと呼ばれることがある）クライアントとしてリモートコンピューティング装置で開始されるWebブラウザを使用する便宜性、及びリモートクライアントのソフトウェアを分散及びインストールすることなしに、Webアプリケーションを更新及び維持するための対応する能力、の結果として高い評判を得ている。しばしば、Webアプリケーションを実現するため、Webアプリケーションは、関連するWebサイトのバックエンドサーバで提供される１以上のリソースへのアクセスを必要とする。さらに、Webアプリケーションは、他のアプリケーションに関連する更なるリソースへのアクセスを必要とすることがある。
【０００７】
エンドユーザのマシンで配置されるWebアプリケーションは、Webページをエンドユーザのマシンのディスプレイに表示する。Webブラウザと共に実行されるか、又はWebブラウザの環境で実行されるWebアプリケーションに、Webブラウザに、ディスプレイにWebページを表示させる。WebアプリケーションのWeb  ページは、Webアプリケーションの他のWebページ、及びWebアプリケーションの外部にあるか又はWebアプリケーションに属さないWebページ及びWebサイトへの組み込まれたリンクを含む。特に動的なWebアプリケーションは、ハイパーリンク、アイコン又は他の「クリック可能な」機能として、現在見られているWebページで表示される複数の組み込まれたリンクを含む。典型的な動的なWebアプリケーションは、１以上のリソースを含む場合がある。複数の組み込まれたリソースを含む、Webページを表示するWebページ又はリソースは、コンテンツプレインのテクスチャ情報のようなデータレコード、又は、ソフトウェアプログラム又は他のコードオブジェクト、グラフィックス、画像、オーディオ信号、ビデオ等のようなより複雑なデジタルエンコードされたマルチメディアコンテンツを含む。Webページを作成するための１つの普及しているマークアップ言語は、HTML（Hypertext  Markup  Language）である。他の共通のWebブラウザがサポートする言語及び技術は、XML（Extensible  Markup  Language）、XHTML（Extensible  Hypertext  Markup  Language）、JavaScript、CSS（Cascading  Style  Sheet）及びJAVAを含む。例として、HTMLは、アプリケーション又はWebページの開発者が、ページに組み込むことができる画像、Webアプリケーション及び他のオブジェクトと同様に、テキスト及びリンクの構造的なセマンティクスを示すことで構造化された文書を作成するのを可能にする。一般に、Webページは、静的な文書としてクライアントに伝達されるが、ページに組み込まれたWebエレメントの使用を通して、ページ又はページの系列とのインタラクティブな体験が達成される。クライアント装置でのユーザセッションの間、Webブラウザは、Webアプリケーション又はWebサイトから受信又は検索されたページ及び関連されるリソースを解釈して表示する。
【０００８】
JavaScriptは、動的なWebアプリケーションにアクセスしたときに、対話的又は動的なユーザセッションを可能にするため、様々なWebアプリケーションがユーザセッションのクライアント側での使用のために他のアプリケーションにおけるリソースにアクセスするのを可能にする。AJAX（Asynchronous  JavaScript  and  XMLの略記）は、よりインタラクティブ性に富んだリッチなWebアプリケーションを可能にするため、ユーザセッションのクライアント側で使用される相互に関係のある技術からなるグループを示す。JavaScript又はAJAXを利用して、Webアプリケーションは、必ずしも現在表示されているページの表示及び動作と干渉することなしに、エンドユーザのマシンのバックグランドの動作において、非同期にリソースを検索するため、Webアプリケーションに関連するバックエンドサーバ又は他の外部リソースのプロバイダにリソースの要求を送信する。より詳細には、AJAXを使用するとき、リソースは、XML  HttpRequest（XHR）オブジェクトをリソースのプロバイダに送信することで取得される。XHRは、ドキュメントオブジェクトモデル（DOM;  Document  Object  Model）のアプリケーションプログラミングインタフェース（API:  Application  Programming  Interface）であり、このAPIは、例えばWebサーバにダイレクトのリソースについてHTTP又はHTTPS要求を送出し、要求に応答してサーバから取得されたリソースをスクリプト言語コードにロードするため、Webブラウザのスクリプト言語（例えばJavaScript）と共に使用される。ひとたびリソースがコードにあると、リソースは、例えばHTML又はXML文書又はプレインテキストとして利用可能となる。このように、取得されたリソースは、クライアントが新たなWebページの文書をロードするのを必要とすることなしに、Webブラウザにより表示される現在アクティブな文書を処理するために使用される。幾つかの例示的な実施の形態では、リソースがプレインテキストとして検索されると、プレインテキストは、サーバによりJSON（JavaSCript  Object  Notation）でフォーマット化され、現在のDOMでの使用のためにデータのオブジェクトを作成するためにJavaScriptで評価される。
【図面の簡単な説明】
【０００９】
【図１】例示的な検証のツールキットの環境を示す図である。
【図２】例示的な検証ツールキットを示す図である。
【図３】例示的なクローラを示す図である。
【図４】Webアプリケーションを検証する例示的な方法を示すフローチャートである。
【図５】例示的なコンピューティングシステムを示す図である。
【図６】例示的な階層的な有限状態マシンを示す図である。
【図７】例示的なスクリーン置換え図のグラフィカルな表現である。
【発明を実施するための形態】
【００１０】
図１は、検証ツールキット１０２の例示的な環境１００を示す。検証ツールキット１０２は、図５を参照して以下に更に詳細に記載される１以上のコンピュータシステム内で実行又は動作する。特定の実施の形態では、動的なWebアプリケーション１０４は、検証ツールキット１０２と同じコンピュータシステムで配置される。代替的な実施の形態では、動的なWebアプリケーション１０４は、検証ツールキット１０２を主催するコンピュータシステムに結合される個別のコンピュータシステムで配置される。上述されたように、特定の実施の形態は、動的なWebアプリケーション１０４を検証するために２つのパートのアプローチを実現する。第一のパート（又はステージ）では、検証ツールキット１０２は、動的なWebアプリケーションが配置され、コンピュータシステムで実行されたとき、動的なWebアプリケーション１０４のクライアント層の動作モデル１０８を抽出又は生成する。動的なWebアプリケーション１０４が実行しており、且つ検証ツールキット１０４が動作モデル１０８を同時に生成している間、動的なWebアプリケーション１０４は、動的なWebアプリケーション１０４を実現するために残りのコード及び他のリソースを主催する１以上のバックエンドサーバ１１０と周期的に通信する。
【００１１】
特定の実施の形態では、検証ツールキット１０２により生成された動作モデル１０８は、スクリーン置換えモデルである（動作モデル及びスクリーン置換えモデルが交換可能に使用され、参照符号１０８により共に示される）。さらに、特定の実施の形態では、スクリーン置換えモデル１０８は、有限状態マシン（FSM）の形式を取るか又はFSMの形式で生成され、より詳細には階層的なFSMの形式で生成される。階層的なFSMは、FSMの１以上のノード又は状態のそれぞれがFSMであるようなFSMである。例となる階層的なFSMは、図６を参照して説明される。例となるスクリーン置換え図のグラフィカル表現は、図７を参照して説明される。
【００１２】
特定の実施の形態では、検証ツールキット１０２は、クローラ２１２を含んでおり、このクローラは、本願発明者がガイドクローリング（guided  crawling）と呼ぶプロセスを通して、検査下にある動的なWebアプリケーション１０４を動的、自動的且つ包括的にガイド及び実行する。図２に示されるように、クローラ２１２は、以下に更に詳細に記載されるように、動的なWebアプリケーション１０４のクロールにおけるクローラ２１２による使用のため、ガイダンスエンジン２１４から、ガイダンス指示、パラメータ、及び他の情報のような入力を受ける。クローラ２１２の出力、すなわちスクリーン置換えモデル１０８は、コンパクトな数学モデル又は動的なWebアプリケーション１０４の動作の表現であり、特定の実施の形態では、動的なWebアプリケーション１０４のクライアント層である。１実施の形態では、スクリーン置換えモデル１０８は、XMLでフォーマット化され、その後XML文書として記憶されるか、検証ツールキット１０２によりファイルされる。
【００１３】
第二の部分（又はステージ）では、検証ツールキット１０２は、スクリーン置換えモデル１０８の関心のある特性、及び特にグローバル特性をチェック、検証、及び／又は評価する。特定の実施の形態では、検証ツールキット１０２は、モデルチェッカ２１６を含み、このモデルチェッカは、クローラ２１２により生成されたスクリーン置換えモデル１０８を入力として受け、以下に更に詳細に記載されるように、動的なWebアプリケーション１０４のクライアント層を評価するため、スクリーン置換えモデル１０８のモデルチェックを実行する（幾つかの代替的な実施の形態では、モデルチェッカ２１６は、検証ツールキット１０２及びクローラ２１２とは分離している）。特定の実施の形態では、モデルチェッカ２１６は、仕様又は要件のセット１１１を入力として受ける。モデルチェッカ２１６は、次いでスクリーン置換えモデル１０８が仕様を満たしているか否かを自動的にテストする。例として、モデルチェッカ２１６は、スクリーン置換えモデル１０８が仕様１１１で規定された動的なWebアプリケーション１０４の１以上の機能的な特性を満たすか否かを判定する。別の例として、モデルチェッカ２１６は、スクリーン置換えモデル１０８は仕様１１１で指定された動的なWebアプリケーション１０４の有用性に関する１以上のナビゲーションの特性を満たす。特定の実施の形態では、モデルチェッカ２１６は、スクリーン置換えモデル１０８がその完全な形で生成／完成された後に、モデルチェック及び検証を実行する。すなわち、特定の実施の形態では、スクリーン置換えモデル１０８を生成することは、スクリーン置換えモデル１０８のチェックと同時ではないか、又は該チェックとオーバラップしない。代替的な実施の形態では、生成及びチェックは同時であるか、又はチェックの一部は、生成の一部とオーバラップする場合がある。
【００１４】
特定の実施の形態では、図３に例示されるように、クローラ２１２は、ブラウザ３２０、クローリングコントローラ３２２及びロボットシミュレータ３２４を含む。幾つかの実施の形態では、ブラウザ３２０は、幾つかの観点において、従来のウェブブラウザに類似している。特定の実施の形態では、ブラウザ３２０は、アプリケーションインタフェース３３０を通して動的なWebアプリケーション１０４からのWebページを表示するためのコンテンツ及び他の情報を受け、WebページをDOM表現（例えばDOM階層ツリー）３３２に変換する。幾つかの実施の形態では、ブラウザ３２０は、DOM３２の構築においてアプリケーションインタフェース３３０を支援し、現在のWebページのDOM表現３３２を非同期で更新するそれ自身AJAXエンジン３２６を含む。例示される実施の形態では、プログラマチックインタフェース３２８は、DOM３３２と対話する。例として、プログラマチックインタフェース３２８は、イベント情報をDOM３３２に通過し、DOM３３２に基づいてアップデートを受ける。特定の実施の形態では、プログラマチックインタフェース３２８は、JAVAでコード化されるか又はJAVAに基づく。プログラマチックインタフェース３２８は、クローリングコントローラ３２２に結合されるロボットシミュレータ３２４に結合される。特定の実施の形態では、プログラマチックインタフェース３２８は、ロボットシミュレータ３２４をイネーブルにし、このロボットシミュレータを通してクローリングコントローラ３２２をイネーブルにし、ブラウザ３２０を介して動的なWebアプリケーションと対話／通信する。例示的な実施の形態では、プログラマチックインタフェース３２８は、（クローリングコントローラ３２２の方向で）ロボットシミュレータ３２４から（例えばマウスクリック、キーボードキャラクタの入力のような）入力を受け、この入力をアプリケーションインタフェース３３０を介して動的なWebアプリケーションに供給する。さらに、プログラマチックインタフェース３２８は、（アプリケーションインタフェース３３０及びAJAXエンジン３２６を介して構築された現在のDOM３３２における様々なDOMエレメントの状態を問い合わせるような）出力を受け、この出力を、クローリングコントローラ３２２へのその後の送出のためにロボットシミュレータ３２４に（又は代替的にクローリングコントローラ３２２にダイレクトに）通過する。例となる実施の形態では、クローリングコントローラ３２２は、Technical  University,  Delftにより開発されたcrawljaxコントローラであるか、又はcrawljaxコントローラに類似する場合がある。
【００１５】
特定の実施の形態では、前のDOMがブラウザ３２０により生成されている前のWebページから新たなWebページへのナビゲーションに応じて、ブラウザ３２０は、前のDOMを廃棄して新たなWebページについて新たなDOMを構築するのではなく、新たなWebページを表示するために動的なWebアプリケーション１０４を介して取得された新たなコンテンツ及びリソースを使用して、前のWebページと新たなWebページとの間の差を組み込むために前のDOMを変更する。さらに、特定の実施の形態では、それぞれのDOM／状態を記憶し、全体のDOM／状態自身に基づいて動作モデルを生成するのと対照的に、隣接してナビゲートされるWebページ間の差が記憶され、スクリーンの置換えモデル１０８を生成するために使用される。
【００１６】
動的なWebアプリケーションを検証する２つのパートのアプローチは、従来の検証技術に対して様々な利点を提供する。より詳細には、完成され且つ静的に表現されたモデルに対するモデルチェックが後続する動的なガイドクローリングを通して動的なWebアプリケーションの動作モデルを生成する上述された技術は、幾つかの重要な利点を提供するものであり、その一部又は全部は、本明細書で記載される様々な特定の実施の形態で提供される。係る利点は、以下の更に詳細な記載でより明らかとなるであろう。
【００１７】
特に、ガイドクローリングは、全自動のクローリング又は手動の調査を採用する従来の技術とは対照的に、必要とされる計算量を低減し、コンパクト且つ正確な動作モデルの生成を可能にする一方で、動的、自動的及び包括的な調査を容易にする。参照により、クローリングに基づくモデル生成は、（記憶と同様に処理を含む必要とされる計算リソースの観点で）比較的高価なステップであるので、この観点で、所与のWebアプリケーションで実行されるクローリングの量を制限することは利点がある。１つの特定の実施の形態では、クローラ２１２は、モデル生成効率に悪影響を及ぼすことなしに、必要とされる回数で、モデルチェッカ２１６によるモデルチェックが完成されたスクリーン置換えモデル１０８とオフラインで実行されている間に、１度だけ動的なWebアプリケーション１０４をクロールする。さらに、チェックされる動的なWebアプリケーションの全ての要件がチェック及び検証の前に知られていないとき、スクリーン置換えモデル１０８の検証をオフラインで任せることは、チェック及び検証がクローリング及びモデル生成に同時に実行される従来技術とは対照的に、比較的高価なクローリング及びモデル生成を繰り返す必要を回避する。
【００１８】
更に特定の実施の形態は、（従来技術に比較して）比較的コンパクトなスクリーン置換えモデル１０８を生成する。例として、コンパクト化は、少なくとも部分的に、モデル１０８の数学的な表現の特定の選択により達成される圧縮と同様に、検証の視点と関係がないアプリケーションレベルの実現の詳細を廃棄することによる得られる。このコンパクト化は、要件の更に効率的な検証を容易にする。さらに、スクリーン置換えモデル１０８の全体的な特性又は要件は、特定の実施の形態においてチェックするのが容易である。より詳細には、Webアプリケーションの全体的な動作に関連するチェック／検証の要件は、単一のトレース（すなわちクローリングされている現在のトレース）への可視性のみが存在する（従来の技術におけるような）モデル生成の間とは対照的に、完全なスクリーン置換えモデル１０８をチェックすることで容易にされる。更なる圧縮及びコンパクト化は、完全なDOM／状態自身とは態様的に隣接してナビゲートされるWebページのDOMにおける差に基づいて、スクリーン置換えモデル１０８を生成することで達成される。
【００１９】
誘導型クローリングは、他のやり方においても同様に、包括的、正確且つコンパクトなモデル生成を容易にする。例として、Webアプリケーションにより、ユーザは、入力を提供するのを可能にするか、又は、Webアプリケーションにより提供される所定のWebページに進むためにユーザからの入力を要求するのを可能にする。例により、Webアプリケーションは、ログインID及び／又はパスワードのような、次のステップ又は次のWebページに進むため、或いは、Webアプリケーションにより提供される所定の機能をイネーブル又はレンダリングするため、ある種のユーザ認証を必要とする場合がある。これは、例として、特定の、有効なユーザ名及びパスワード情報を、現在のWebページで表示されている特定の入力ボックスに入力するか、及び／又は、現在のWebページで表示されるログインボタンのような特定のボタンをクリックすることを必要とする。係る認証は、動的なWebアプリケーションで表示される最初の（例えば「ホーム」の）Webページで要求される。代替的に、係る認証ステップは、前に表示されるWebページを形成するためにナビゲートされる後続のWebページで、後の時点で要求される場合がある。係るケースでは、全自動クローリングは、更に進むことができず、モデルカバレッジが制限される。特定の実施の形態では、これは、誘導されたカスタムクローリングが引き継がれたときである。認証又は他の情報入力に応じて、クローラ２１２は、自動的なクローリングに戻る場合がある。クローラ２１２にとって誘導されるカスタムクローリングの例に繰り替えことが有利な状態は、特に、情報を入力するようにユーザが促されるスクリーン／Webページに対応する。係る予め決定された状態又は基準は、以下に更に詳細に記載されるように、ガイダンスエンジン２１４にプログラムされる。
【００２０】
さらに、幾つかのWebアプリケーションは、正規のユーザ又はユーザ名及びパスワードを有さない非正規のユーザとは対照的に、アドミニストレータ又は他の特権を有するユーザについて異なる性質（例えば特権、特徴、アクション等）を明らかにする。係るケースでは、特定の実施の形態では、検証ツールキット１０２、及び特にクローラ２１２は、同じ動的なWebアプリケーションをクロールする１を超えるインスタンスを実行する（適用可能な場合、例えば１つのインスタンスは管理上のログイン、１つのインスタンスは正規のユーザのログイン、及び更に１つのインスタンスはログインなし）。
【００２１】
HTMLのフォームは、現代のWebアプリケーションにおいて益々一般的となっている（上述されたユーザ認証パネルは、１つの特定の例である）。従来の技術を使用して、典型的な調査は、誤ったユーザ入力及び正しいユーザ入力へのアプリケーションの応答をチェックするため、異なるデータセット（例えば１つの誤ったデータセット及び１つの有効なデータセット）をもつこれらのフォームを調査することを必要とする。さらに、多くのインスタンスでは、実際のリソースの制約は、Webアプリケーションをクローリングするとき、特定のページに関する特定のアクションのみが行われることを指示する。特定の実施の形態では、これは、クローリング及びスクリーン置換えモデル１０８から、続いて起こるチェック及び検証ステップの範囲外にあるか、又は続いて起こるチェック及び検証ステップに関連がない機能及びアクションを実行することで、本明細書で記載される誘導型クローリング技術を通して達成される。
【００２２】
特定の実施の形態は、上述された事項、利点、誘導されるクローリングを使用した従来の問題点を考慮するものである。より詳細には、検証ツールキット１０２は、動的なWeb
アプリケーション１０４の進化又はナビゲーションにおける特定のステージ、すなわち動的なWebアプリケーション１０４の特定のページに対応する特定の状態で実行される、特定の、そらく多数のデータセットによる、特定のアクションのシーケンスを指定及び（クローリングの間に）実行するメカニズムを提供する。従って、クローラ２１２は、上述された様々なシナリオに基づいて幾つかのシーケンスを通してナビゲートする場合がある。特定の実施の形態では、この誘導された又は「カスタムの」クローリングを通して生成された性質は、「ブラインド」又は全自動クローリング（例えば全自動のリンクナビゲーションを含む）を通して生成されているスクリーン置換えモデル１０８の他の部分と継ぎ目なく且つ正確に統合される。
【００２３】
特定の実施の形態では、クローラ２１２に提供されるガイダンスは、ガイダンスエンジン２１４によりクローラ２１２に供給されるガイダンス指示の形式である。これらのガイダンス指示は、検査下にある特定のWebアプリケーションに固有である。例となる実施の形態では、ガイダンス指示は、G=(p,A)として数学的に定義される。このように、ガイダンス指示Gは、現在のWebアプリケーションの状態に関して評価されたプレディケートｐとアクションシーケンスＡとから構成される順序付けされたペアである。アクションシーケンスＡ＝（α1,α2,…,αk）は、アトミックアクションαiの系列である。それぞれのアトミックアクションα＝（e,u,D）は、DOMエレメントｅ、ユーザアクションｕ及びｕと関連付けされたデータインスタンスＤ（潜在的に空）のセットから構成される３個の組である。上述された定義のようなガイダンス指示Ｇは、Ｇがアクチベートされるべきときを決定するプレディケートを含む。例となる実施の形態では、プレディケートは、クローリングの間にWebアプリケーション１０４の現在の状態に関して評価される。特定の実施の形態では、状態は、本質的に、ブラウザ３２０により表示される現在のスクリーン／WebページのDOMのエンコードされたバージョンである。アクションシーケンスＡは、妥当な場合、関連されるデータと共に、Ｇのアクチベーション（すなわちｐが現在の状態／スクリーンにおいて真であるとき）に応じて、Webアプリケーションで実行される必要があるユーザアクションのシーケンスを表す。Ａにおけるそれぞれのアトミックアクションαは、現在のスクリーン／Webページの特定のDOMエレメントｅに関するユーザアクションｕ（例えばシンプルなブラウザに基づくユーザアクション）である。例により、１つの典型的なアクションｕは、例えばリンク又はボタンのようなDOMエレメントのクリック又はマウスの移動である。従って、アトミックアクションのＤ成分は、空のセットφである。別のアクションのクラスは、例えば選択エレメントからオプションを選択するか又は＜input＞HTMLエレメントにストリング値を割り当てるといった、あるデータストリングの選択又は入力に対応する。これらのケースでは、Ｄ成分は、エレメントを検査／実行すべきデータ値のセットを表す。ガイダンス指示のアクチベーションに応じて、検証ツール１０２、及び特にクローリングコントローラ３２２は、Ａにおけるそれぞれのαに対応するセットＤから特定のデータ値を採取することでＡから具体的なアクションシーケンスを構築し、これをWebアプリケーション１０４で実行する。特定の実施の形態では、検証ツールキット１０２は、Ａで表現されたデータ値のそれぞれの組み合わせについてこれを系統的に行う。
【００２４】
２つの例示的なアルゴリズムが以下に提示される。第一のアルゴリズムは、最初のページ、ホームのページ又は動的なWebアプリケーション１０４の最初に表示されたページから、動的なWebアプリケーション１０４でガイドクロールを行うアルゴリズムである。第二のアルゴリズムは、特定の状態Ｓから動的なWebアプリケーション１０４でガイドされるクロールを行うアルゴリズムである。
【表１】
0005500259.tif 000002
【００２５】
これらのアルゴリズムは、特定の実施の形態に係るガイドされるクローリングに基づく全体的なモデル生成アルゴリズムの擬似コードを表し、クローラ２１２で実現され、幾つかの例となる実施の形態では、より詳細には、クローリングコントローラ３２２で実現される。第一及びメインのアルゴリズムGuideCrawlには、WebアプリケーションW（例えば動的なWebアプリケーション１０４）、及び関連されるガイダンス指示Ｇsetのセットが供給される。このアルゴリズムは、ナビゲーションモデルＭ（ガイドクローリングによりポピュレートされる）を初期化し、ブラウザにWebアプリケーションをロードし、動的なWebアプリケーションの最初のWebページ（InitPage）で内部の手順であるGuidedCrawlFromStateを起動する。GuidedCrawlFromStateは、実際のクローリングを行い、新たな後継者の状態／スクリーンで自身を再帰的に呼び出す。アルゴリズムの擬似コードで使用される様々な他の機能は、以下のように記載される。
【００２６】
Is  Visited：GuidedCrawlFromStateの前の起動により状態Ｓがアクセスされたかをチェックする。このチェックは、このステップのために実現される状態抽象（state-abstraction）を考慮する。  
MarkVisited：将来ガイドされるクロールから除外するため、“visited”として状態Ｓをマークする。  
AddState：新たに発見された状態としてナビゲーションモデルＭにおいて状態Ｓを記録する。  
FindActions：現在のスクリーンＳで実行することができるプリミティブ（ガイドされない）ユーザアクション（例えばクリック、マウスの移動等）のセットを計算する。  
ComputeActionSequence：その構成要素となるアトミックアクションαにおける特定のデータ値を採取することで、ガイダンス指示Ｇから具体的なアクションのシーケンスを計算する。指定されたデータ値の様々な選択により作成することができる全ての可能なシーケンスを計算する。  
Execute：状態／スクリーンＳに現在あるWebアプリケーションＷでアクション（又はアクションのシーケンス）αを実行する。  
AddTransition：モデルＭにおける状態Ｓから状態nextStateへの置換えを記録する。
【００２７】
UndoTransition：Ｗでの最近の置換え（Ｓ→nextState）を逆転して、状態Ｓに回復する。
【００２８】
ガイドクローリングの間に抽出されるモデルは、Webアプリケーションのクライアント層の動作のナビゲーション上の観点（navigational  aspects）を主に捕捉する。選択されたスクリーンの置換えモデルは、動的なWebアプリケーションの自然の構造を反映し、記載されるモデル生成の特定の方法、すなわち動的なガイドクローリングと関連する。現代の高度のWebアプリケーションのナビゲーションの動作の多くは、同じURI（Uniform  Resource  Locator）でとどまる間、ブラウザスクリーンの内容への変化に集中する。従って、隣接してナビゲートされるページ間の差に基づいて生成されたDOMの上述された方法、及び係る差に基づいて動作をモデリングすることは、相乗的に機能する。さらに、Webアプリケーションが無限数の異なるスクリーン又はWebページを理論的に可能する一方、これら無限のスクリーンを捕捉、表現又はチェックしようと試みることは実際的ではなく又は特に有益でもない。従って、特定の実施の形態は、革新的な状態表現及び抽象メカニズムを使用してこの情報をコンパクトに表現する一方、WebアプリケーションのそれぞれのURIでリッチであるが有限数のスクリーンを自動的にナビゲートすることに焦点を当てる。
【００２９】
スクリーン置換えモデル１０８は、特定の実施の形態によれば、以下のように要約される。状態表現は、アプリケーション１０４によりアクセスされるそれぞれのWebページ／スクリーンの内容を捕捉するために使用され、FSMは、それぞれのURIの周囲のWebアプリケーション１０４のナビゲーションの動作を表現するために使用される。さらに、上位のFSMは、あるURIから別のURIへのWebアプリケーションのナビゲーションを捕捉する。従って、係るスクリーン置換えモデル１０８は、本質的に、階層的FSMである。図６に例示されるように、それぞれのU1，U2及びU3は、特定のURIでのナビゲーションの動作を包含するスーパーステート（super  state）を表し、それぞれ、このイントラURIの動作を表現する内部のFSMを含む。
【００３０】
特定の実施の形態では、XMLは、スクリーン置換えモデル１０８を表現するために使用される。効率及び有効性の観点から注目に値するモデル１０８の様々な特徴が存在する。例を通して、特定の実施の形態では、モデル１０８のフォーマットは、DOMツリー階層に関する情報と同様に、HTML  CSS（Cascading  Style  Sheets）情報を排除する。別の例として、特定の実施の形態では、モデル１０８は、ガイドクローリングの間に自然に利用可能であるとき、（上述された）それぞれのスクリーンの明示的な表現ではなく、その置換えの関係を通してそれぞれのスーパーセットのFSMを表現する。これは、状態は１つの置換えにおいて最小限でのみ変化するので特に需要である。従って、全体のスクリーン状態ではなく連続するスクリーン間の変化のみを表現することで、モデル１０８において高度のコンパクト化を達成することができる。
【００３１】
上述されたように、特定の実施の形態は、１以上の様々なソースを通して圧縮を達成する。例を通して、特定の実施の形態では、クローラ２１２には、クローリングの間に無条件で含まれるべきHTMLであって（すなわちホワイトリスト）、クローリングの間に無条件で排除されるべきHTMLエレメント（すなわちブラックリスト）からなる特定のリストが設けられる。この指定は、モデル生成ステップへの入力として、特定用途毎にユーザにより行われる。別の例として、（例えば２つのページが同一のDOMツリーを有し、様々なDOMエレメントに添付されるテキストノードのコンテンツにおいてのみ異なるとき、といった）２つの「見た目が同じ」HTMLページによりモデルにおいて同じ状態表現が得られる多くのインスタンスが存在するので、特定の実施の形態では、２つの係るWebページが見られ、同じ状態と見なされ、従ってナビゲーショナルモデル１０８において同じ状態として表現され、モデル１０８における大幅な状態空間の低減が提供される。特定の実施の形態では、上述されたアルゴリズムにおけるIsVisited()関数において、状態が等価であることの基準が実現される。別の例として、それぞれのDOMエレメントのそれぞれのHTML属性は、モデルにおける状態表現における個別の状態変数としてモデルの数字に含まれる。しかし、多くの又は大部分の実用的な例では、属性は、あるスクリーン／状態から別のスクリーン／状態へのアプリケーションの置換えとして合致における値を変える。従って、特定の実施の形態では、それぞれの状態は、（HTML，DOMエレメントの属性当たり１つの変数よりも）少ない数の状態変数で潜在的に表現される。従って、この考察は、特定の実施の形態において、FSM最小化のアルゴリズムに類似したアルゴリズムを使用して、生成されたモデルで状態が再エンコードステップを実行するために使用される。
【００３２】
本願発明者は、Webアプリケーションで一般にチェックされる幾つかのナビゲーション及び他のタイプの要件は時相論理（temporal  logic）における特性及びモデルチェッカの入力言語として全く自然に定式化することができ、従って動的なWebアプリケーションの記載されたスクリーン置換えモデルを検証するための有利な選択についてモデルチェックを行うことができることを究明している。限定されるものではない例として、係る要件のクラスは、スクリーン置換えの要件、特徴の可用性／非可用性の要件、及びナビゲーション構造／有用性の要件を含む。
【００３３】
図４は、動的なWebアプリケーションのクライアント層を検証する１つの例示的な方法を例示する。１実施の形態では、本方法は、ステップ４０２で、動的なWebアプリケーションのランタイムの間に動的なWebアプリケーションにアクセスすることで開始する。次いで、ステップ４０４で、動的なWebアプリケーションがクロールされる。特定の実施の形態では、クローリングは、１以上の誘導クローリングのインスタンスを含み、それぞれのインスタンスは、自動クローリングの先行するインスタンスがガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する動的なWebアプリケーションにおける状態に到達したときに開始され、開始されたとき、動的なWebアプリケーションに関して１以上の予め決定されたアクションを実行する。本方法は、ステップ４０６で、クローリングに基づいて、動的なWebアプリケーションのスクリーン置換えモデルを生成することを含む。特定の実施の形態では、スクリーン置換えモデルは、階層的な有限状態マシン（FSM）を含む。１実施の形態では、スクリーン置換えモデルの生成が終了した後、本方法は、ステップ４０８で、動的なWebアプリケーションのクライアント層を検証するため、スクリーン置換えモデルに関するモデルチェックを行うことを含む。
【００３４】
検証ツールキット１０２は、１以上のコンピュータシステムにある１以上のソフトウェアコンポーネントを含む。図５は、例示的なコンピュータシステム５００を示す。検証ツールキット１０２及びモデル生成器１１０は、１以上のコンピュータシステムでのソフトウェアコンポーネントであり、例示的なコンピュータシステム５００に類似している。特定の実施の形態は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせとして、検証ツールキット１０２、モデルジェネレータ１１０を実現する。限定されるものではない例として、１以上のコンピュータシステムは、検証ツールキット１０２、モデルジェネレータ１１０又はそれらの両者に関して記載又は図示された１以上のプロセスの１以上のステップを実行するための特定のロジック又はソフトウェアを実行する。１以上のコンピュータシステムは、必要に応じて、単一又は分散された、広範囲にわたる複数のコンピュータシステム又は複数のデータセンタである。この開示は、適切なコンピュータシステムであることが考えられる。ここで、ロジックに対する参照は、必要に応じてソフトウェアを包含しており、逆に、ソフトウェアに対する参照は、ロジックを包含する。ソフトウェアに対する参照は、１以上のコンピュータプログラムを包含しており、逆に、コンピュータプログラムに対する参照は、１以上のソフトウェアを包含する。ソフトウェアに対する参照は、必要に応じて、データ、命令、又はその両者を包含しており、逆に、データ、命令又はその両者に対する参照は、ソフトウェアを包含する、同様に、データに対する参照は、必要に応じて、命令を包含しており、逆に、命令に対する参照は、データを包含する。
【００３５】
１以上のコンピュータ読み取り可能な媒体は、特定の実施の形態を実現するソフトウェアを記憶するか、該ソフトウェアを具体化する。コンピュータ読み取り可能な媒体は、必要に応じて、ソフトウェアを担持、伝達、包含、保持、維持、伝搬、保有、記憶、送信、転送、又は具体化することが可能な媒体である。コンピュータ読み取り可能な媒体は、必要に応じて、生体学的、化学的、電子的、電磁的、赤外線、磁気的、光学的、量子力学的なものであるか、又は他の適切な媒体或いは２以上の係る媒体の組み合わせである。コンピュータ読み取り可能な媒体は、１以上のナノメートルスケールのコンポーネントを含むか、又はナノメートルスケールの設計又は製造を具体化する。例となるコンピュータ読み取り可能な媒体は、限定されるものではないが、特定用途向け集積回路（ASIC）、コンパクトディスク（CD）、フィールドプログラマブルゲートアレイ（FPGA）、フロッピー(登録商標)ディスク、フロプティカルディスク、ハードディスク、ホログラフィックストレージデバイス、磁気テープ、リードオンリメモリ（ROM）装置、半導体メモリ装置、及び他の適切なコンピュータ読み取り可能な媒体を含む。
【００３６】
特定の実施の形態を実現するソフトウェアは、必要に応じて、（手続又はオブジェクト指向である）適切なプログラミング言語で記述されるか、プログラミング言語の組み合わせで記述される場合がある。適切なタイプのコンピュータシステム（シングルプロセッサ又はマルチプロセッサコンピュータシステム）は、必要に応じて、特定の実施の形態を実現するソフトウェアを実行する。汎用コンピュータシステムは、必要に応じて、特定の実施の形態を実現するソフトウェアを実行する。
【００３７】
図５におけるコンポーネントは、例示するものであって、ハードウェア、ソフトウェア、組み込みロジックコンポーネント、又は特定の実施の形態を実現する２以上の係るコンポーネントの組み合わせの仕様又は機能の範囲に限定するものではない。コンピュータシステム５００は、限定されるものではないが、１以上の集積回路（IC）、プリント回路ボード（PCB）、（携帯電話又はPDAのような）モバイルハンドヘルドデバイス、ラップトップ又はノートブックコンピュータ、分散コンピュータシステム、コンピューティンググリッド又はサーバを含めて適切な物理的な形態を有する。コンピュータシステム５００は、ディスプレイ５３２、（例えばキーパッド、キーボード、マウス、スタイラス等である）１以上の入力装置５３３、（例えば１以上のスピーカである）１以上の出力装置５３４、１以上の記憶装置５３５及び様々な記憶媒体５３６を含む。
【００３８】
バス５４０は、様々なサブシステムを接続する。ここで、バスに対する参照は、必要に応じて、共通の機能を給仕する１以上のデジタル信号線を包含する。バス５４０は、メモリバス、周辺バス、又は、様々なバスアーキテクチャの何れかを使用したローカルバスを含む、幾つかのタイプのバス構造のうちの何れかである。限定されるものではない例として、係るアーキテクチャは、ISA（Industry  Standard  Architecture）バス、EISA（Enhanced  ISA）バス、MCA（Micro  Channel  Architecture）バス、VLB（Video  Electronics  Standard  Association  local  bus）、PCI（Peripheral  Component  Interconnect）バス、PCI-X（PCI-Express）バス、AGP（Accelerated  Graphics  Port）バスを含む。
【００３９】
プロセッサ５０１（又は中央処理装置（CPU））は、命令、データ、又はコンピュータアドレスの一時的なローカルストレージのためのキャッシュメモリユニット５０２を任意に含む。プロセッサ５０１は、メモリ５０３を含むストレージデバイスに結合される。メモリ５０３は、ランダムアクセスメモリ（RAM）５０４及びリードオンリメモリ（ROM）５０５を含む。ROM５０５は、プロセッサ５０１に一定の方向にデータ及び命令を伝達する。RAM５０４は、プロセッサ５０１と双方向でデータ及び命令を伝達する。ROM５０５及びRAM５０４は、以下に記載される適切なコンピュータ読み取り可能な媒体を含む。固定されたストレージ５０８は、任意にストレージコントロールユニット５０７を通して、プロセッサ５０１に双方向的に接続される。固定されたストレージ５０８は、更なるデータストレージ容量を提供し、以下に記載される適切なコンピュータ読み取り可能な媒体を含む。ストレージ５０８は、オペレーティングシステム５０９、EXEC５１０、データ５１１、アプリケーションプログラム５１２等を記憶するために使用される。典型的に、ストレージ５０８は、一次記憶よりも低速である（ハードディスクのような）二次的な記憶媒体である。ストレージ５０８における情報は、適切と思われる場合、メモリ５０３における仮想メモリとして組み込まれる。
【００４０】
プロセッサ５０１は、グラフィックコントロール５２１、ビデオインタフェース５２２、入力インタフェース５２３、出力インタフェース５２４及びストレージインタフェース５２５のような複数のインタフェースに接続される。これらのインタフェースは、例示されるように、適切な装置に接続される。一般に、入力／出力（I/O）装置は、ビデオディスプレイ、トラックボール、マウス、キーボード、マイクロフォン、タッチセンサー方式のディスプレイ、トランスデューサカードリーダ、磁気又は紙テープリーダ、タブレット、スタイラス、ボイス又はハンドライティングリコグナイザ、バイオメトリクスリーダ、別のコンピュータシステム、又は他の適切なI/O装置或いは２以上の係るI/O装置の組み合わせである。プロセッサ５０１は、別のコンピュータシステム又はネットワークインタフェース５２０を通して（ネットワーク１２を含む）電気通信ネットワーク５３０に接続される。ネットワークインタフェース５２０により、CPU５０１は、特定の必要に従って、本明細書で記載又は図示される１以上のプロセスの１以上のステップを実行する過程でネットワーク５３０と通信する。さらに、本明細書で記載又は図示される１以上のプロセスの１以上のステップは、CPU５０１でのみ実行される。付加的に又は代替的に、本明細書で記載又は図示される１以上のプロセスの１以上のステップは、ネットワーク５３０にわたり互いに遠隔である複数のCPU５０１で実行する。
【００４１】
特定の実施の形態では、コンピュータシステム５００がネットワーク５３０に接続されたとき、コンピュータシステム５００は、ネットワーク５３０に接続される他の装置と通信する。コンピュータシステム５００への通信又はコンピュータシステム５００からの通信は、ネットワークインタフェース５２０を通して設定される。例えば、ネットワークインタフェース５２０は、ネットワーク５３０からの（インターネットプロトコル（IP）パケットのような）１以上のパケットの形式で（他の装置からの要求又は応答のような）到来する情報を受信し、コンピュータシステム５００は、処理のためにメモリ５０３に到来する情報を記憶する。コンピュータシステム５００は、メモリ５０３において１以上のパケットの形式で（他の装置への要求又は応答のような）出力される情報を同様に記憶し、ネットワークインタフェース５２０からネットワーク５３０に伝達する。プロセッサ５０１は、処理のためにメモリ５０３に記憶されるこれらの通信パケットにアクセスする。
【００４２】
特定の実施の形態は、コンピュータで実現される動作を実行するコンピュータ実行可能なコードをエンコードする１以上のコンピュータ読み取り可能な媒体をもつストレージを含む。媒体及びコンピュータ実行可能なコードは、特定の実施の形態又は当業者にとって公知及び利用可能な事項について特別に設計又は作成される場合がある。コンピュータ読み取り可能な媒体の例は、限定されるものではないが、（ハードディスク、フロッピーディスク及び磁気テープのような）磁気媒体、（CD-ROM及びホログラフィック装置のような）光媒体、（フロプティカルディスクのような）光磁気媒体、及び特定用途向けIC（ASIC）、プログラマブルロジックデバイス（PLD）、及びROM装置並びにRAM装置のような、コードを記憶及び実行するために特別の設計されたハードウェアデバイスを含む。コンピュータコードの例は、コンパイラにより生成されるコードのようなマシンコード、及びコンピュータがインタープリタで実行する高水準コードを含むファイルを含む。
【００４３】
コンピュータシステム５００は、メモリ５０３のような１以上のコンピュータ読み取り可能な記憶媒体で具体化されるソフトウェアを実行するプロセッサ５０１の結果として機能を提供する。メモリ５０３は、特定の実施の形態を実現するソフトウェアを記憶し、プロセッサ５０１は、ソフトウェアを実行する。メモリ５０３は、（大容量記憶装置５３５のような）１以上の他のコンピュータ読み取り可能な媒体、又はネットワークインタフェース５２０のような適切なインタフェースを通して１以上の他のソースからソフトウェアを読み取る。ソフトウェアは、プロセッサ５０１に、本明細書で記載又は図示される１以上のプロセス、又は１以上のプロセスの１以上のステップを実行させる。係るプロセス又はステップを実行することは、メモリ５０３に記憶されるデータ構造を定義すること、及びソフトウェアにより指示されるようにデータ構造を変更することを含む。付加的に又は代替的に、コンピュータシステム５００は、本明細書で記載又は図示される１以上のプロセス又は１以上のプロセスの１以上のステップを実行するためにソフトウェアと共に又はソフトウェアに代わって動作する回路において配線されるロジック又は回路において具体化されるロジックの結果としての機能を提供する。ここで、必要に応じて、ソフトウェアに対する参照は、ロジックを包含し、逆にロジックに対する参照は、ソフトウェアを包含する。さらに、コンピュータ読み取り可能な媒体に対する参照は、必要に応じて、実行のためのソフトウェアを記憶する（ICのような）回路、実行のためのロジックを具体化する回路、又はその両者を包含する。本発明の開示は、ハードウェア、ソフトウェア又はその両者の適切な組み合わせを包含する。
【００４４】
本明細書の開示は、当業者が理解する本明細書における例示的な実施の形態に対する全ての変形、置換、バリエーション、代替及び変更を包含する。同様に、必要に応じて、特許請求の範囲は、当業者が理解する本明細書における例示的な実施の形態に対する全ての変形、置換、バリエーション、代替及び変更を包含する。
【００４５】
以下、本願発明の特徴点を付記として示す。
（付記）
（付記１）
１以上のコンピュータシステムが、クライアント層を含む動的なWebアプリケーションにアクセスするステップと、
前記１以上のコンピュータシステムが、前記動的なWebアプリケーションをクロールするステップと、前記クロールは、ガイドクローリングの１以上のインスタンスを含み、それぞれのインスタンスは、自動クローリングの先行するインスタンスが、ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態に到達したときに始動され、始動されたとき、前記動的なWebアプリケーションに関して１以上の予め決定された動作を実行し、
前記１以上のコンピュータシステムが、前記クローリングに基づいて、前記動的なWebアプリケーションのスクリーン置換えモデルであって、階層的な有限状態マシン（FSM）を含むスクリーン置換えモデルを生成するステップと、
前記１以上のコンピュータシステムが、前記スクリーン置換えモデルの生成が終了した後、前記動的なWebアプリケーションのクライアント層を検証するために前記スクリーン置換えモデルにモデルチェックを行うステップと、
を含むことを特徴とする方法。
（付記２）
前記動的なWebアプリケーションは、HTML（Hyper  Text  Markup  Language）コンテンツ、XML（Extensible  Markup  Language）コンテンツ、又はJavaScriptリソースのうちの１以上を含む、
付記１記載の方法。
（付記３）
前記動的なWebアプリケーションは、前記動的なWebアプリケーションの始動又は実行の間にAJAX（Asynchronous  JavaScript  and  XML）を利用する、
付記１記載の方法。
（付記４）
前記動的なWebアプリケーションは、前記動的なWebアプリケーションに組み込まれた１以上の実行可能なコードセグメントを含み、
前記クローリングは、１以上の実行可能なコードセグメントを実行することを含む、
付記１記載の方法。
（付記５）
前記動的なWebアプリケーションは、１以上のWebページを含み、
前記動的なWebアプリケーションをクロールするステップは、前記１以上のWebページのそれぞれについて、
前記Webページを表示するためのコンテンツを受信するステップと、
受信されたコンテンツを、前記Webページのドキュメントオブジェクトモデル（DOM）の表現に変換するステップと、
前記WebページのDOMの表現をクロールするステップと、
付記１記載の方法。
（付記６）
前記受信されたコンテンツを、前記Webページのうちの現在のページのDOMの表現に変換するステップは、
前記動的なWebアプリケーションのWebページのうちの前のページのDOMの表現を受信するステップと、
前記Webページのうちの前記前のページのDOMの表現を変更して、前記Webページのうちの現在のページと前記Webページのうちの前のページとの間の１以上の差を組み込むステップと、を含み、
前記動的なWebアプリケーションのスクリーン置換えモデルを生成するステップは、
前記Webページのうちの現在のページのDOMの表現と、前記Webページのうちの前のページのDOMの表現との間の１以上の差に基づいて前記スクリーン置換えモデルを生成するステップを含む、
付記５記載の方法。
（付記７）
ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態は、ユーザからの入力を受信する１以上のユーザインタラクションモジュールを有する前記動的なWebアプリケーションの特定のWebページに対応する状態を含み、
前記動的なWebアプリケーションをクロールすることは、前記１以上のユーザインタラクションモジュールのうちの１以上との相互作用をシミュレートするための１以上の入力を入力するステップを含む、
付記１記載の方法。
（付記８）
前記１以上の入力は、前記特定のWebページのDOMの表現の分析を通して自動的に生成される、
付記７記載の方法。
（付記９）
前記スクリーン置換えモデルにモデルチェックを行うステップは、前記スクリーン置換えモデルが前記動的なWebアプリケーションについて予め決定された仕様を満たすかを調べるステップを含む、
付記１記載の方法。
（付記１０）
前記スクリーン置換えモデルが前記動的なWebアプリケーションについて前記予め決定された仕様を満たすかを調べるステップは、
前記スクリーン置換えモデルが前記仕様において規定される１以上の機能的な特性を満たすかを判定するステップと、
前記スクリーン置換えモデルが前記仕様において規定された前記動的なWebアプリケーションの可用性に関連する１以上のナビゲーション特性を満たすかを判定するステップと、
を含む付記９記載の方法。
（付記１１）
ソフトウェアをエンコードしたコンピュータ読み取り可能な記憶媒体であって、
前記ソフトウェアは、コンピュータに、
クライアント層を含む動的なWebアプリケーションにアクセスするステップと、
前記動的なWebアプリケーションをクロールするステップと、前記クロールは、ガイドクローリングの１以上のインスタンスを含み、それぞれのインスタンスは、自動クローリングの先行するインスタンスが、ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態に到達したときに始動され、始動されたとき、前記動的なWebアプリケーションに関して１以上の予め決定された動作を実行し、
前記クロールに基づいて、前記動的なWebアプリケーションのスクリーン置換えモデルであって、階層的な有限状態マシン（FSM）を含むスクリーン置換えモデルを生成するステップと、
前記スクリーン置換えモデルの生成が終了した後、前記動的なWebアプリケーションのクライアント層を検証するために前記スクリーン置換えモデルにモデルチェックを行うステップと、
を実行させる命令を含むことを特徴とするコンピュータ読み取り可能な記憶媒体。
（付記１２）
前記動的なWebアプリケーションは、HTML（Hyper  Text  Markup  Language）コンテンツ、XML（Extensible  Markup  Language）コンテンツ、又はJavaScriptリソースのうちの１以上を含む、
付記１１記載のコンピュータ読み取り可能な記憶媒体。
（付記１３）
前記動的なWebアプリケーションは、前記動的なWebアプリケーションの始動又は実行の間にAJAX（Asynchronous  JavaScript  and  XML）を利用する、
付記１１記載のコンピュータ読み取り可能な記憶媒体。
（付記１４）
前記動的なWebアプリケーションは、前記動的なWebアプリケーションに組み込まれた１以上の実行可能なコードセグメントを含み、
前記クロールは、１以上の実行可能なコードセグメントを実行することを含む、
付記１１記載のコンピュータ読み取り可能な記憶媒体。
（付記１５）
前記動的なWebアプリケーションは、１以上のWebページを含み、
前記動的なWebアプリケーションをクロールするステップは、前記１以上のWebページのそれぞれについて、
前記Webページを表示するためのコンテンツを受信するステップと、
受信されたコンテンツを、前記Webページのドキュメントオブジェクトモデル（DOM）の表現に変換するステップと、
前記WebページのDOMの表現をクロールするステップと、
付記１１記載のコンピュータ読み取り可能な記憶媒体。
（付記１６）
前記受信されたコンテンツを、前記Webページのうちの現在のページのDOMの表現に変換するステップは、
前記動的なWebアプリケーションのWebページのうちの前のページのDOMの表現を受信するステップと、
前記Webページのうちの前記前のページのDOMの表現を変更して、前記Webページのうちの現在のページと前記Webページのうちの前のページとの間の１以上の差を組み込むステップと、を含み、
前記動的なWebアプリケーションのスクリーン置換えモデルを生成するステップは、
前記Webページのうちの現在のページのDOMの表現と、前記Webページのうちの前のページのDOMの表現との間の１以上の差に基づいて前記スクリーン置換えモデルを生成するステップを含む、
付記１５記載のコンピュータ読み取り可能な記憶媒体。
（付記１７）
ガイドクローリングのインスタンスについて１以上の予め決定された基準に合致する前記動的なWebアプリケーションにおける状態は、ユーザからの入力を受信する１以上のユーザインタラクションモジュールを有する前記動的なWebアプリケーションの特定のWebページに対応する状態を含み、
前記動的なWebアプリケーションをクロールすることは、前記１以上のユーザインタラクションモジュールのうちの１以上との相互作用をシミュレートするための１以上の入力を入力するステップを含む、
付記１１記載のコンピュータ読み取り可能な記憶媒体。
（付記１８）
前記１以上の入力は、前記特定のWebページのDOMの表現の分析を通して自動的に生成される、
付記１７記載のコンピュータ読み取り可能な記憶媒体。
（付記１９）
前記スクリーン置換えモデルにモデルチェックを行うステップは、前記スクリーン置換えモデルが前記動的なWebアプリケーションについて予め決定された仕様を満たすかを調べるステップを含む、
付記１１記載のコンピュータ読み取り可能な記憶媒体。
（付記２０）
前記スクリーン置換えモデルが前記動的なWebアプリケーションについて前記予め決定された仕様を満たすかを調べるステップは、
前記スクリーン置換えモデルが前記仕様において規定される１以上の機能的な特性を満たすかを判定するステップと、
前記スクリーン置換えモデルが前記仕様において規定された前記動的なWebアプリケーションの可用性に関連する１以上のナビゲーション特性を満たすかを判定するステップと、
を含む付記１９記載のコンピュータ読み取り可能な記憶媒体。
【符号の説明】
【００４６】
１０２：検証ツールキット
１０４：動的なWebアプリケーション
１０８：スクリーン置換えモデル
１１０：サーバ
１１１：要件／仕様
２１２：クローラ
２１４：ガイダンスエンジン
２１６：モデルチェッカ
【図１】
0005500259.tif 000003
【図２】
0005500259.tif 000004
【図３】
0005500259.tif 000005
【図４】
0005500259.tif 000006
【図５】
0005500259.tif 000007
【図６】
0005500259.tif 000008
【図７】
0005500259.tif 000009