ソフトウェア検証システムにおいて、各々複数の仮想マシンをホストするよう構成される複数の物理的なマシンを有する市販の共用リソースサービスであるクラウドサービスと、各々がプラットホームを起動する1つの仮想マシンである複数のテストノードと、複数のクライアントの1つと検証システムとの間の検証セッションを管理するためのクライアントマネージャと、サーバのクラウドサービスプールおよびサーバのローカルプールのそれぞれにおいて前記複数のテストノードによって使用するための複数の利用可能なプラットホームを認識するエクスペディタであって、前記複数のクライアントの1つが特定のプラットホームを使用するために前記検証セッションを要求すると、前記エクスペディタは前記指定プラットホームを起動する前記複数のテストノードの利用可能な1つのネットワークアドレスを入手し、前記エクスペディタは前記要求を行うクライアントに前記ネットワークアドレスを送信し、次いで、前記要求を行うクライアントを前記要求されたプラットホームを起動する前記利用可能なテストノードに接続する、エクスペディタと、を備え、前記要求されたプラットホームが利用可能でない場合、前記サーバのローカルプール内に位置し前記要求されたプラットホームを有する新しい仮想マシンが始動され、前記要求を行うクライアントと接続されることを特徴とするソフトウェア検証システム。請求項1に記載のシステムにおいて、前記複数のテストノードの各々の状態を判断するため、および、テストノードデータベース内に各状態を格納するためにそのような状態をデータベースマネージャに提供するための状態モニタをさらに備え、前記テストノードマネージャは前記複数のテストノードの各々の状態を前記エクスペディタに提供するよう動作可能であることを特徴とするシステム。請求項1に記載のシステムにおいて、利用可能なテストモードで動作するブラウザのフレームバッファ情報を収集するため、および、前記要求を行うクライアントと前記利用可能なテストノードとの間の接続を通じて前記情報を送信するために、ビデオインターフェースをさらに備えることを特徴とするシステム。請求項1に記載のシステムにおいて、複数のスクリーンイメージを格納するためのイメージキャッシュをさらに備え、前記複数のスクリーンイメージの各々は複数の特定のプラットホームの1つのプラットホーム用に構成される既存の仮想マシン上で動作可能であることを特徴とするシステム。請求項5に記載のシステムにおいて、前記サーバのローカルプール内に位置する前記新しい仮想マシンは、前記要求されたプラットホームの前記格納されたイメージを使用して始動されることを特徴とするシステム。ソフトウェアを検証するための方法において、複数の物理的なマシンの各々を、クラウドサービスにおいて複数の仮想マシンをホストするよう構成するステップであって、前記クラウドサービスは市販の共用リソースサービスである、ステップと、複数のテストノードの1つとして前記複数の仮想マシンの各々の仮想マシン上でプラットホームを起動するステップと、複数のクライアントの1つと前記複数のテストノードの1つとの間の検証セッションを管理するステップと、サーバのクラウドサービスプールおよびサーバのローカルプールのそれぞれにおいて前記複数のテストノードによって使用するための複数の利用可能なプラットホームを認識するステップと、前記複数のクライアントの1つが特定のプラットホームを使用するためにソフトウェアの検証を要求すると、前記指定プラットホームを起動する前記複数のテストノードの利用可能な1つのノードのネットワークアドレスを入手するステップと、前記要求を行うクライアントに前記ネットワークアドレスを送信し、次いで、前記要求を行うクライアントを、前記要求されたプラットホームを起動する前記利用可能なテストノードに接続するステップと、を含み、前記特定のプラットホームが利用可能でない場合、前記サーバのローカルプール内に位置し、前記要求されたプラットホームを有する新しい仮想マシンが始動され、前記新しい仮想マシンが前記要求を行うクライアントと接続されることを特徴とするソフトウェアを検証するための方法。請求項6に記載の方法において、前記複数のテストノードの各々の状態を判断するステップと、テストノードデータベース内に各状態を格納するためにそのような状態をデータベースマネージャに提供するステップとをさらに備え、前記テストノードマネージャは前記複数のテストノードの各々の状態を提供するよう動作可能であることを特徴とする方法。請求項6に記載の方法において、前記利用可能なテストモードで動作するブラウザのフレームバッファ情報を収集するステップと、前記要求を行うクライアントと前記利用可能なテストノードとの間の接続を通じて前記情報を送信するステップとをさらに含むことを特徴とする方法。請求項6に記載の方法において、複数のスクリーンイメージをイメージキャッシュ内に格納するステップをさらに備え、前記複数のスクリーンイメージの各々は複数の特定のプラットホームの1つのプラットホーム用に構成される既存の仮想マシン上で動作可能であることを特徴とする方法。請求項9に記載の方法において、前記サーバのローカルプール内に位置する前記新しい仮想マシンは、前記要求されたプラットホームの前記格納されたイメージを使用して始動されることを特徴とする方法。ネットワーク接続クライアントから、複数のネットワーク接続テストノードの少なくとも1つのノード上でのウェブアプリケーションの操作性の検証を可能にするためのソフトウェア検証システムにおいて、前記テストノードの各々は所定のプラットホーム構成を有し、前記クライアントとのセッションを管理し、所望のプラットホーム構成の仕様を前記クライアントから受信するよう動作可能なクライアントマネージャと、前記テストノードの各々および前記テストノードの各々の前記プラットホーム構成の現時点における利用可能性を認識し、前記所定のプラットホーム構成が前記所望のプラットホーム構成に見合う前記テストノードの特定された1つのノードのネットワーク位置を前記クライアントマネージャに通知するよう動作可能であるエクスペディタとを備え、前記クライアントマネージャは、その動作に応じて、前記テストノードの前記特定された1つのノードに前記クライアントを接続するよう動作可能であり、それと同時に、前記クライアントは、ウェブ位置のURLを前記テストノードの前記特定された1つのノードに送信するよう動作可能であり、ウェブ位置のURLでは、前記ウェブアプリケーションは、前記クライアントが命令セットに従って前記ウェブアプリケーションをナビゲートするよう前記テストノードの特定された1つのノード側のブラウザに命令できるように動作可能であり、データは、前記クライアントへの送信のため前記命令セットの実行時に収集されることを特徴とする検証システム。請求項11に記載の検証システムにおいて、前記テストノードの何れも前記所望のプラットホーム構成に見合う前記プラットホーム構成を有しない場合、前記エクスペディタは、前記所望のプラットホーム構成を有する前記テストノードの新しい1つのノードを立ち上げるよう動作することを特徴とする検証システム。請求項11に記載の検証システムにおいて、前記テストノードの前記各々はクラウドサーバシステムにおける仮想プラットホームであり、前記テストノードの前記新しい1つのノードは前記クラウドサーバシステムにおける仮想プラットホームであることを特徴とする検証システム。請求項11に記載の検証システムにおいて、前記テストノードの前記各々はクラウドサーバシステムにおける仮想プラットホームであり、前記テストノードの前記新しい1つのノードは前記検証システムとローカル接続されるプールサーバシステムにおける仮想プラットホームであることを特徴とする検証システム。請求項14に記載の検証システムにおいて、前記エクスペディタは、前記命令セットの完了時に前記クライアントマネージャが前記クライアント前記テストノードのさらなる新しい1つのノードに接続するよう動作するように、前記プールサーバシステムにおける前記テストノードの前記新しい1つのノードの前記プラットホーム構成と実質的に同様のプラットホーム構成を有する前記クラウドサーバシステムにおいて前記テストノードの前記さらなる新しい1つのノードを立ち上げるようさらに動作することを特徴とする検証システム。請求項11に記載の検証システムにおいて、前記テストノードの前記1つのノードは、前記クライアントマネージャに接続される離散プラットホームネットワークであることを特徴とする検証システム。請求項11に記載の検証システムにおいて、前記離散プラットホームである前記テストノードの1つのノードは、前記命令セットに従って人間の介入および管理を受けることを特徴とする検証システム。請求項11に記載の検証システムにおいて、前記収集されたデータは、前記ブラウザのスクリーンショットの選択された1つのスクリーンショット、および、前記テストノードの前記1つのノード側の前記ブラウザのビデオであることを特徴とする検証システム。請求項11に記載の請求項11に記載の検証システムにおいて、前記テストノードの各々の現状を入手するよう動作可能な状態モニタと、前記テストノードの各々の前記現状が密集したデータベースと、前記状態モニタ、前記データベースおよび前記エクスペディタの各々と通信し、前記データベースを前記状態モニタによって入手される前記現状で密集させて前記エクスペディタからの問い合わせinquiry時に前記現状を前記エクスペディタに通知するよう動作可能なデータベースマネージャと、をさらに備えることを特徴とする検証システム。ここで図1を参照すると、ウェブアプリケーション検証システム10が示され、このシステムは説明の通り構築され得る。開発者クライアント12は、クラウドサービス16側のプラットホームとして提供されるリモートテストノード16i、または、ローカルの仮想マシンプール14側のプラットホームとして提供されるローカルテストノード14jでウェブアプリケーションをテストするためのネットワーク上で検証システム10に接続することができる。また、参照された出願でも開示されている通り、検証システム10は、クライアントマネージャ30およびエクスペディタ20を含む。クライアントマネージャ30は、開発者クライアント12と検証システム10との間のセッションを管理する。エクスペディタ20は、クラウドサービスプール14およびローカルプール14の各々においてテストノードに対して利用可能な利用可能なプラットホームの各々を認識する。開発者クライアント12が新しいセッションを要求すると、クライアントマネージャは、エクスペディタから所望のプラットホームの利用可能なテストノードのURLを入手し、そのようなURLを開発者クライアントに送信し、次いで今度は、そのようなURLを有するテストノードに接続して検証セッションを行うことができる。例えば、URLがローカルプール14側で提供されるテストノード14iに対するものであれば、その間に接続が施される。さらに、テストセッション中、ブラウザウィンドウのリアルタイムビデオを入手することができる。この点で、ビデオインターフェース42は、テストノード14iで起動しているブラウザのフレームバッファ情報を収集し、確立された接続を通じて開発者クライアント12にそのような情報を送信することができる。次いで、フレームバッファ情報を使用して、開発者クライアント12側でテストノード14iのブラウザスクリーンを再生することができる。検証システムは、イメージキャッシュ24をさらに含み得、イメージキャッシュには、さまざまなプラットホームに対する複数の仮想マシンイメージまたはスナップショット241、242、...、24nが格納される。クラウドプール16ローカルプール14で現時点において起動されていないプラットホームに対して要求がなされると、エクスペディタは、そのようなプラットホームと一致するイメージ241、242、...、24nの1つをローカルプール16内で利用可能な仮想マシンにコピーする。好ましくは、イメージ241、242、...、24nの選択された1つのイメージは、ローカルプール14のRAM26内に直接コピーされる。イメージキャッシュ24には、特定のプラットホーム用に構成された、入手された仮想マシンのスナップショットが密集し得る。RAMにイメージをコピーすることにより、仮想マシンの始動パラメータを構成する必要性が除去される。クライアントマネージャ30の管理下のクライアントセッションが認証および資格認定されると、エクスペディタは、クラウドプール16またはローカルプール14の任意の仮想マシンを、テストノードとして開発者クライアント12が利用できるようにすることができる。それに応じて、エクスペディタは、検証システム10のための利用可能なリソースのバランスを保って管理することができる。ここで図2を参照すると、上記で定義されているウェブアプリケーションの開発および検証中に有用なウェブアプリケーション検証システム10が示される。一般に、クライアント12側のユーザは、サーバ16上に存在するウェブアプリケーションが、そのユーザインターフェースを介してウェブアプリケーションを起動することを目的としてサーバ16への接続に使用され得るデバイス18のプラットホーム構成と互換性を有するか検証することを希望する。デバイス18は、任意のタイプのパーソナルコンピュータ、または、ウェブブラウザがユーザインターフェースを提供する他のタイプのウェブ接続デバイスであり得る。クライアント12側のユーザは、通常、ウェブアプリケーションに何らかの関心を有し、例えば、ウェブアプリケーションの一部もしくはすべての開発者であること、または、そうでない場合、そのような互換性検証を実行するためにそのようなウェブアプリケーションの所有者もしくは開発者によって雇用もしくは認証されていることなどが挙げられる。以下にさらに詳細に説明されるように、クライアント12側のユーザは、ウェブアプリケーション検証システム10に接続し、クライアント12上で起動しているクライアントブラウザのユーザインターフェースを通じて、サーバ16側のウェブアプリケーションの互換性に対して検証が行われる特定のプラットホーム構成についてアプリケーション検証システム10に通知する。次いで、アプリケーション検証システム10は、特定のプラットホーム構成を有するテストノード22を位置付けてテストノード22上のテストブラウザを立ち上げるよう動作する。クライアント12はアプリケーション検証システム10に接続されるが、クライアントブラウザのインターフェースを通じたクライアント12側のユーザは、テストノード22上のテストブラウザにサーバ16上のウェブアプリケーションの位置へナビゲートするよう、アプリケーション検証システム10に命令する。一旦テストノード22とサーバ16との間で接続が確立されれば、クライアント12側のユーザは、次いで、クライアントブラウザを通じて、テストノード22側のテストブラウザにウェブアプリケーション上で1つまたは複数のコマンドを入力するよう、アプリケーション検証システム10にさらに命令し、ウェブアプリケーションでは、入力されたそれぞれのコマンドに対して、ウェブアプリケーションによるそのようなコマンドの実行結果は、テストノード22に、次いで、システム10に返送される。次いで、クライアント12側のユーザは、クライアント12側のクライアントブラウザのインターフェースにおいてそのような結果を閲覧することができる。アプリケーション検証システム10は、好ましくは、クライアント12、サーバ16およびテストノード22がインターネットなどのネットワーク26上でアプリケーション検証システム10と通信を行うクラウドコンピューティング環境で動作することが企図される。そのような環境では、アプリケーション検証システム10は、ホストされたウェブサイトであり得る。アプリケーション検証システム10は、複数のクライアント121~i側のユーザからアクセス可能であることも企図される。その上、アプリケーション検証システム10は、利用可能な複数のテストノード221~jを有することで複数のユーザに対応し、その各々は、それぞれのサーバ161~nおよび複数のプラットホーム構成上で1つまたは複数のウェブアプリケーションを検証する。テストノード221~jは、静的サーバまたは仮想サーバの何れかであり得、アプリケーション検証システム10がホストされる同じサーバと一緒に配置された状態で存在するか、または、そこからサーバをサービスとして得ることができる任意のサーバファームに存在し得る。その上、テストノード221~jの何れか1つは、人間の介入および管理を受けるネットワーク接続デバイス、例えば、タブレット、スマートフォンまたはコンピュータなどの離散プラットホームでもあり得る。テストノード221~jの各々は、その上で起動しているテストブラウザのそれぞれの1つを有する。好ましくは、テストノード221~jは、弾力的なクラウドサービス、例えば、AmazonEC2サービスからの要求に応じて利用可能な仮想サーバである。以下でさらに説明されるように、弾力的なクラウドサービスにより、テストノード221~jは、オペレーティングシステムおよびウェブブラウザの任意の組合せから決定される指定プラットホーム構成、ならびに、ブラウザインターフェースを通じてウェブアプリケーションを起動することができる複数のインターネット接続デバイス181~kの何れかにおいて見出され得るそのそれぞれのバージョンを有するよう容易に構成できるようになる。図3を参照すると、アプリケーション検証システム10は、入口ハブ28、クライアントマネージャ30およびエクスペディタ20を含む。クライアント121~i図2の何れか1つであり得るクライアント12x側のユーザは、従来の方法でそのそれぞれのクライアントブラウザのユーザインターフェースを通じてアプリケーション検証システム10に接続する。そのようなインターフェースを通じて、ユーザは、入口ハブ28にアクセスすることによって検証手順が着手されることを示すことができる。場合により、ユーザの資格情報の認証には、入口ハブ28へのアクセスを認証することが要求され得る。接続が確立されると、クライアントマネージャ30は、接続しつつあるクライアント12xとの通信に着手する。より具体的には、クライアントマネージャ30は、クライアント12xにHTTPヘッダを送信し、クライアント12xとの検証セッションを開始する。次いで、セッションに着手したクライアント12x側のユーザは、そのようなユーザのクライアント12xのクライアントブラウザのインターフェースを通じて、現行セッションの検証が起こるプラットホームをクライアントマネージャ30に指定することができる。クライアントマネージャは、これを通じてこのクライアント12xに関連するアプリケーション検証システム10との取引および同アプリケーション検証システム10内での取引が登録され得るセッションクライアント12x用のセッションIDをさらに発行する。クライアントマネージャ30は、各セッションID、および、接続され得るすべてのそのようなクライアント121~i図2に対する各セッションに使用されるプラットホームの記録を維持する。本発明の一実施形態では、クライアントデータベース34を使用してそのような記録を維持することができる。エクスペディタ20は、クライアントデータベース34に例示的に繰返しクエリを行うことによって、クライアントマネージャ30によって着手された任意の新しいセッションのインスタンスをモニタするよう動作する。エクスペディタ32が新しいセッションを認識すると、エクスペディタ32は、セッションに対して指定されたプラットホームと同じプラットホーム構成を有するすべてのテストノード221~j図2からテストノード22yを位置付けるよう試みる。必要なテストノード22yが位置付けられれば、エクスペディタ32は、そのそれぞれのテストブラウザを立ち上げるよう、そのようなテストノード22yに命令する。次いで、エクスペディタ32は、セッションに対するプラットホーム構成の利用可能性についてクライアントマネージャ30に通知し、利用可能なテストノード22yの位置をクライアントマネージャ30に伝える。利用可能なテストノード22yの位置を知ることにより、クライアントマネージャ30は、次いで、利用可能なテストノード22yに接続し、テストノード22yのそのような利用可能性についてセッションクライアント12xにさらに知らせる。クライアントマネージャ30が仲介体として動作することで、セッションクライアント12x側のユーザは、クライアントブラウザのインターフェースを通じて、テストノード22y側のテストブラウザによってコマンドが実行されその応答が記録されるように、利用可能なテストノードに送信された一連のコマンド例示的には、SeleniumAPIコールであり得るをその場で入力することができる。通常、初期のコマンドは、サーバ16z側に存在するテスト中のウェブアプリケーションの位置例示的には、URLで与えられるまでナビゲートするという、テストノード22y側のテストブラウザに対する命令であろう。コマンドの終了または停止は、テストブラウザによってテスト中のウェブアプリケーションの検証セッションが終了することを意味する。そのような終了時には、検証セッションの結果は、セッションクライアント12xによる見直しまたはセッションクライアント12xへのアップロードのため、クライアントマネージャ30に送信される。検証セッションの結果は、それぞれのコマンドおよび関連する応答に対してテストノード22y上で実行するテストブラウザのプロセスに関連するデータを含み得る。また、結果は、コマンドが与えられて応答がなされた際にテストブラウザ22yのユーザインターフェースを記録するために仮想ネットワークコンピュータを通じて例示的に入手できるテストブラウザ22yセッションのビデオも含み得る。その上、本発明によれば、テストブラウザ22yセッションのスクリーンショットのそのようなビデオは、テストブラウザのプロセスに関連するデータと同期化される。また、上記のアプリケーション検証システム10は、サーバ161-nの1つが公的にアクセス可能なサイトの代わりに安全なファイアウォールの後方に存在すれば、サーバ161-nの何れか1つに存在し得るウェブアプリケーションの何れか1つをテストすることもできる。そのような場合、アプリケーション検証システム10は、VPNトンネルを作成して安全なファイアウォールの後方のサーバへのマッピングを作成するよう要求することができる。VPNトンネルの変更は、上記の通り、クライアントマネージャが仲介体として動作することを可能にするためにのみ行えばよい。本発明によれば、エクスペディタ32は、新しく着手されたセッションに対して指定されたプラットホームが現時点で利用可能でなければ、上記の通り、新しく着手されたセッションに対するテストノード221~jの何れか1つの利用可能性を判断するのみでなく、必要に応じてテストノード221~jの新しいノードを立ち上げるようさらに動作し得る。それに応じて、エクスペディタ20は、すべての利用可能なテストノード221~jの現状を認識するよう任務が課される。状態とは、テストノード221~jの何れか1つがアイドル状態であるかどうか、したがって、現時点で新しいセッションに利用可能か、または、現行のセッションで手一杯かを指す。各々の現状にかかわらずそのようなすべてのテストノード221~jの総数は、絶対数でも所定の数でもなく、弾力的なクラウドコンピューティング環境におけるプラットホームに対する要求に応じて公知の通り変動することを認識されたい。テストノード221~jの各々の状態の現記録を維持するため、ソフトウェアテストシステムは、状態モニタ36、テストノードデータベースマネージャ38およびテストノードデータベース40をさらに含み得る。テストノード221~jの各々の状態が公知となるかまたは変更されると、状態モニタ36は、テストノードデータベースマネージャ38にそのような状態を提供するよう動作し、テストノードデータベースマネージャ38は、テストノード221~jの特定された1つのノードと関連してテストノードデータベース40にそのような状態を格納する。それに応じて、テストノードデータベースマネージャ38のクエリを実施することによって、エクスペディタ20は、テストノード221~jの各々の状態を常に認識する。状態モニタ36は、弾力的なクラウドコンピューティング環境におけるサービスとしてプラットホームに対して開発されてきた公知の実施技法を使用して、そのようなテストノード221~jがいつオンライン状態であるか、いつアイドル状態であるかまたはいつ手一杯であるかを知るために、テストノード221~jが存在する弾力的なクラウドをモニタする。javascriptobjectnotationプロトコルは、例示的な実装形態において使用することができる。上記の通り、エクスペディタ20は、必要に応じてテストノード221~jの新しいノードを立ち上げるよう動作する。テストノード221~jの新しい1つのノードが必要とされるセッションは、テストノード221~jの新しい1つのノードがオンライン状態となりそのようなセッションで利用できるようになるのを待つ間、クライアントマネージャ30によってキュー内に配置される。しかし、弾力的なクラウドでは、クライアント121~iの1つの任意のユーザを待つことは、検証プロセスがリアルタイムで起こることを期待するユーザに、受け入れ難いほど長い時間遅延をもたらす恐れがある。例えば、弾力的なクラウドでは、テストノード221~jの新しい1つのノードがオンライン状態となり利用できるようになるまで、最大で15分またはそれ以上要する場合がある。そのような遅延を緩和するため、ソフトウェア検証システム10は、事前に選択された数のサーバを含むローカルのスタンバイサーバプール14をさらに含み得、そのサーバの各々は、テストノード221~jの各々に対して上記で説明されたものと同様に、ソフトウェア検証システム10とともに機能し、ソフトウェア検証システム10と相互作用することができる。また、サーバプール14のサーバの各々は、静的サーバまたは仮想サーバの何れかでもあり得る。エクスペディタ20がテストノードデータベース40内でセッションに要求されるプラットホームを有する利用可能なサーバを見出せない場合は、エクスペディタ20は、必要なプラットホームを備えたプールサーバ14zを立ち上げる。サーバプール14は、ソフトウェア検証システム10、より具体的には、エクスペディタ20の管理下にあるため、プールサーバ14zをおよそ10秒で立ち上げてオンラインで利用可能にすることができ、それにより、ユーザが経験する遅延を緩和し、実質的にほぼリアルタイムでのソフトウェア検証システム10との相互作用が可能になる。その上、エクスペディタ20は、サーバプール14の利用度を追跡することもでき、そのような全利用度が所定の閾値に近づけば、エクスペディタ20は、今後の要求を満たすため、アイドル状態のテストノード221~jの追加のノードを立ち上げることができる。また、サーバプールは、試験的に検証システム10を使用することを希望し得るユーザに対するサンドボックスサーバとして使用することもできる。上記では、新規のホストベースのウェブアプリケーションテストシステムおよび方法について説明してきた。この時点で、当業者は、本明細書で開示される発明概念から逸脱することなく、上記の実施形態を多様に使用したり、上記の実施形態から逸脱したりすることができる。