(57)【要約】【課題】一実施例では、方法は、ウェブ・アプリケーションのユーザにより、データの入力のために少なくとも１つのフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする工程であって、ウェブ・ページは、ウェブ・ページのコードに基づいてウェブ・アプリケーションによってレンダリングされる工程を含み得る。【解決手段】方法は、コードを解析する工程も含み得る。方法は、解析に基づいて少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する工程を更に含み得る。方法は更に、１つ又は複数の入力の組を少なくとも１つのフィールドに自動的に入力する工程を含み得る。方法は、更に、少なくとも１つのフィールドに１つ又は複数の入力の組を含むフォームを自動的に送出する工程を含み得る。【選択図】図４
2012022683.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
ウェブ・アプリケーションのユーザにより、データの入力のために１つ又は複数のフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする工程であって、前記ウェブ・ページは、前記ウェブ・ページのコードに基づいて前記ウェブ・アプリケーションによってレンダリングされる工程と、
前記コードを解析する工程と、
前記解析に基づいて前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する工程と、
前記少なくとも１つのフィールドに、前記１つ又は複数の入力の組を自動的に入力する工程と、
前記少なくとも１つのフィールドに前記１つ又は複数の入力の組を含む前記フォームを自動的に送出する工程と
を含む方法。
【請求項２】
請求項１記載の方法であって、前記特定のページに複数回、アクセスし、アクセス毎に前記１つ又は複数の入力の組のうちの別の組を入力する工程を更に含む方法。
【請求項３】
請求項２記載の方法であって、前記ウェブ・アプリケーションのナビゲーション・モデルを生成するよう前記ウェブ・アプリケーションにクローリングする工程を更に含む方法。
【請求項４】
請求項１記載の方法であって、
前記コードを解析する工程は、前記少なくとも１つのフィールドについて要求されるデータのタイプを判定する工程を含み、
前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する工程は、前記判定されたデータのタイプに基づいてデータを生成する工程を含む方法。
【請求項５】
請求項４記載の方法であって、前記少なくとも１つのフィールドについて要求されるデータのタイプを判定する工程は、前記ウェブ・ページがディスプレイにレンダリングされる場合に前記少なくとも１つのフィールドに隣接して表示される静的配列を判定するよう前記コードを解析する工程を含む方法。
【請求項６】
実行されると、
ウェブ・アプリケーションのユーザにより、データの入力のために１つ又は複数のフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする機能であって、前記ウェブ・ページは、前記ウェブ・ページのコードに基づいて前記ウェブ・アプリケーションによってレンダリングされる機能と、
前記コードを解析する機能と、
前記解析に基づいて前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能と、
前記少なくとも１つのフィールドに、前記１つ又は複数の入力の組を自動的に入力する機能と、
前記少なくとも１つのフィールドに前記１つ又は複数の入力の組を含む前記フォームを自動的に送出する機能
とを行うよう動作可能なソフトウェアをコード化した１つ又は複数のコンピュータ読み取り可能な記憶媒体。
【請求項７】
ウェブ・アプリケーションをクローリングするシステムであって、
前記ウェブ・アプリケーションのユーザにより、データの入力のために少なくとも１つのフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする機能であって、前記ウェブ・ページは、前記ウェブ・ページのコードに基づいて前記ウェブ・アプリケーションによってレンダリングされる機能と、
前記コードを解析する機能と、
前記解析に基づいて前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能と、
前記少なくとも１つのフィールドに、前記１つ又は複数の入力の組を自動的に入力する機能と、
前記少なくとも１つのフィールドに前記１つ又は複数の入力の組を含む前記フォームを自動的に送出する機能とを行うよう構成された１つ又は複数のコード解析を有するクローラを備える、ウェブ・アプリケーションをクローリングするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に、ウェブ・アプリケーションの検証に関する。
【背景技術】
【０００２】
コンピュータベース・アプリケーション（特に、ワールド・ワイド・ウェブ（ＷＷＷ）とともに使用することが企図されたウェブ・アプリケーション）に対する需要が高くなっている中で、品質保証プロセスの重要性は絶えず増大している。アプリケーション（特に、ウェブ・アプリケーション）は検査することが困難である。アプリケーションのインタフェースによって許容される考えられるユーザ入力全ての集合は、容量が非常に大きくなり得る。ウェブ・アプリケーションを検証する、先行して知られている手法は、アーチファクトの下にある実現形態を直接表すことにより、例えば、画面、ボタン、リンク、及びフォーム・フィールドなどのウェブ・アプリケーション・アーチファクトに対する検査を規定する。これは通常、ウェブ・アプリケーションの下にある実現形態の特定の知識を必要とする。対照的に、ウェブ・アプリケーションの下にある実現形態についての知識を有していないシステムレベル（エンドツーエンド）のウェブ・アプリケーションの検査技術者は通常、展開されたウェブ・アプリケーションによって示されるアーチファクトを視覚的に観察し、前述のアーチファクトに対してイベントを「送出」することにより、１つずつ、ウェブ・アプリケーションに対してユースケース検査シナリオを手作業で行う。例として、アーチファクトに対するイベントの送出は、（ボタン及びリンクを、例えば、マウス又は他の入力装置によって）クリックする工程、又はユーザ・インタフェースにおいて表示されるフォームにデータを入力する工程を含み得る。この従来の検査モードは、何れの自動化された検査又は検証の手法の使用も妨げる。自動化されたツール又は手法は、検査されているウェブ・アプリケーション・アーチファクトに対する実現形態（すなわち、コードレベル）の参照を必要とするからである。
【０００３】
フォームを含むウェブ・アプリケーションに関し、アプリケーションの検査を自動化することの課題は、ウェブ・アプリケーションを網羅的に検査するために、フォーム入力データの別々の数多くの組が必要であり得るということによって複雑になっている。よって、伝統的な検証手法は、前述のフォームへのデータの手作業入力を必要とするのみならず、更に、網羅的検査ができるために、前述の手作業入力を何度も繰り返すことを必要とし得る。更に、特定の制約に一致していることを確実にするよう、入力されたデータを検査する複雑な入力検証コードがウェブ・アプリケーションに存在し得る。例えば、ユーザ名に対する制約は、ユーザ名の長さが６文字以上１５文字以下の長さであり、非英数字を含んではならず、少なくとも１つの大文字、及び少なくとも１つの数字を有していなければならないということがあり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、従来の方法及びシステムに関連した欠点及び課題の少なくとも一部をかなりなくすか、又は軽減する、ウェブ・アプリケーションの広範囲にわたるクローリングのための方法及びシステムを提供する。
【課題を解決するための手段】
【０００５】
本発明の特定の実施例によれば、方法は、ウェブ・アプリケーションのユーザによる、データの入力のための少なくとも１つのフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする工程を含み得、ウェブ・ページは、ウェブ・ペ―ジのコードに基づいてウェブ・アプリケーションによってレンダリングされる。方法は、コードを解析する工程も含み得る。方法は、解析に基づいて少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する工程を更に含み得る。方法は更に、１つ又は複数の入力の組を少なくとも１つのフィールドに自動的に入力する工程を含み得る。方法は、更に、少なくとも１つのフィールドに１つ又は複数の入力の組を含むフォームを自動的に送出する工程を含み得る。
【図面の簡単な説明】
【０００６】
【図１】本開示の実施例による、ウェブ・アプリケーションを検証するための例示的なシステムの例示的な環境を示す図である。
【図２】本開示の実施例による、例示的なインタラクティブ・フォームを含む例示的なウェブ・ブラウザ・ディスプレイを示す図である。
【図３】本開示による、ウェブ・アプリケーションを検証するための例示的なシステムを示す図である。
【図４】本開示による、ウェブ・アプリケーション・クローラの選択された構成部分を示す図である。
【図５】本開示による、ウェブ・アプリケーションを検証するための例示的な方法を示すフローチャートである。
【図６】本開示による例示的なコンピュータ・システムを示す図である。
【発明を実施するための形態】
【０００７】
本発明の特定の実施例の技術上の利点は、伝統的なクローラによって明るみに出すことができない振る舞いを明らかにするようウェブ・アプリケーションを広範囲にわたってクローリングし得る方法論を含む。
【０００８】
他の技術上の利点は、図面、明細書、及び特許請求の範囲から、当業者に容易に明らかになるであろう。更に、特定の利点は上述しているが、種々の実施例は、上述された利点の全部、一部を含み得るか、又は、上述の利点の何れも含まないことがあり得る。
【実施例】
【０００９】
特定の実施例は、ウェブ・アプリケーション（特に、ウェブ２．０アプリケーション）の検証に関する。ウェブ２．０アプリケーションは、一般に、インタラクティブ情報共有、相互運用性、ユーザ中心の設計、あるいは、コラボレーションをワールド・ワイド・ウェブ、又は他のふさわしい、若しくは適切なネットワーク環境を介して容易にする動的又はインタアクティブ・ウェブ・アプリケーションを表し得る。ウェブ・アプリケーション（特に、ウェブ２．０アプリケーション）は多くの場合、いくつかのウィジェットの形態を呈するか、いくつかのウィジェットを利用するか、又はいくつかのウィジェットによって特徴付けられる。ウィジェットは一般に、別個のレンダリング可能な構造化された文書（例えば、ハイパー・テキスト・マークアップ言語（ＨＴＭＬ）ベースのウェブ・ページなど）内にインストールし、実行し、又は、当該ユーザが著作者の権利を有するページ（例えば、ウェブ・ページ、ブログ、又はソーシャル・メディア・サイト上のプロファイル）上に、ユーザにより、第三者サイトに、他のやり方で埋め込むことが可能なスタンドアロンのアプリケーション又はポータブル・コードを表し得る。ウェブ２．０アプリケーションの例は、他の可能性の中でもとりわけ、ウェブベースのコミュニティ、ホスティングされたサービス、ソーシャルネットワーキング・サイト、動画共有サイト、又はウィキ（ｗｉｋｉ）とともに動作し得る。
【００１０】
特定の実施例は、ウェブ・アプリケーションのレンダリングされたページに関する下にあるコードを解析する工程であって、前述のレンダリングされたページが、ウェブ・アプリケーションのユーザによるデータ入力用フォームを含む工程（例えば、静的解析手法を使用した解析）と、前述の解析に基づいて、広範囲にわたるウェブ・クローリングを行おうとしてクローラがフォームに自動的に入力し得るフォーム・データ入力の組を生成する工程とに関する。
【００１１】
図１は、例示的な検証システム１０２の例示的な環境１００を示す。検証システム１０２は、１つ若しくは複数のハードウェア構成部分、１つ若しくは複数のソフトウェア構成部分、又はハードウェア構成部分及びソフトウェア構成部分の組合せを含み得る。検証システム１０２の構成部分は、図６を参照して更に詳細に説明したものなどの１つ又は複数のコンピュータ・システム内で実行又は動作し得る。検証システム１０２はウェブ・アプリケーション１０４にアクセスするよう構成される。特定の実施例では、ウェブ・アプリケーション１０４は、検証システム１０２と同じコンピュータ・システムにおいて、少なくとも部分的に配備される。別の実施例では、ウェブ・アプリケーション１０４は、検証システム１０２をホスティングするコンピュータ・システムと直接又は間接に接続若しくは結合される別個の１つ又は複数のコンピュータ・システムで配備され得る。ウェブ・アプリケーション１０４は更に、１つ又は複数の外部、あるいは第三者サーバ、あるいはコンピュータ・システムにおいて少なくとも部分的にホスティングし得る。
【００１２】
一般に、ウェブ・アプリケーションは、ネットワークを介して、ウェブ・ブラウザ（例えば、マイクロソフト・ウィンドウズ(登録商標)・インターネット、エクスプローラ、モジラ・ファイアフォックス、アップル・サファリ、グーグル・クロム、若しくはオペラ）、又は他のクライアント・アプリケーションを介してアクセスし得るアプリケーション、又は、ウェブ・ブラウザによってサポートされる言語でコード化され、場合によっては、アプリケーションを実行可能にするようウェブ・ブラウザに依存するコンピュータ・ソフトウェア・アプリケーションである。ウェブ・アプリケーションは、ウェブ・ブラウザが遍在していること、クライアント（場合によってはシン・クライアントと呼ばれる）遠隔コンピューティング装置において起動されるウェブ・ブラウザを使用するという利便性、及び、遠隔クライアントへのソフトウェアを必ずしも配付及びインストールすることなく、ウェブ・アプリケーションを更新し、維持するための対応する機能の結果、多大な人気を得てきている。多くの場合、ウェブ・アプリケーションを実現するために、ウェブ・アプリケーションは、関連付けられたウェブサイトのバックエンド・サーバにおいて提供される１つ又は複数のリソースへのアクセスを必要とする。更に、ウェブ・アプリケーションは多くの場合、他のアプリケーションに関連付けられた更なるリソースを必要とし得る。
【００１３】
エンドユーザのマシン（クライアント装置）とともに、又は前述のマシンにおいて配備されるウェブ・アプリケーションは、ウェブ・ページをエンドユーザのマシンのディスプレイ上にレンダリングし得る。ウェブ・ブラウザに関し、又はウェブ・ブラウザのコンテキストで実行するウェブ・アプリケーションは、ディスプレイ上にウェブ・ページをウェブ・ブラウザにレンダリングさせ得る。ウェブ・アプリケーションのウェブ・ページは、通常、ウェブ・アプリケーションの他のウェブ・ページ、及び、ウェブ・アプリケーションの外部のウェブ・ページ及びウェブサイト、並びに、ウェブ・アプリケーションに関連付けられたウェブ・ページ及びウェブサイトに対する埋込リンクを含む。動的ウェブ・アプリケーションは特に、多くの場合、ハイパーリンク、アイコン、又は他の「クリック可能な」機能として、現在表示されているウェブ・ページ上でレンダリングし得る、埋め込まれた複数のリンクを含む。通常の動的ウェブ・アプリケーションは、ウェブ・アプリケーションをホスティングするサーバに配置されているか、又は外部の第三者サーバから取り出された複数のリソースを含み得る。埋め込まれた複数のリソースを含み得るウェブ・ページをレンダリングするウェブ・ページ又はリソースは、コンテンツ平文情報などのデータ・レコード、又は、ディジタル形式でコード化された、より複雑なマルチメディア・コンテンツ（ソフトウェア・プログラムや他のコード・オブジェクト、グラフィクス、画像、オーディオ信号、ビデオ等など）を含み得る。ウェブ・ページを作成するための、普及しているマークアップ言語の１つは、ハイパー・テキスト・マークアップ言語（ＨＴＭＬ）である。ウェブ・ブラウザによってサポートされた一般的な他の言語及び手法には、とりわけ、拡張可能なマークアップ言語（ＸＭＬ）、拡張可能なハイパー・テキスト・マークアップ言語（ＸＨＴＭＬ）、ジャバスクリプト、カスケーディング・スタイル・シート（ＣＳＳ）、及びジャバが含まれる。例として、ＨＴＭＬは、ページ内で埋め込むことが可能な画像、ウェブ・アプリケーション及び他のオブジェクト（例えば、フォーム・フィールド）、並びにテキスト及びリンクの構造的意味論を表すことにより、構造化文書をアプリケーション又はウェブ・ページ開発者が作成することを可能にする。一般に、ウェブ・ページは、構造化された静的な文書としてクライアントに配信し得るが、しかし、ページに埋め込まれたウェブ・エレメントの使用により、インタアクティブな体験をページ又はページ・シーケンスによって達成し得る。クライアント装置におけるユーザ・セッション中、ウェブ・ブラウザは、ウェブ・ページをホスティングするウェブサイト又はウェブ・アプリケーションから受け取られるか、若しくは取り出されるページ及び関連付けられたリソース、並びに、場合によっては、他のウェブサイトからのリソースを解釈し、表示する。例として、ウェブ・ブラウザによる、ＨＴＭＬ構造化された文書を受け取ると、ウェブ・ブラザは、ジャバスクリプト・コード・セグメントを含む埋め込まれたコードを実行し得、それにより、第三者のホスト又はウェブサイトからのリソースがコール又は要求される。
【００１４】
特定の実施例では、検証システム１０２は、ネットワーク（例えば、イントラネット、エクストラネット、仮想プライベート・ネットワーク（ＶＰＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、無線ＬＡＮ（ＷＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワールド・ワイド・ウェブ（インターネット）の一部分、若しくは別のネットワーク、又は前述の２つ以上のネットワークの組合せなど）を介してウェブ・アプリケーション１０４にアクセスするよう構成される。本開示は、ウェブ・アプリケーション１０４を検証システム１０２とともに配備し得る何れかの適切なネットワークを想定している。特定の実施例では、検証システム１０２は、例えば、ＨＴＴＰ要求の形式などで、前述のホスティング・サービスに向けて、ウェブ・アプリケーション１０４に対する要求を送信することにより、ウェブ・アプリケーション１０４をホスティングしている１つ又は複数のサーバとのセッションを開始する。特定の実施例では、要求の受信に応じて、ウェブ・アプリケーション１０４をホスティングしているサーバは、ＨＴＭＬ又は他の構造化文書（検証システム１０２による、又は検証システム１０２におけるウェブ・ページのレンダリングのために、何れかの埋め込まれたリソース、又は前記リソースに対する埋め込まれたコード及び識別子、並びに、表示する対象のコンテンツ、及び構造化文書コードを含む）の形式でのウェブ・アプリケーション１０４のレンダリング可能な実現形態の生成に進む。
【００１５】
多くの場合、ウェブ・ブラウザは、インタアクティブ・フォーム・フィールドの表示に関する１つ又は複数の言語で記述されるコード・セグメントを読み取り、前述のコード・セグメントに基づいてインタアクティブ・フォーム・フィールドをレンダリングし、表示し得る。ウェブ・ブラウザ・ウィンドウに表示される前述のインタアクティブ・フォームの例を図２に表す。図２に示すように、ウェブ・ブラウザ・ウィンドウ２００は、静的配列２０２、フィールド２０４、及び送出ボタン２０６を含むフォームを表示し得る。静的配列２０２は、ユーザが隣接フィールド２０４に入力するデータのタイプを示すために、ウェブ・ブラウザのユーザに向けて表示されるテキストを含み得る。各フィールド２０４は、（例えば、キーボードの使用により、）前述のフィールド２０４にデータをウェブ・ブラウザのユーザが入力することを可能にするユーザ・インタフェース・エレメントであり得る。データをフィールド２０４に入力した後、ユーザは、送出ボタン２０６をクリックし、（又は、ユーザがデータを送出したい旨を示す別の動作を行い得、）ウェブ・ブラウザは次いで、前述のデータをサーバ（例えば、ウェブ・アプリケーションをホスティングしているサーバ）に通信し得る。一部の場合には、インタアクティブ・フォーム・コードは、フィールド２０４に入力されるデータに対して制約を課すクライアントサイド検証コードも含み得る。例えば、制約は、ユーザ名に関連付けられたフィールドの最小長及び最大長に対する限度を設け、かつ／又は、フィールドに入力し得る文字のタイプに対する限度を設け得る。
【００１６】
特定の実施例では、検証システム１０２は、更に、ウェブ・アプリケーション１０４を検証するうえで使用するためのユーザレベルの検証要件１０６に対するアクセスを有する。特定の実施例では、ユーザレベルの検証要件１０６は、前述のウェブ・アーチファクトの実現形態レベルの詳細でなく、ウェブ・アプリケーション１０４の種々のウェブ・アーチファクトに対する自然言語リファレンスを含む。特定の実施例では、検証要件１０６はウェブ・アプリケーション１０４のテストケースであり得る。テストケースは、ウェブ・アプリケーション１０４を動かす通常のシナリオ（ウェブ・アプリケーションのユーザによって行われる特定の工程シーケンスなど）、及び通常のシナリオの下でのウェブ・アプリケーションの正しいか、又は有効な振る舞いを構成するものが何であるかの特定の明示的な、又は暗黙的な規定を含み得る。単純に言えば、テストケースは、正確性検査（例えば、期待された結果）と組合せたユースケースであり得る。他の実施例では、検証要件１０６は、ウェブ・アプリケーション１０４の期待された振る舞いのより表出的な振る舞いの表現であり、例えば、時相論理などのフォーマリズムで記述し得る。検証結果１０８は、ウェブ・アプリケーション１０４に対する１つ又は複数の検証要件１０６又は他の検査若しくはユースケースを検証した結果として検証システム１０２から出力される。
【００１７】
より具体的には図３に示すように、検証システム１０２は、誘導エンジン２１０、ウェブ・アプリケーション・クローラ２１２、要件生成器２１６、及び検証ツールキット２２０を含み得る。特定の実施例では、誘導エンジン２１０の支援により、クローラ２１２は、ウェブ・アプリケーション１０４にアクセスし、ウェブ・アプリケーション１０４をクローリングし、ナビゲーション・モデル２１４を出力する。特定の実施例では、要件生成器２１６は、少なくとも部分的にユーザレベル検証要件１０６に基づいて実現形態レベルの検証要件２１８を生成する。すなわち、要件生成器２１６は、本明細書及び特許請求の範囲記載の自然言語表現で表現された特性又はテストケース表現を入力として使用し、コンピュータ読み取り可能な検証要件２１８を読み取るよう構成された検証ツールキット２２０に入力されるコンピュータ又はマシン読み取り可能な命令（実現形態レベルの検証要件２１８）を生成し得る。特定の実施例では、検証ツールキット２２０は、実現形態レベル検証要件２１８とともにナビゲーション・モデル２１４を使用してウェブ・アプリケーション１０４を検証し、その後、検証結果１０８を出力するよう構成される。特に、検証ツールキット２２０は、ナビゲーション・モデル２１４及び実現形態レベルの検証要件２１８を入力として得て、ウェブ・アプリケーション１０４を検証するためにナビゲーション・モデル２１４に対して検証要件２１８を検査する。例えば、検証結果１０８は、検証システム１０２のメモリ又は別の場所に記憶され、ウェブ・アプリケーション１０４の客観的な評価を提供する、（検証要件２１８それぞれが満たされたか否か、又は、一般的には、１つ又は複数のナビゲーション若しくはビジネス・ロジック特性又は要件が満たされたか否かを含む）１つ又は複数の結果、テーブル、又はグラフを含み得る。更に、一部の実施例では、要件生成器２１６は、本明細書及び特許請求の範囲記載のウェブ・アーチファクトの自然言語マッピングを入力として取得し、ウェブ・アーチファクトのマッピングを使用して本明細書及び特許請求の範囲記載の自然言語表現の表記の形式でユースケース又はテストケースを生成し、次いで、生成された表記に基づいて実現形態レベルの検証要件２１８を生成し得る。
【００１８】
図４は、本開示による、ウェブ・アプリケーション・クローラ２１２の選択された構成部分を示す。図４に示すように、ウェブ・アプリケーション・クローラ２１２は、１つ又は複数の解析エンジン（例えば、ＨＴＭＬ解析エンジン４０２、ＣＳＳ解析エンジン４０４、ジャバスクリプト解析エンジン４０６、及びジャバ解析エンジン４０８）を含み得る。各解析エンジンは、フォームを含むレンダリングされたウェブ・ページに関する特定の言語の下にあるコードを解析するよう構成し得る（例えば、ＨＴＭＬ解析エンジン４０２はＨＴＭＬを解析し得、ＣＳＳ解析エンジン４０４はＣＳＳを解析し得る等である）。前述の解析に基づいて、解析エンジンは個々に又は協調して、ウェブ・アプリケーション・クローラ２１２が自動的にフォーム・フィールドに入力し得る入力の組４１２を生成し得る。
【００１９】
入力の組４１２は、何れかの適切なやり方で生成し得る。例えば、下にあるコードの解析に基づいて、解析エンジンは個々に、又は協調して、１つ又は複数のフォーム・フィールドに対して要求される入力のタイプを判定し得る。例証するに、図２を参照すれば、解析エンジンは、ウェブ・アプリケーションのユーザに向けて表示されるように、特定のフィールド２０４が特定の静的配列２０２に隣接している（例えば、静的配列「Ｎａｍｅ：」が特定のフィールド２０４に隣接している）旨を解析に基づいて判定し得る。前述の、静的配列２０２に隣接していることは、フィールド２０４に入力する対象のデータのタイプを示し得る（「Ｎａｍｅ：」に隣接していることは、特定のフィールド２０４において名前が要求されている旨を示し得る。「Ｚｉｐ：」に隣接していることは、特定のフィールド２０４において郵便番号が要求されている旨を示し得る）。よって、１つ又は複数のフォーム・フィールドについて要求される入力のタイプに基づいて、解析エンジンは、前述のタイプの入力と一致して入力４１２の組を、個々に、又は協調して、生成（例えば、「Ｎａｍｅ」に隣接しているフィールドに対して複数の名前を生成、「ｚｉｐ」に隣接しているフィールドに対して複数の郵便番号コードを生成）し得る。
【００２０】
入力４１２の各組は、フォームの１つ又は複数のフィールドに対する入力を含むデータの組を含み得る。例えば、図２に表すフォームに対する単一の入力４１２の組は、名前、住所、都市、州、郵便番号、ユーザ名、及びパスワードを含み得る。
【００２１】
一部の場合には、ウェブ・アプリケーションの振る舞いは、フォームに入力される変数に依存し得る。よって、ウェブ・アプリケーションの振る舞いをできる限り、露出する広範囲にわたるクローリングができるためには、異なるデータを備えた別々の多くの入力の組４１２を生成し得る。特定の実施例では、生成された入力の組４１２の１つ又は複数は、ウェブ・アプリケーションのエラー処理の振る舞いを露出するために、不整合なデータを含み得る。例えば、特定の入力の組４１２は、特定の組からの郵便番号と不整合な都市／州の組合せを含み、（例えば、カリフォルニア州サンノゼという都市／州の組合せを含むが、テキサス州オースチンの郵便番号も含み、）よって、前述の不整合を処理するためにウェブ・アプリケーションの振る舞いを（存在する場合に）露出し得る。
【００２２】
入力の組４１２は、何れかの適切なやり方で生成し得る。一部の実施例では、入力の組４１２は、ウェブ・アプリケーション・クローラ２１２にアクセス可能なデータベースに含まれるデータを含み得る。例えば、前述のデータベースは、名前、住所及び他のデータのインデクスを含み得、その入力タイプとしての名前により、フィールドの名前を取り出し得、その入力タイプとしての住所により、フィールドの住所を取り出し得る等である。
【００２３】
以上に加えて、解析エンジンは、更に、フォーム・フィールド上に配置された制約（例えば、クライアントサイド検証コードによって確立される制約）に基づいてデータを生成し得る。前述の制約は、種々のフィールドに入力されるデータを制限し得る。例えば、制約は、特定の列の長さに、特定のフィールドに入力されるデータを制限し、かつ／又は特定の文字を可能にし得る（例えば、郵便番号を入力する対象のフィールドの場合、制約はフィールド入力を５つの数字に制限し得る）。よって、一部の入力の組４１２は、前述の制約に準拠したデータを含み得、他の入力の組は、制約に準拠した入力列及び制約に準拠していない入力列を処理するうえでウェブ・アプリケーションの振る舞いを露出するために、前述の制約に準拠していないデータを含み得る。
【００２４】
図５は、本開示による、ウェブ・アプリケーションを検証するための例示的な方法５００のフローチャートを示す。方法５００は一般に、５０２で始まり、５０２ではウェブ・アプリケーション・クローラ２１２はウェブ・アプリケーション１０４にアクセスし得る。ウェブ・アプリケーション・クローラ２１２は、ウェブ・アプリケーションのコード（例えば、ジャバスクリプト、ＨＴＭＬ等）を読み取ることにより、ウェブ・アプリケーション１０４にアクセスし得る。工程５０４では、フォームを含むウェブ・アプリケーション１０４の特定のページ毎に、クローラ２１２は前述のページの下にあるコードを解析し得る。
【００２５】
工程４０４後に、工程５０４と同時に、方法５００は工程５０６に進み得、工程５０６では、クローラ２１２は、フォーム毎の下にあるコードの解析に基づいて、前述のフォームへの入力及び送出のために１つ又は複数の入力の組４１２を生成し得る。上述の通り、一部の実施例では、前述の入力の組４１２は、フォームに入力されるデータに対応する制約、及び／又はフォームによって要求されるデータのタイプに基づいて作成し得る。
【００２６】
工程５０４及び５０６の後又は前述の工程５０４及び５０６と同時に、方法５００は工程５０８に進み得、クローラ２１２は、フォームに対する入力データとして、生成された入力４１２の組を使用してウェブ・アプリケーション１０４をクローリングする。例えば、ウェブ・アプリケーション１０４をクローリングするうえで、クローラ２１２は、フォームを有する特定のページに複数回、アクセスし、アクセス毎に、別々の入力の組４１２を入力し得る、クローリングに基づいて、クローラ２１２は、工程５１０で、ナビゲーション（振る舞い）モデル２１４を生成し得る。図２に示すように、クローラ２１２は、ウェブ・アプリケーション１０４をクローリングするうえで、クローラ２１２によって使用するために誘導エンジン２１０からの誘導命令、パラメータ、及び他の情報などの入力を受け取り得る。上記工程の前、上記工程の後、又は上記工程と同時に、検証ツールキット２２０は工程５１２で、ユーザレベル検証要件にアクセスし得る。一部の実施例では、要件生成器２１６は、それ自体が、ウェブ・アプリケーション１０４、又はクローリングされたウェブ・アプリケーション１０４にアクセスし、ウェブ・アプリケーション１０４の種々のウェブ・アーチファクトに対する自然言語マッピングを含むユーザレベルの検証要件（例えば、ウェブ・アーチファクトの自然言語表現を備えたテストケース又は特性）を自動的に生成する。
【００２７】
特定の実施例では、ナビゲーション・モデル２１４は、ウェブ・アプリケーション１０４の振る舞いのコンパクトな数理モデル又は表現であり、特定の実施例では、ウェブ・アプリケーション１０４のクライアント層である。一実施例では、ナビゲーション・モデル２１４は、ＸＭＬでフォーマッティングされ、その後、検証ツールキット２２０により、ＸＭＬ文書又はファイルとして記憶される。検証ツールキット２２０は次いで、ナビゲーション・モデル２１４及び検証要件２１８を使用して、自動的に、かつ、ランタイム・ユーザ入力なしでウェブ・アプリケーション１０４を、例えば、工程５１４で、ナビゲーション・モデル２１４に対して検証要件２１８を検査することによって検証し得る。検証ツールキット２２０は次いで、５１６で、出力検証結果を出力し得る。検証結果１０８は、例えば、検証システム１０２のメモリ、又は他の場所に記憶され、検証要件２１８それぞれが満たされたか、又は、一般に、１つ又は複数のナビゲーション若しくはビジネス・ロジックの特性若しくは要件が満たされたかを含む、ウェブ・アプリケーション１０４の客観的な評価を提供する１つ又は複数の結果、テーブル、若しくはグラフを含み得る。
【００２８】
効果的には、上記方法及びシステムは、ウェブ・アプリケーションの検証システムが、フォーム・データを自動的に入力し、よって、フォーム・データを入力するための人間の介入の必要性を軽減することを可能にする。
【００２９】
図６は、本開示の実施例による例示的なコンピュータ・システム６００を示す。特定の実施例では、１つ又は複数のコンピュータ・システム６００は、本明細書及び特許請求の範囲に記載又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を行う。特定の実施例では、１つ又は複数のコンピュータ・システム６００は、本明細書及び特許請求の範囲に記載又は例証された機能を提供する。特定の実施例では、１つ又は複数のコンピュータ・システム６００上で実行されるソフトウェアは、本明細書及び特許請求の範囲に記載又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を行うか、又は、本明細書及び特許請求の範囲記載の機能を提供する。特定の実施例は、１つ又は複数のコンピュータ・システム６００の１つ又は複数の部分を含む。
【００３０】
本開示は、何れかの適切な数のコンピュータ・システム６００を想定している。本開示は、何れかの適切な物理的形式を呈するコンピュータ・システム６００を想定している。限定でなく、例として、コンピュータ・システム６００は、組み込み型コンピュータ・システム、システムオンチップ（ＳＯＣ）、シングルボード・コンピュータ・システム（ＳＢＣ）（例えば、コンピュータオンモジュール（ＣＯＭ）又はシステムオンモジュール（ＳＯＭ））、デスクトップ型コンピュータ・システム、ラップトップ型又はノートブック型コンピュータ・システム、インタアクティブ・キオスク、汎用コンピュータ、コンピュータ・システムのメッシュ、携帯電話機、携帯情報端末（ＰＤＡ）、サ―バ、又は、前述の２つ以上の組合せであり得る。コンピュータ・システム６００は、適宜、１つ又は複数のコンピュータ・システム６００を含み、ユニタリー型であっても分散型であってもよく、複数の場所にまたがってもよく、複数のマシンにまたがってもよく、クラウド（１つ又は複数のネットワーク内の１つ又は複数のクラウド構成部分を含み得る）に常駐していてもよい。１つ又は複数のコンピュータ・システム６００は、適宜、本明細書及び特許請求の範囲に記載されたか又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を、実質的な空間制約又は時間制約なしで行い得る。限定でなく、例として、１つ又は複数のコンピュータ・システム６００は、本明細書及び特許請求の範囲記載の１つ又は複数の方法のうちの１つ又は複数の工程をリアルタイムで又はバッチ・モードで行い得る。１つ又は複数のコンピュータ・システム６００は、適宜、本明細書及び特許請求の範囲に記載又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を別々の時点で、又は別々の場所で行い得る。
【００３１】
特定の実施例では、コンピュータ・システム６００は、プロセッサ６０２、メモリ６０４、記憶装置６０６、入出力（Ｉ／Ｏ）インタフェース６０８、通信インタフェース６１０、及びバス６１２を含む。本開示は、特定の構成において特定数の特定の構成部分を有する特定のコンピュータ・システムを記載し、例証しているが、本開示は、何れかの適切な構成における何れかの適切な数の何れかの適切な構成部分を有する何れかの適切なコンピュ―タ・システムを想定している。
【００３２】
特定の実施例では、プロセッサ６０２は、コンピュータ・プログラムを構成するものなどの、命令を実行するためのハードウェアを含む。限定でなく例として、プロセッサ６０２は、命令を実行するために、内部レジスタ、内部キャッシュ、メモリ６０４、又は記憶装置６０６から命令を取り出し（又はフェッチし）、デコードし、実行し、次いで、１つ又は複数の結果を内部レジスタ、内部キャッシュ、メモリ６０４，又は記憶装置６０６に書き込み得る。特定の実施例では、プロセッサ６０２は、データ、命令、又はアドレスのために１つ又は複数の内部キャッシュを含み得る。本開示は、適宜、何れかの適切な数の何れかの適切な内部キャッシュを含むプロセッサ６０２を想定している。限定でなく、例として、プロセッサ６０２は、１つ又は複数の命令キャッシュ、１つ又は複数のデータ・キャッシュ、及び１つ又は複数のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）を含み得る。命令キャッシュ内の命令は、メモリ６０４内又は記憶装置６０６内の命令の複製であり得、命令キャッシュはプロセッサ６０２による前述の命令の取り出しを高速化し得る。データ・キャッシュ内のデータは、プロセッサ６０２で命令が処理する対象の、メモリ６０４内又は記憶装置６０６内のデータの複製、プロセッサ６０２で実行するその後の命令によるアクセスのための、又は、メモリ６０４若しくは記憶装置６０６への書き込みのための、プロセッサ６０２で実行される先行する命令の結果、又は、他の適切なデータであり得る。データ・キャッシュは、プロセッサ６０２による読み出し又は書き込みの動作を高速化し得る。ＴＬＢは、プロセッサ６０２のための仮想アドレス変換を高速化し得る。特定の実施例では、プロセッサ６０２は、データ、命令、又はアドレスの１つ若しくは複数の内部レジスタを含み得る。本開示は、何れかの適切な数の何れかの適切な内部レジスタを適宜含むプロセッサ６０２を想定している。プロセッサ６０２は、適宜、１つ又は複数の論理演算装置（ＡＬＵ）を含むか、マルチコア・プロセッサであるか、又は１つ又は複数のプロセッサ６０２を含み得る。本開示は特定のプロセッサを記載し、例証するが、本開示は何れかの適切なプロセッサを想定している。
【００３３】
特定の実施例では、メモリ６０４は、プロセッサ６０２が実行するための命令、又はプロセッサ６０２が処理するためのデータを記憶する主メモリを含む。限定でなく例として、コンピュータ・システム６００は、記憶装置６０６、又は（例えば、別のコンピュータ・システム６００などの）別のソースからメモリ６０４に命令をロードし得る。プロセッサ６０２は次いで、メモリ６０４から内部レジスタ又は内部キャッシュに命令をロードし得る。命令を実行するために、プロセッサ６０２は、内部レジスタ又は内部キャッシュから命令を取り出し、デコードし得る。命令の実行中又は実行後、プロセッサ６０２は、（中間結果又は最終結果であり得る）１つ若しくは複数の結果を内部レジスタ又は内部キャッシュに書き込み得る。プロセッサ６０２は、前述の結果のうちの１つ又は複数をメモリ６０４に書き込み得る。特定の実施例では、プロセッサ６０２は、１つ又は複数の内部レジスタ内若しくは内部キャッシュ内、又はメモリ６０４内の命令のみを実行し、（記憶装置６０６内又はそれ以外の場所内の命令は実行せず、）１つ又は複数の内部レジスタ内若しくは内部キャッシュ内、又はメモリ６０４内のデータのみを処理する（記憶装置６０６内又はそれ以外の場所内の命令は実行しない）。（アドレス・バス及びデータ・バスをそれぞれが含み得る）１つ又は複数のメモリ・バスは、プロセッサ６０２をメモリ６０４に結合し得る。バス６１２は、以下に説明するように、１つ又は複数のメモリ・バスを含み得る。特定の実施例では、１つ又は複数のメモリ管理装置（ＭＭＵ）はプロセッサ６０２とメモリ６０４との間に常駐し、プロセッサ６０２によって要求されるメモリ６０４に対するアクセスを容易にする。特定の実施例では、メモリ６０４はランダム・アクセス・メモリ（ＲＡＭ）を含む。このＲＡＭは、揮発性メモリであり得る。このＲＡＭは、適宜、ダイナミックＲＡＭ（ＤＲＡＭ）又はスタティックＲＡＭ（ＳＲＡＭ）であり得る。更に、このＲＡＭは、適宜、単一ポートのＲＡＭ又はマルチポートのＲＡＭであり得る。本明細書及び特許請求の範囲は、何れかの適切なＲＡＭを想定している。メモリ６０４は、適宜、１つ又は複数のメモリ６０４を含み得る。本開示は特定のメモリを記載し、例証しているが、本開示は何れかの適切なメモリを想定している。
【００３４】
特定の実施例では、記憶装置６０６は、データ又は命令用の大容量記憶装置を含む。限定でなく、例として、記憶装置６０６は、ＨＤＤ、フロッピー（登録商標）・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、若しくは、ユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、又は前述の２つ以上の組合せを含み得る。記憶装置６０６は、適宜、取り外し可能な媒体、又は取り外し可能でない（若しくは固定の）媒体を含み得る。記憶装置６０６は、適宜、コンピュータ・システム６００の内部にあっても外部にあってもよい。特定の実施例では、記憶装置６０６は、不揮発性のソリッドステート・メモリである。特定の実施例では、記憶装置６０６はリードオンリ・メモリ（ＲＯＭ）を含む。このＲＯＭは、適宜、マスクプログラムされたＲＯＭ、プログラム可能なＲＯＭ（ＰＲＯＭ）、消去可能なＰＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）、電気的に改変可能なＲＯＭ（ＥＡＲＯＭ）、若しくは、フラッシュ・メモリ、又は、前述の２つ以上の組合せであり得る。本開示は、何れかの適切な物理的形式を呈する大容量記憶装置６０６を想定している。記憶装置６０６は、適宜、プロセッサ６０２と記憶装置６０６との間の通信を容易にする１つ又は複数の記憶制御装置を含み得る。記憶装置６０６は、適宜、１つ又は複数の記憶装置６０６を含み得る。本開示は特定の記憶装置を記載し、例証しているが、本開示は何れかの適切な記憶装置を想定している。
【００３５】
特定の実施例では、Ｉ／Ｏインタフェース６０８は、コンピュータ・システム６００と、１つ又は複数のＩ／Ｏ装置との間の通信のための１つ又は複数のインタフェースを提供するハードウェア、ソフトウェア、又は両方を含む。コンピュータ・システム６００は、適宜、前述のＩ／Ｏ装置のうちの１つ又は複数を含み得る。前述のＩ／Ｏ装置の１つ又は複数は、個人とコンピュータ・システム６００との間の通信を可能にし得る。限定でなく、例として、Ｉ／Ｏ装置は、キーボード、キーパッド、マイクロフォン、モニタ、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオ・カメラ、別の適切なＩ／Ｏ装置、又は前述の２つ以上の組合せを含み得る。Ｉ／Ｏ装置は１つ又は複数のセンサを含み得る。本開示は、何れかの適切なＩ／Ｏ装置、及び上記何れかの適切なＩ／Ｏ装置との何れかの適切なＩ／Ｏインタフェース６０８を想定している。Ｉ／Ｏインタフェース６０８は、適宜、プロセッサ６０２が前述のＩ／Ｏ装置のうちの１つ又は複数を駆動させることを可能にする１つ又は複数の装置若しくはソフトウェア・ドライバを含み得る。Ｉ／Ｏインタフェース６０８は、適宜、１つ又は複数のＩ／Ｏインタフェース６０８を含み得る。本開示は特定のＩ／Ｏインタフェースを記載し、例証しているが、本開示は何れかの適切なＩ／Ｏインタフェースを想定している。
【００３６】
特定の実施例では、通信インタフェース６１０は、コンピュータ・システム６００と、１つ若しくは複数の他のコンピュータ・システム６００、又は１つ若しくは複数のネットワークとの間の（例えば、パケットベースの通信などの）通信のための１つ又は複数のインタフェースを提供するハードウェア、ソフトウェア、又は両方を含む。限定でなく例として、通信インタフェース６１０は、イーサネット（登録商標）若しくは他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ（ＮＩＣ）若しくはネットワーク・アダプタ、又は、ワイファイ・ネットワークなどの無線ネットワークと通信するための無線アダプタ若しくは無線ＮＩＣ（ＷＮＩＣ）を含み得る。この開示は、何れかの適切なネットワーク、及び上記何れかの適切なネットワークとの何れかの適切な通信インタフェース６１０を想定している。限定でなく例として、コンピュータ・システム６００は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク（ＰＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、若しくは、インターネットの１つ若しくは複数の部分、又は、前述の２つ以上の組合せと通信し得る。前述の１つ又は複数のネットワークの１つ又は複数の部分は有線であっても無線であってもよい。例として、コンピュータ・システム６００は、（例えば、ブルートゥースＷＰＡＮなどの）無線ＰＡＮ（ＷＰＡＮ）、ワイファイ・ネットワーク、ワイマックス・ネットワーク、（例えば、ジーエスエム（ＧＳＭ）ネットワークなどの）携帯電話ネットワーク、若しくは他の適切な無線ネットワーク、又は前述のうちの２つ以上の組合せと通信し得る。コンピュータ・システム６００は、適宜、前述のネットワークの何れかのための、何れかの適切な通信インタフェース６１０を含み得る。通信インタフェース６１０は、適宜、１つ又は複数の通信インタフェース６１０を含み得る。本開示は特定の通信インタフェースを記載し、例証しているが、本開示は何れかの適切な通信インタフェースを想定している。
【００３７】
特定の実施例では、バス６１２は、コンピュータ・システム６００の構成部分を互いに結合するハードウェア、ソフトウェア、又は両方を含む。限定でなく、例として、バス６１２は、アクセラレーテッド・グラフィクス・ポート（ＡＧＰ）若しくは他のグラフィクス・バス、拡張業界標準アーキテクチャ（ＥＩＳＡ）バス、フロント・サイド・バス（ＦＳＢ）、ハイパートランスポート（ＨＴ）相互接続、業界標準アーキテクチャ（ＩＳＡ）バス、インフィニバンド相互接続、低ピン・カウント（ＬＰＣ）バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、周辺装置相互接続（ＰＣＩ）バス、ＰＣＩエクスプレス（ＰＣＩ−Ｘ）バス、シリアル高度技術アタッチメント（ＳＡＴＡ）バス、ビデオ電子標準協会局所（ＶＬＢ）バス、若しくは、別の適切なバス、又は、前述の２つ以上の組合せを含み得る。バス６１２は、適宜、１つ又は複数のメモリ６１２を含み得る。本開示は特定のバスを記載し、例証しているが、本開示は何れかの適切なバス又は相互接続を想定している。
【００３８】
本明細書及び特許請求の範囲では、コンピュータ読み取り可能な記憶媒体への参照は、１つ又は複数の有形のコンピュータ読み取り可能な記憶媒体を有する構造を含む。限定でなく、例として、コンピュータ読み取り可能な記憶媒体は、適宜、（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向ＩＣ（ＡＳＩＣ）などの）半導体ベース又は他の集積回路（ＩＣ）、ハード・ディスク、ＨＤＤ、ハイブリッド・ハード・ドライブ（ＨＨＤ）、光ディスク、光ディスク・ドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピー（登録商標）・ディスク、フロッピー（登録商標）・ディスク・ドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、ソリッドステート・ドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアなディジタル・カード、セキュアなディジタル・ドライブ、若しくは、別の適切なコンピュータ読み取り可能な媒体、又は、前述のうちの２つ以上の組合せを含み得る。本明細書及び特許請求の範囲では、コンピュータ読み取り可能な記憶媒体への言及は、米国特許法第１０１条の特許の保護の対象でない何れかの媒体である。本明細書及び特許請求の範囲では、コンピュータ読み取り可能な記憶媒体への言及は、米国特許法第１０１条の下で特許の保護の対象でない範囲で（本来的には、伝搬する電気信号又は電磁気信号などの）信号伝送の一時的な形態を除く。
【００３９】
本開示は、何れかの適切な記憶装置を実現する１つ又は複数のコンピュータ読み取り可能な記憶媒体を想定している。特定の実施例では、コンピュータ読み取り可能な記憶媒体は、適宜、（例えば、１つ若しくは複数の内部レジスタ又はキャッシュなどの、）プロセッサ６０２の１つ若しくは複数の部分、メモリ６０４の１つ若しくは複数の部分、記憶装置６０６の１つ若しくは複数の部分、又は、前述の組合せを実現する。特定の実施例では、コンピュータ読み取り可能な記憶媒体はＲＡＭ又はＲOＭを実現する。特定の実施例では、コンピュータ読み取り可能な記憶媒体は揮発性メモリ又はパーシスタント・メモリを実現する。特定の実施例では、１つ又は複数のコンピュータ読み取り可能な記憶媒体はソフトウェアを実施する。本明細書及び特許請求の範囲では、ソフトウェアへの言及は、適宜、１つ若しくは複数のアプリケーション、バイトコード、１つ若しくは複数のコンピュータ・プログラム、１つ若しくは複数の実行可能形式、１つ若しくは複数の命令、ロジック、マシン・コード、１つ若しくは複数のスクリプト、又はソース・コード等を包含し得る。特定の実施例では、ソフトウェアは、１つ又は複数のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。本明細書及び特許請求の範囲は、何れかの適切なプログラミング言語、又はプログラミング言語の組合せで記述されたか、又はその他のやり方で表現された何れかの適切なソフトウェアを想定している。特定の実施例では、ソフトウェアは、ソース・コード又はオブジェクト・コードとして表現される。特定の実施例では、ソフトウェアは、例えば、Ｃ、パール、又はその適切な拡張などの高水準プログラミング言語で表現される。特定の実施例では、ソフトウェアは、アセンブラ言語（又はマシン・コード）などの低水準プログラミング言語で表現される。特定の実施例では、ソフトウェアはＪＡＶＡ(登録商標)で表現される。特定の実施例では、ソフトウェアは、ハイパー・テキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、又は他の適切なマークアップ言語で表現される。
【００４０】
本開示は、当業者が理解するであろう、例示的な実施例に対する変更、置換、変形、改変、及び修正全てを包含する。同様に、特許請求の範囲は、当業者が理解するであろう、例示的な実施例に対する変更、置換、変形、改変、及び修正全てを包含する。
（付記１）
ウェブ・アプリケーションのユーザにより、データの入力のために１つ又は複数のフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする工程であって、前記ウェブ・ページは、前記ウェブ・ページのコードに基づいて前記ウェブ・アプリケーションによってレンダリングされる工程と、
前記コードを解析する工程と、
前記解析に基づいて前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する工程と、
前記少なくとも１つのフィールドに、前記１つ又は複数の入力の組を自動的に入力する工程と、
前記少なくとも１つのフィールドに前記１つ又は複数の入力の組を含む前記フォームを自動的に送出する工程と
を含むことを特徴とする方法。
（付記２）
前記特定のページに複数回、アクセスし、アクセス毎に前記１つ又は複数の入力の組のうちの別の組を入力する工程を更に含むことを特徴とする付記１記載の方法。
（付記３）
前記ウェブ・アプリケーションのナビゲーション・モデルを生成するよう前記ウェブ・アプリケーションにクローリングする工程を更に含むことを特徴とする付記２記載の方法。
（付記４）
前記コードを解析する工程は、前記少なくとも１つのフィールドについて要求されるデータのタイプを判定する工程を含み、
前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する工程は、前記判定されたデータのタイプに基づいてデータを生成する工程を含むことを特徴とする付記１記載の方法。
（付記５）
前記少なくとも１つのフィールドについて要求されるデータのタイプを判定する工程は、前記ウェブ・ページがディスプレイにレンダリングされる場合に前記少なくとも１つのフィールドに隣接して表示される静的配列を判定するよう前記コードを解析する工程を含むことを特徴とする付記４記載の方法。
（付記６）
前記コードを解析する工程は、前記少なくとも１つのフィールドに入力されるデータに対する入力制約を解析する工程を含み、
前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する工程は、前記入力制約に基づいてデータを生成する工程を含むことを特徴とする付記１記載の方法。
（付記７）
実行されると、
ウェブ・アプリケーションのユーザにより、データの入力のために１つ又は複数のフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする機能であって、前記ウェブ・ページは、前記ウェブ・ページのコードに基づいて前記ウェブ・アプリケーションによってレンダリングされる機能と、
前記コードを解析する機能と、
前記解析に基づいて前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能と、
前記少なくとも１つのフィールドに、前記１つ又は複数の入力の組を自動的に入力する機能と、
前記少なくとも１つのフィールドに前記１つ又は複数の入力の組を含む前記フォームを自動的に送出する機能
とを行うよう動作可能なソフトウェアをコード化したことを特徴とする１つ又は複数のコンピュータ読み取り可能な記憶媒体。
（付記８）
前記ソフトウェアは、実行されると、前記特定のページに複数回、アクセスし、アクセス毎に前記１つ又は複数の入力の組のうちの別の組を入力するよう更に動作可能であることを特徴とする付記７記載の媒体。
（付記９）
前記ソフトウェアは、実行されると、前記ウェブ・アプリケーションをクローリングして前記ウェブ・アプリケーションのナビゲーション・モデルを生成するよう更に動作可能であることを特徴とする付記８記載の媒体。
（付記１０）
前記コードを解析する機能は、前記少なくとも１つのフィールドについて要求されるデータのタイプを判定する機能を含み、
前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能は、前記判定されたデータのタイプに基づいてデータを生成する機能を含むことを特徴とする付記７記載の媒体。
（付記１１）
前記ソフトウェアは、実行されると、前記少なくとも１つのフィールドについて要求されるデータのタイプを判定するために、前記ウェブ・ページがディスプレイにレンダリングされると、前記少なくとも１つのフィールドに隣接して表示する静的配列を判定するよう前記コードを解析するよう更に動作可能であることを特徴とする付記１０記載の媒体。
（付記１２）
前記コードを解析する機能は、前記少なくとも１つのフィールドに入力されるデータに対する入力制約を解析する機能を含み、
前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能は、前記入力制約に基づいてデータを生成する機能を含むことを特徴とする付記７記載の媒体。
（付記１３）
前記コードを解析する機能は、
ハイパー・テキスト・マークアップ言語で記述された前記コードの部分を解析する機能、
ハイパー・テキスト・マークアップ言語で記述された前記コードの部分を解析する機能、
カスケーディング・スタイル・シートに記述された前記コードの部分を解析する機能、
ジャバスクリプトで記述された前記コードの部分を解析する機能、及び
ジャバで記述された前記コードの部分を解析する機能
のうちの少なくとも１つを含むことを特徴とする付記７記載の媒体。
（付記１４）
ウェブ・アプリケーションをクローリングするシステムであって、
前記ウェブ・アプリケーションのユーザにより、データの入力のために少なくとも１つのフィールドを有するフォームを含むウェブ・アプリケーションの特定のページにアクセスする機能であって、前記ウェブ・ページは、前記ウェブ・ページのコードに基づいて前記ウェブ・アプリケーションによってレンダリングされる機能と、
前記コードを解析する機能と、
前記解析に基づいて前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能と、
前記少なくとも１つのフィールドに、前記１つ又は複数の入力の組を自動的に入力する機能と、
前記少なくとも１つのフィールドに前記１つ又は複数の入力の組を含む前記フォームを自動的に送出する機能とを行うよう構成された１つ又は複数のコード解析を有するクローラを備えることを特徴とする、ウェブ・アプリケーションをクローリングするシステム。
（付記１５）
前記１つ又は複数のコード解析エンジンは、実行されると、前記特定のページに複数回、アクセスし、アクセス毎に前記１つ又は複数の入力の組のうちの別の組を入力するよう構成されることを特徴とする付記１４記載のシステム。
（付記１６）
前記１つ又は複数のコード解析エンジンは、前記ウェブ・アプリケーションのナビゲーション・モデルを生成するよう前記ウェブ・アプリケーションをクローリングするよう構成されることを特徴とする付記１５記載のシステム。
（付記１７）
前記コードを解析する機能は、前記少なくとも１つのフィールドについて要求されるデータのタイプを判定する機能を含み、
前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能は、前記判定されたデータのタイプに基づいてデータを生成する機能を含むことを特徴とする付記１４記載のシステム。
（付記１８）
前記１つ又は複数のコード解析エンジンは、前記少なくとも１つのフィールドについて要求されるデータのタイプを判定するために、前記ウェブ・ページがディスプレイにレンダリングされると、前記少なくとも１つのフィールドに隣接して表示する静的配列を判定するよう前記コードを解析するよう構成されることを特徴とする付記１７記載のシステム。
（付記１９）
前記コードを解析する機能は、前記少なくとも１つのフィールドに入力されるデータに対する入力制約を解析する機能を含み、
前記少なくとも１つのフィールドに対する１つ又は複数の入力の組を生成する機能は、前記入力制約に基づいてデータを生成する機能を含むことを特徴とする付記１４記載のシステム。
（付記２０）
前記１つ又は複数のコード解析エンジンは、
ハイパー・テキスト・マークアップ言語で記述された部分を解析するためのハイパー・テキスト・マークアップ言語解析エンジン、
カスケーディング・スタイル・シートで記述された前記コードの部分を解析するためのカスケーディング・スタイル・シート解析エンジン、
ジャバスクリプトで記述された前記コードの部分を解析するためのジャバスクリプト解析エンジン、及び
ジャバで記述された前記コードの部分を解析するためのジャバ解析エンジン
のうちの少なくとも１つを含むことを特徴とする付記１４記載のシステム。
【図１】
2012022683.tif 000003
【図２】
2012022683.tif 000004
【図３】
2012022683.tif 000005
【図４】
2012022683.tif 000006
【図５】
2012022683.tif 000007
【図６】
2012022683.tif 000008