(57)【特許請求の範囲】
【請求項１】
ソフトウェア検証システムにおいて、
各々複数の仮想マシンをホストするよう構成される複数の物理的なマシンを有する市販の共用リソースサービスであるクラウドサービスと、
各々がプラットホームを起動する１つの仮想マシンである複数のテストノードと、
複数のクライアントの１つと検証システムとの間の検証セッションを管理するためのクライアントマネージャと、
サーバのクラウドサービスプールおよびサーバのローカルプールのそれぞれにおいて前記複数のテストノードによって使用するための複数の利用可能なプラットホームを認識するエクスペディタであって、前記複数のクライアントの１つが指定プラットホームを使用するために前記検証セッションを要求すると、前記エクスペディタは前記指定プラットホームを起動している前記複数のテストノードの利用可能な１つのネットワークアドレスを入手し、前記エクスペディタは前記要求を行うクライアントに前記ネットワークアドレスを送信し、次いで、前記要求を行うクライアントを前記要求されたプラットホームを起動している前記利用可能なテストノードに接続する、エクスペディタと、
を備え、
前記要求されたプラットホームが利用可能でない場合、前記サーバのローカルプール内に位置し前記要求されたプラットホームを有する新しい仮想マシンが始動され、前記要求を行うクライアントと接続されることを特徴とするソフトウェア検証システム。
【請求項２】
請求項１に記載のシステムにおいて、前記複数のテストノードの各々の状態を判断するため、および、テストノードデータベース内に各状態を格納するためにそのような状態をデータベースマネージャに提供するための状態モニタをさらに備え、前記データベースマネージャは前記複数のテストノードの各々の状態を前記エクスペディタに提供するよう動作可能であることを特徴とするシステム。
【請求項３】
請求項１に記載のシステムにおいて、利用可能なテストノードで動作するブラウザのフレームバッファ情報を収集するため、および、前記要求を行うクライアントと前記利用可能なテストノードとの間の接続を通じて前記情報を送信するために、ビデオインターフェースをさらに備えることを特徴とするシステム。
【請求項４】
請求項１に記載のシステムにおいて、複数の仮想マシンイメージを格納するためのイメージキャッシュをさらに備え、前記複数の仮想マシンイメージの各々は複数の指定プラットホームの１つのプラットホーム用に構成される既存の仮想マシン上で動作可能であることを特徴とするシステム。
【請求項５】
請求項４に記載のシステムにおいて、前記サーバのローカルプール内に位置する前記新しい仮想マシンは、前記要求されたプラットホームの前記格納された仮想マシンイメージを使用して始動されることを特徴とするシステム。
【請求項６】
ソフトウェアを検証するための方法において、
複数の物理的なマシンの各々を、クラウドサービスにおいて複数の仮想マシンをホストするよう構成するステップであって、前記クラウドサービスは市販の共用リソースサービスである、ステップと、
複数のテストノードの１つとして前記複数の仮想マシンの各々の仮想マシン上でプラットホームを起動するステップと、
複数のクライアントの１つと前記複数のテストノードの１つとの間の検証セッションを管理するステップと、
サーバのクラウドサービスプールおよびサーバのローカルプールのそれぞれにおいて前記複数のテストノードによって使用するための複数の利用可能なプラットホームを認識するステップと、
前記複数のクライアントの１つが指定プラットホームを使用するためにソフトウェアの検証を要求すると、前記指定プラットホームを起動している前記複数のテストノードの利用可能な１つのノードのネットワークアドレスを入手するステップと、
前記要求を行うクライアントに前記ネットワークアドレスを送信し、次いで、前記要求を行うクライアントを、前記要求されたプラットホームを起動している前記利用可能なテストノードに接続するステップと、
を含み、
前記指定プラットホームが利用可能でない場合、前記サーバのローカルプール内に位置し、前記要求されたプラットホームを有する新しい仮想マシンが始動され、前記新しい仮想マシンが前記要求を行うクライアントと接続されることを特徴とするソフトウェアを検証するための方法。
【請求項７】
請求項６に記載の方法において、前記複数のテストノードの各々の状態を判断するステップと、テストノードデータベース内に各状態を格納するためにそのような状態をデータベースマネージャに提供するステップとをさらに備え、前記データベースマネージャは前記複数のテストノードの各々の状態を提供するよう動作可能であることを特徴とする方法。
【請求項８】
請求項６に記載の方法において、前記利用可能なテストノードで動作するブラウザのフレームバッファ情報を収集するステップと、前記要求を行うクライアントと前記利用可能なテストノードとの間の接続を通じて前記情報を送信するステップとをさらに含むことを特徴とする方法。
【請求項９】
請求項６に記載の方法において、複数の仮想マシンイメージをイメージキャッシュ内に格納するステップをさらに備え、前記複数の仮想マシンイメージの各々は複数の指定プラットホームの１つのプラットホーム用に構成される既存の仮想マシン上で動作可能であることを特徴とする方法。
【請求項１０】
請求項９に記載の方法において、前記サーバのローカルプール内に位置する前記新しい仮想マシンは、前記要求されたプラットホームの前記格納されたイメージを使用して始動されることを特徴とする方法。
【請求項１１】
ネットワーク接続クライアントから、複数のネットワーク接続テストノードの少なくとも１つのノード上でのウェブアプリケーションの操作性の検証を可能にするためのソフトウェア検証システムにおいて、前記テストノードの各々は所定のプラットホーム構成を有し、
前記クライアントとのセッションを管理し、所望のプラットホーム構成の仕様を前記クライアントから受信するよう動作可能なクライアントマネージャと、
前記テストノードの各々および前記テストノードの各々の前記プラットホーム構成の現時点における利用可能性を認識し、前記所定のプラットホーム構成が前記所望のプラットホーム構成に見合う前記テストノードの特定された１つのノードのネットワーク位置を前記クライアントマネージャに通知するよう動作可能であるエクスペディタとを備え、前記クライアントマネージャは、前記通知に応じて、前記テストノードの前記特定された１つのノードに前記クライアントを接続するよう動作可能であり、それと同時に、前記クライアントは、ウェブ位置のＵＲＬを前記テストノードの前記特定された１つのノードに送信するよう動作可能であり、ウェブ位置のＵＲＬでは、前記クライアントが前記テストノードの特定された１つのノードのブラウザに命令して命令セットに従って前記ウェブ位置にナビゲートできるように前記ウェブアプリケーションが動作可能であり、データは、前記クライアントへの送信のため前記命令セットの実行時に収集されることを特徴とする検証システム。
【請求項１２】
請求項１１に記載の検証システムにおいて、前記テストノードの何れも前記所望のプラットホーム構成に見合う前記プラットホーム構成を有しない場合、前記エクスペディタは、前記所望のプラットホーム構成を有する前記テストノードの新しい１つのノードを立ち上げるよう動作することを特徴とする検証システム。
【請求項１３】
請求項１２に記載の検証システムにおいて、前記テストノードの前記各々はクラウドサーバシステムにおける仮想プラットホームであり、前記テストノードの前記新しい１つのノードは前記クラウドサーバシステムにおける仮想プラットホームであることを特徴とする検証システム。
【請求項１４】
請求項１２に記載の検証システムにおいて、前記テストノードの前記各々はクラウドサーバシステムにおける仮想プラットホームであり、前記テストノードの前記新しい１つのノードは前記検証システムとローカル接続されるプールサーバシステムにおける仮想プラットホームであることを特徴とする検証システム。
【請求項１５】
請求項１４に記載の検証システムにおいて、前記エクスペディタは、前記命令セットの完了時に前記クライアントマネージャが前記クライアントを前記テストノードのさらなる新しい１つのノードに接続するよう動作するように、前記プールサーバシステムにおける前記テストノードの前記新しい１つのノードの前記プラットホーム構成と実質的に同様のプラットホーム構成を有する前記テストノードの前記さらなる新しい１つのノードを前記クラウドサーバシステムにおいて立ち上げるようさらに動作することを特徴とする検証システム。
【請求項１６】
請求項１１に記載の検証システムにおいて、前記テストノードの前記１つのノードは、前記クライアントマネージャに接続される別個のプラットホームネットワークであることを特徴とする検証システム。
【請求項１７】
請求項１１に記載の検証システムにおいて、前記別個のプラットホームである前記テストノードの１つのノードは、前記命令セットに従って人間の介入および管理を受けることを特徴とする検証システム。
【請求項１８】
請求項１１に記載の検証システムにおいて、前記収集されたデータは、前記ブラウザのスクリーンショットの選択された１つのスクリーンショット、および、前記テストノードの前記１つのノードの前記ブラウザのビデオであることを特徴とする検証システム。
【請求項１９】
請求項１１に記載の検証システムにおいて、 前記テストノードの各々の現在の状態を入手するよう動作可能な状態モニタと、
前記テストノードの各々の前記現在の状態を格納したデータベースと、
前記状態モニタ、前記データベースおよび前記エクスペディタの各々と通信し、前記データベースに前記状態モニタによって入手される前記現在の状態を格納し、エクスペディタからの問い合わせ（ｉｎｑｕｉｒｙ）時に前記現在の状態を前記エクスペディタに通知するよう動作可能なデータベースマネージャと、
をさらに備えることを特徴とする検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれる、２０１０年１月８日に出願された米国仮特許出願第６１／２９３，６０６号明細書「Ｒｅａｌ  Ｔｉｍｅ  Ｖｅｒｉｆｉｃａｔｉｏｎ  ｏｆ  Ｗｅｂ  Ａｐｐｌｉｃａｔｉｏｎ  ｉｎ  Ｖｉｒｔｕａｌ  Ｓｐａｃｅ」の優先権の利益を主張する。
【０００２】
本発明は、概して、クラウドサービスにおける仮想マシンの同時利用可能性に関し、より具体的には、所定のプラットホームを備えた仮想マシンがネットワーク接続クライアントに利用可能となる時間を最小限に抑えるための新規の装置および方法に関する。
【背景技術】
【０００３】
ウェブアプリケーションは、一般に、インターネットなどのネットワーク上で起動しているクライアント常駐ウェブブラウザを介してアクセスされるサーバにホストされたソフトウェアアプリケーションを指す。また、ウェブアプリケーションは、ＨＴＭＬ、ＪａｖａＳｃｒｉｐｔ、Ｊａｖａなどのブラウザが支持する言語で符号化され、アプリケーションを実行可能にするクライアントウェブブラウザに依存する、かかるサーバソフトウェアアプリケーションも指す。したがって、ウェブアプリケーションは、ウェブページ、ウェブサイト、遠隔操作によって実行可能なアプリケーションおよびアプリケーションモジュール、スクリプト、オブジェクト、アプレット、インターフェースおよび同様のものの何れか、ならびに、サーバとネットワーク通信を行っているクライアント側のブラウザインターフェースを通じてサーバ上で遠隔操作によって実行することができ、そのような実行の結果がクライアントに返送されブラウザインターフェースで表示される、他のありとあらゆる命令セットまたは手順を例示的に含み得る。
【０００４】
従来は市販の共用リソースサービスであったクラウドサービスでは、単一の物理的なマシンは、複数の仮想マシンをホストするよう構成される。通常、クラウドサービスのプロバイダは複数の物理的なマシンを有し、その各々が複数の仮想マシンのそれぞれの仮想マシンをホストする。
【０００５】
仮想マシンの何れか１つは、一般に、クラウドサービスにアクセスする必要がある認証情報の提示および認証と同時に、一般に、ネットワーク接続クライアントが利用できるようになり得、その結果、ネットワーククライアントと利用可能な仮想マシンとの間の接続を確立することができる。一旦接続が確立されれば、ネットワーク接続クライアントは、接続された仮想マシン上の１つまたは複数のプログラムの立ち上げ、起動または実行を行うことができ、仮想マシンでは、そのようなプログラムがローカルで実行されているかのように、実質的にすべてのＩ／Ｏオペレーションはネットワーク接続クライアントの管理下で起こる。
【０００６】
さらに、クライアントは、クラウドサービスにおいて任意のアプリケーションを立ち上げて起動する前に、そのようなアプリケーションの特定のリリースバージョンとそのようなアプリケーションが起動されるオペレーティングシステムの特定のリリースバージョンの何れかまたは両方を指定することができる。統合すると、アプリケーションとオペレーティングシステムバージョンは、本明細書ではプラットホームと呼ばれる。ネットワーク接続クライアントが特定のプラットホームに対する要求を行うと、クラウドサービスは、そのようなプラットホームが現在存在するかどうか、そうでなければ、アイドル状態であるかどうか、したがって、そのようなクライアントとの接続に利用可能か判断する。
【０００７】
要求されたプラットホームが利用可能であれば、クラウドサービスは、要求に対応し、要求されたプラットホームを有する仮想マシンにクライアントを接続する。しかし、そのような要求されたプラットホームを有するアイドル状態の仮想マシンが利用可能でない場合は、クラウドサービスは、起動コマンドを発行してそのようなプラットホームを備えた新しい仮想マシンを始動する。
【０００８】
通常、クラウドサービスは、そのようなプラットホームのイメージが既に存在すれば、そこからそのようなプラットホームのイメージをコピーできる仮想マシンのイメージのイメージキャッシュを有し得る。指定プラットホームに対してイメージが存在する場合は、従来公知の通り、イメージは物理的なマシンにコピーされ、そのようなイメージから新しい仮想マシンが始動される。一旦イメージがコピーされ、仮想マシンが使用できるようになれば、物理的なマシンは、その旨をクラウドサービスに送信する。次いで今度は、クラウドサービスが、仮想マシンの利用可能性についてネットワーククライアントに通知することができ、それにより、ネットワーククライアントによるそのような仮想マシンへの接続が可能になる。
【０００９】
しかし、クラウドサービスが起動コマンドを発行する時間から新しい仮想マシンを起動してクライアントとの接続に利用できる時間まで、著しい時間遅延が存在する。この特有の時間遅延により、クライアントがリアルタイムで仮想マシン上の所望のアプリケーションを実行する能力は不利に制限される。
【００１０】
その上、所望のプラットホームのイメージがイメージキャッシュ内に存在しない場合は、クラウドサービスは新しい仮想マシンを始動しなければならず、一旦始動すれば、そのようなプラットホーム用に構成しなければならない。当業者は、特定のプラットホームに対する要求がなされてから、仮想マシンが始動され、指定プラットホームを有するよう構成され、最終的にネットワーククライアントが利用できるようになるまでの時間間隔が受け入れ難いほど過当なものであることを認識されたい。
【００１１】
イメージキャッシュからコピーされたイメージから所望のプラットホームを備えた仮想マシンを始動することができる場合でさえ、特有の時間遅延はそれにもかかわらず、リアルタイムでクラウドサービスが提供する複数のプラットホームにアクセスする必要があるユーザにとって不利である。例えば、そのようなユーザは、ウェブアプリケーション開発者のアプリケーションへのアクセスに使用されるさまざまなクライアントの各種の型およびモデルの何れか１つに存在し得る潜在的プラットホームの何れか１つのプラットホーム上で、ウェブアプリケーション開発者のアプリケーションが適正に実行することを検証する必要があるウェブアプリケーション開発者を含み得る。
【００１２】
上記で参照された関連出願には、そのような開発者のためのウェブアプリケーション検証システムが開示されている。開示される検証システムは、指定プラットホームのテストノード上のウェブアプリケーションの互換性をリアルタイムで検証するのに有用である。例示的には、ウェブアプリケーションは、一般にインターネットユーザがアクセス可能なサーバ上でホストされるものであり、ユーザの各々は、上記で論じられた通り、さまざまなネットワーククライアントの何れか１つを有する。テストを実行するため、ウェブ開発者は、検証システムコマンドテストノードを１つずつ順番に調べ（ノードの各々は、クラウドサービスにおけるそれぞれの指定プラットホームの仮想マシンであり得る）、ホストされたウェブアプリケーションにアクセスしてその場でさまざまなテストオペレーションを実行する。テストオペレーションの結果は、各テストノードで記録し、検証システム全体を通してウェブ開発者が利用できるようにすることができる。
【００１３】
より具体的には、開示される検証システムは、テストノードに加えて、クライアントマネージャおよびエクスペディタ（ｅｘｐｅｄｉｔｅｒ）を含む。クライアントマネージャは、検証システムと検証システムに接続されたネットワーククライアントとの間のセッションを管理するよう動作する。エクスペディタは、クラウドサービスにおいて利用可能なすべてのテストノードおよびそのそれぞれのプラットホームを認識する。
【００１４】
セッション中は、開発者クライアント側の開発者は、実行されるべきそれぞれの互換性テストに対して、開発者が選択したテストコマンドを実行するための所望のプラットホームを指定する。指定プラットホームを有するテストノードが現時点において利用可能である場合は、エクスペディタは、そのようなテストノードの位置（通常、ＵＲＬで指定）をクライアントマネージャに伝えることによって、そのような利用可能性についてクライアントマネージャに通知し、その結果、クライアントマネージャはそのテストノードに接続することができる。
【００１５】
要求がなされた時点で指定プラットホーム用のテストノードが利用可能でない場合は、エクスペディタは、そのようなプラットホームを有する新しいテストノードを立ち上げるよう努める。しかし、上記のクラウドサービスでは、そのようなサーバを立ち上げてクライアントが利用できるようになるまでの待ち時間に過度の遅延（通常、およそ数十分）をもたらし得る。
【００１６】
そのような遅延を緩和するため、関連出願はその中で、検証システムが、静的マシンと仮想マシンの何れかまたは両方として構成されるローカルテストノードであり得るローカルサーバプールをさらに含み得ることを開示している。エクスペディタが、クラウドサービスにおいて要求されたプラットホームの１つまたは複数のテストノードを位置付けることができない場合は、エクスペディタは、ローカルサーバプールに目を向け、クライアントが利用可能な、要求されたプラットホームと一致するそのテストノードの１つを作成する。
【００１７】
現時点においてローカルプールが必要なプラットホームのテストノードを含まない場合は、エクスペディタは、上記で論じられた通り、そのようなプラットホームを備えた新しいテストノードをローカルプール内で立ち上げ、次いで、セッションクライアントが利用できるようにするよう動作する。ローカルサーバプール内のテストノードはたった数秒で立ち上げることができるため、セッションクライアントが利用できるようになるまでの待ち時間は、それに応じて最小であり、それにより、リアルタイムでテストを進行することができる。
【００１８】
また、ローカルプール内のテストノードが利用可能になると、エクスペディタは、現時点で使用中のローカルプールテストノードのプラットホームと一致する追加のテストノードを提供するようクラウドサービスに要求する。クラウドサービスにおけるテストノードが利用可能になり次第、エクスペディタは、関連出願で開示されている通り、同一のプラットホーム構成のクラウドサービステストノードをすべてのさらなるテストの対象とする。それに応じて、関連出願で開示されている通り、ローカルプールは短期間の「バースト」サーバとして機能を果たし、プール内で起動している仮想マシンはアイドル状態として最適に維持される。
【発明の概要】
【００１９】
本発明によれば、ローカルプールは、仮想マシンスナップショットのキャッシュを含む。これらのスナップショットの各々は、既存の仮想マシン上で立ち上げることができ、それにより、そのようなプラットホームを備えた新しい仮想マシンを立ち上げる必要性を除去するプラットホームである。スナップショットキャッシュは、リアルタイムでネットワーク接続クライアントにプラットホームを提供する際の遅延をさらに有利に緩和する。
【００２０】
ネットワーククライアントが現時点で利用できないプラットホームを要求すると、エクスペディタは、ローカルキャッシュからローカルプール上で起動している仮想マシンへイメージをコピーするというコマンドを発行する。同時に、それとともに、クラウドサービスは、所望のプラットホームを用いて仮想マシンを始動することができるイメージを用意するという命令も受ける。
【００２１】
本発明のさらなる実施形態では、スナップショットイメージは、ローカルプールのＲＡＭ内に直接コピーすることができる。それに応じて、仮想マシンは、スナップショットイメージから直接始動することができ、それにより、仮想マシンの始動パラメータを有利に回避することができる。
【００２２】
その上、プールサーバは、クラウドサービスと協調してプラットホームソースとして有利に使用することもでき、先に開示された通り、バーストオペレーションのみに制限されることはない。例えば、クラウドサービスにおけるプラットホームへのアクセスは、ローカルプールに加えて、クラウドサービスプラットホームへのアクセスが検証システムによって事前に認証および資格認定されたこれらの開発者クライアントに制限され得る。そのような場合、適正に認証および資格認定されたユーザによるアクセスは、必要に応じてローカルプールとクラウドサービスの何れかまたは両方におけるプラットホームへのアクセスであり得る。その上、エクスペディタは、現時点においてローカルプール内のプラットホームにアクセスしているそのような認証および資格認定されたユーザに対して、クラウドサービスにおいてプラットホームをさらに展開することができ、後に、そのようなユーザを新しく展開されたプラットホームに移動して、ローカルプール内の仮想マシンを利用できるようにする。他のすべてのユーザは、ローカルプールのみに制限されることになる。
【００２３】
本発明のさらに別の実施形態では、ウェブアプリケーションがテストノードで検証されているユーザセッションの実行中は、プラットホームでテストを実行する際にスクリーンディスプレイのリアルタイムビデオを記録することができる。ビデオは、テストノードで起動しているブラウザウィンドウのフレームバッファを記録し、その記録は、開発者クライアントにストリーム配信される。この機能は、上記で参照された出願に記載されている通り、提供されているテストの静的なスクリーンショットのみに必要とされるであろう追加のセットアップを必要とすることなく、実行されているテストをリアルタイムで変更することを有利に可能にする。
【００２４】
本発明のさらに別の実施形態では、指定プラットホームを有するテストノード上でウェブアプリケーションの互換性をリアルタイムで検証するためのウェブアプリケーション検証システムは、クライアントマネージャおよびエクスペディタを含む。クライアントマネージャは、検証システムと接続されたセッションクライアントとの間のセッションを管理する。クライアント側のユーザは、セッションのためのテストノードのプラットホームを指定する。エクスペディタは、すべての利用可能なテストノードおよびそのそれぞれのプラットホームを認識し、そのような指定プラットホームが利用可能であれば、エクスペディタは、そのようなテストノードの利用可能性についてクライアントマネージャに通知し、クライアントマネージャがテストノードに接続できるようにテストノードの位置をクライアントマネージャにさらに伝える。そうでない場合は、エクスペディタは、指定プラットホームを有する新しいテストノードを立ち上げる。
【００２５】
一旦テストノードが取得され接続されると、セッションクライアント側のユーザは、テストノードのブラウザがナビゲートする、テストされるべきウェブアプリケーションのＵＲＬを伝える。次いで、ユーザは、ウェブアプリケーション上のテストノードのブラウザによって行われる操作に対する一連のコマンドを入力することができる。各コマンドを与え、テストノードのブラウザに応答を返送すると、テストノード上で行われたブラウザプロセスに関するデータはデータファイルに収集される。また、テストノードでのブラウザウィンドウのスクリーンショットおよびビデオは、収集されたデータと同期化され得る。セッションの終了時には、捕捉されたスクリーンショットおよびデータはユーザに返送される。
【００２６】
本発明のさらに別の態様では、テストノードの各々はクラウドベースサービスにおける仮想サーバである。テストシステムは、静的サーバとして構成された複数のローカルテストノードをさらに含み得る。エクスペディタが要求されるプラットホームの１つまたは複数の仮想サーバテストノードを位置付けることができない場合は、エクスペディタは、要求されるプラットホームと一致するＵＲＬを静的サーバテストノードの１つに送信する。本発明のさらなる実施形態では、エクスペディタは、現時点で使用中の静的サーバのプラットホームと一致する追加のテストを提供するよう、仮想サーバテストノードサービスにさらに要求する。そのような仮想サーバテストノードが利用可能になり次第、エクスペディタは、同一のプラットホーム構成の仮想サーバテストノードをすべてのさらなるテストの対象とする。
【００２７】
本発明のこれらのおよび他の目的、利点および特徴は、以下の発明を実施するための形態の研究を添付の図面と併せて読み進めるに従い、当業者には容易に明らかとなろう。
【図面の簡単な説明】
【００２８】
【図１】図１は、本発明の原理に従って構築されたソフトウェア検証システムの概略ブロック図である。
【図２】図２は、本発明の原理に従って構築されたソフトウェア検証システムを有するクラウドコンピューティング環境の概略ブロック図である。
【図３】図３は、図２のソフトウェア検証システムの詳細なブロック図である。
【発明を実施するための形態】
【００２９】
ここで図１を参照すると、ウェブアプリケーション検証システム１０が示され、このシステムは説明の通り構築され得る。開発者クライアント１２は、クラウドサービス１６側のプラットホームとして提供されるリモートテストノード１６ｉ、または、ローカルの仮想マシンプール１４側のプラットホームとして提供されるローカルテストノード１４ｊでウェブアプリケーションをテストするためのネットワーク上で検証システム１０に接続することができる。
【００３０】
また、参照された出願でも開示されている通り、検証システム１０は、クライアントマネージャ３０およびエクスペディタ２０を含む。クライアントマネージャ３０は、開発者クライアント１２と検証システム１０との間のセッションを管理する。エクスペディタ２０は、クラウドサービスプール１４およびローカルプール１４の各々においてテストノードに対して利用可能な利用可能なプラットホームの各々を認識する。開発者クライアント１２が新しいセッションを要求すると、クライアントマネージャは、エクスペディタから所望のプラットホームの利用可能なテストノードのＵＲＬを入手し、そのようなＵＲＬを開発者クライアントに送信し、次いで今度は、そのようなＵＲＬを有するテストノードに接続して検証セッションを行うことができる。例えば、ＵＲＬがローカルプール１４側で提供されるテストノード１４ｉに対するものであれば、その間に接続が施される。
【００３１】
さらに、テストセッション中、ブラウザウィンドウのリアルタイムビデオを入手することができる。この点で、ビデオインターフェース４２は、テストノード１４ｉで起動しているブラウザのフレームバッファ情報を収集し、確立された接続を通じて開発者クライアント１２にそのような情報を送信することができる。次いで、フレームバッファ情報を使用して、開発者クライアント１２側でテストノード１４ｉのブラウザスクリーンを再生することができる。
【００３２】
検証システムは、イメージキャッシュ２４をさらに含み得、イメージキャッシュには、さまざまなプラットホームに対する複数の仮想マシンイメージまたはスナップショット２４１、２４２、．．．、２４ｎが格納される。クラウドプール１６ローカルプール１４で現時点において起動されていないプラットホームに対して要求がなされると、エクスペディタは、そのようなプラットホームと一致するイメージ２４１、２４２、．．．、２４ｎの１つをローカルプール１６内で利用可能な仮想マシンにコピーする。好ましくは、イメージ２４１、２４２、．．．、２４ｎの選択された１つのイメージは、ローカルプール１４のＲＡＭ２６内に直接コピーされる。イメージキャッシュ２４には、特定のプラットホーム用に構成された、入手された仮想マシンのスナップショットが格納し得る。ＲＡＭにイメージをコピーすることにより、仮想マシンの始動パラメータを構成する必要性が除去される。
【００３３】
クライアントマネージャ３０の管理下のクライアントセッションが認証および資格認定されると、エクスペディタは、クラウドプール１６またはローカルプール１４の任意の仮想マシンを、テストノードとして開発者クライアント１２が利用できるようにすることができる。それに応じて、エクスペディタは、検証システム１０のための利用可能なリソースのバランスを保って管理することができる。
【００３４】
ここで図２を参照すると、上記で定義されているウェブアプリケーションの開発および検証中に有用なウェブアプリケーション検証システム１０が示される。一般に、クライアント１２側のユーザは、サーバ１６上に存在するウェブアプリケーションが、そのユーザインターフェースを介してウェブアプリケーションを起動することを目的としてサーバ１６への接続に使用され得るデバイス１８のプラットホーム構成と互換性を有するか検証することを希望する。デバイス１８は、任意のタイプのパーソナルコンピュータ、または、ウェブブラウザがユーザインターフェースを提供する他のタイプのウェブ接続デバイスであり得る。クライアント１２側のユーザは、通常、ウェブアプリケーションに何らかの関心を有し、例えば、ウェブアプリケーションの一部もしくはすべての開発者であること、または、そうでない場合、そのような互換性検証を実行するためにそのようなウェブアプリケーションの所有者もしくは開発者によって雇用もしくは認証されていることなどが挙げられる。
【００３５】
以下にさらに詳細に説明されるように、クライアント１２側のユーザは、ウェブアプリケーション検証システム１０に接続し、クライアント１２上で起動しているクライアントブラウザのユーザインターフェースを通じて、サーバ１６側のウェブアプリケーションの互換性に対して検証が行われる特定のプラットホーム構成についてアプリケーション検証システム１０に通知する。次いで、アプリケーション検証システム１０は、特定のプラットホーム構成を有するテストノード２２を位置付けてテストノード２２上のテストブラウザを立ち上げるよう動作する。
【００３６】
クライアント１２はアプリケーション検証システム１０に接続されるが、クライアントブラウザのインターフェースを通じたクライアント１２側のユーザは、テストノード２２上のテストブラウザにサーバ１６上のウェブアプリケーションの位置へナビゲートするよう、アプリケーション検証システム１０に命令する。一旦テストノード２２とサーバ１６との間で接続が確立されれば、クライアント１２側のユーザは、次いで、クライアントブラウザを通じて、テストノード２２側のテストブラウザにウェブアプリケーション上で１つまたは複数のコマンドを入力するよう、アプリケーション検証システム１０にさらに命令し、ウェブアプリケーションでは、入力されたそれぞれのコマンドに対して、ウェブアプリケーションによるそのようなコマンドの実行結果は、テストノード２２に、次いで、システム１０に返送される。次いで、クライアント１２側のユーザは、クライアント１２側のクライアントブラウザのインターフェースにおいてそのような結果を閲覧することができる。
【００３７】
アプリケーション検証システム１０は、好ましくは、クライアント１２、サーバ１６およびテストノード２２がインターネットなどのネットワーク２６上でアプリケーション検証システム１０と通信を行うクラウドコンピューティング環境で動作することが企図される。そのような環境では、アプリケーション検証システム１０は、ホストされたウェブサイトであり得る。
【００３８】
アプリケーション検証システム１０は、複数のクライアント１２１〜ｉ側のユーザからアクセス可能であることも企図される。その上、アプリケーション検証システム１０は、利用可能な複数のテストノード２２１〜ｊを有することで複数のユーザに対応し、その各々は、それぞれのサーバ１６１〜ｎおよび複数のプラットホーム構成上で１つまたは複数のウェブアプリケーションを検証する。
【００３９】
テストノード２２１〜ｊは、静的サーバまたは仮想サーバの何れかであり得、アプリケーション検証システム１０がホストされる同じサーバと一緒に配置された状態で存在するか、または、そこからサーバをサービスとして得ることができる任意のサーバファームに存在し得る。その上、テストノード２２１〜ｊの何れか１つは、人間の介入および管理を受けるネットワーク接続デバイス、例えば、タブレット、スマートフォンまたはコンピュータなどの別個のプラットホームでもあり得る。テストノード２２１〜ｊの各々は、その上で起動しているテストブラウザのそれぞれの１つを有する。
【００４０】
好ましくは、テストノード２２１〜ｊは、弾力的なクラウドサービス、例えば、Ａｍａｚｏｎ  ＥＣ２サービスからの要求に応じて利用可能な仮想サーバである。以下でさらに説明されるように、弾力的なクラウドサービスにより、テストノード２２１〜ｊは、オペレーティングシステムおよびウェブブラウザの任意の組合せから決定される指定プラットホーム構成、ならびに、ブラウザインターフェースを通じてウェブアプリケーションを起動することができる複数のインターネット接続デバイス１８１〜ｋの何れかにおいて見出され得るそのそれぞれのバージョンを有するよう容易に構成できるようになる。
【００４１】
図３を参照すると、アプリケーション検証システム１０は、入口ハブ２８、クライアントマネージャ３０およびエクスペディタ２０を含む。クライアント１２１〜ｉ（図２）の何れか１つであり得るクライアント１２ｘ側のユーザは、従来の方法でそのそれぞれのクライアントブラウザのユーザインターフェースを通じてアプリケーション検証システム１０に接続する。そのようなインターフェースを通じて、ユーザは、入口ハブ２８にアクセスすることによって検証手順が着手されることを示すことができる。場合により、ユーザの資格情報の認証には、入口ハブ２８へのアクセスを認証することが要求され得る。
【００４２】
接続が確立されると、クライアントマネージャ３０は、接続しつつあるクライアント１２ｘとの通信に着手する。より具体的には、クライアントマネージャ３０は、クライアント１２ｘにＨＴＴＰヘッダを送信し、クライアント１２ｘとの検証セッションを開始する。次いで、セッションに着手したクライアント１２ｘ側のユーザは、そのようなユーザのクライアント１２ｘのクライアントブラウザのインターフェースを通じて、現行セッションの検証が起こるプラットホームをクライアントマネージャ３０に指定することができる。
【００４３】
クライアントマネージャは、これを通じてこのクライアント１２ｘに関連するアプリケーション検証システム１０との取引および同アプリケーション検証システム１０内での取引が登録され得るセッションクライアント１２ｘ用のセッションＩＤをさらに発行する。クライアントマネージャ３０は、各セッションＩＤ、および、接続され得るすべてのそのようなクライアント１２１〜ｉ（図２）に対する各セッションに使用されるプラットホームの記録を維持する。本発明の一実施形態では、クライアントデータベース３４を使用してそのような記録を維持することができる。
【００４４】
エクスペディタ２０は、クライアントデータベース３４に例示的に繰返しクエリを行うことによって、クライアントマネージャ３０によって着手された任意の新しいセッションのインスタンスをモニタするよう動作する。エクスペディタ３２が新しいセッションを認識すると、エクスペディタ３２は、セッションに対して指定されたプラットホームと同じプラットホーム構成を有するすべてのテストノード２２１〜ｊ（図２）からテストノード２２ｙを位置付けるよう試みる。必要なテストノード２２ｙが位置付けられれば、エクスペディタ３２は、そのそれぞれのテストブラウザを立ち上げるよう、そのようなテストノード２２ｙに命令する。次いで、エクスペディタ３２は、セッションに対するプラットホーム構成の利用可能性についてクライアントマネージャ３０に通知し、利用可能なテストノード２２ｙの位置をクライアントマネージャ３０に伝える。
【００４５】
利用可能なテストノード２２ｙの位置を知ることにより、クライアントマネージャ３０は、次いで、利用可能なテストノード２２ｙに接続し、テストノード２２ｙのそのような利用可能性についてセッションクライアント１２ｘにさらに知らせる。クライアントマネージャ３０が仲介体として動作することで、セッションクライアント１２ｘ側のユーザは、クライアントブラウザのインターフェースを通じて、テストノード２２ｙ側のテストブラウザによってコマンドが実行されその応答が記録されるように、利用可能なテストノードに送信された一連のコマンド（例示的には、Ｓｅｌｅｎｉｕｍ  ＡＰＩコールであり得る）をその場で入力することができる。通常、初期のコマンドは、サーバ１６ｚ側に存在するテスト中のウェブアプリケーションの位置（例示的には、ＵＲＬで与えられる）までナビゲートするという、テストノード２２ｙ側のテストブラウザに対する命令であろう。
【００４６】
コマンドの終了または停止は、テストブラウザによってテスト中のウェブアプリケーションの検証セッションが終了することを意味する。そのような終了時には、検証セッションの結果は、セッションクライアント１２ｘによる見直しまたはセッションクライアント１２ｘへのアップロードのため、クライアントマネージャ３０に送信される。検証セッションの結果は、それぞれのコマンドおよび関連する応答に対してテストノード２２ｙ上で実行するテストブラウザのプロセスに関連するデータを含み得る。また、結果は、コマンドが与えられて応答がなされた際にテストブラウザ２２ｙのユーザインターフェースを記録するために仮想ネットワークコンピュータを通じて例示的に入手できるテストブラウザ２２ｙセッションのビデオも含み得る。その上、本発明によれば、テストブラウザ２２ｙセッションのスクリーンショットのそのようなビデオは、テストブラウザのプロセスに関連するデータと同期化される。
【００４７】
また、上記のアプリケーション検証システム１０は、サーバ１６１−ｎの１つが公的にアクセス可能なサイトの代わりに安全なファイアウォールの後方に存在すれば、サーバ１６１−ｎの何れか１つに存在し得るウェブアプリケーションの何れか１つをテストすることもできる。そのような場合、アプリケーション検証システム１０は、ＶＰＮトンネルを作成して安全なファイアウォールの後方のサーバへのマッピングを作成するよう要求することができる。ＶＰＮトンネルの変更は、上記の通り、クライアントマネージャが仲介体として動作することを可能にするためにのみ行えばよい。
【００４８】
本発明によれば、エクスペディタ３２は、新しく着手されたセッションに対して指定されたプラットホームが現時点で利用可能でなければ、上記の通り、新しく着手されたセッションに対するテストノード２２１〜ｊの何れか１つの利用可能性を判断するのみでなく、必要に応じてテストノード２２１〜ｊの新しいノードを立ち上げるようさらに動作し得る。それに応じて、エクスペディタ２０は、すべての利用可能なテストノード２２１〜ｊの現状を認識するよう任務が課される。状態とは、テストノード２２１〜ｊの何れか１つがアイドル状態であるかどうか、したがって、現時点で新しいセッションに利用可能か、または、現行のセッションで手一杯かを指す。各々の現状にかかわらずそのようなすべてのテストノード２２１〜ｊの総数は、絶対数でも所定の数でもなく、弾力的なクラウドコンピューティング環境におけるプラットホームに対する要求に応じて公知の通り変動することを認識されたい。
【００４９】
テストノード２２１〜ｊの各々の状態の現記録を維持するため、ソフトウェアテストシステムは、状態モニタ３６、テストノードデータベースマネージャ３８およびテストノードデータベース４０をさらに含み得る。テストノード２２１〜ｊの各々の状態が公知となるかまたは変更されると、状態モニタ３６は、テストノードデータベースマネージャ３８にそのような状態を提供するよう動作し、テストノードデータベースマネージャ３８は、テストノード２２１〜ｊの特定された１つのノードと関連してテストノードデータベース４０にそのような状態を格納する。それに応じて、テストノードデータベースマネージャ３８のクエリを実施することによって、エクスペディタ２０は、テストノード２２１〜ｊの各々の状態を常に認識する。
【００５０】
状態モニタ３６は、弾力的なクラウドコンピューティング環境におけるサービスとしてプラットホームに対して開発されてきた公知の実施技法を使用して、そのようなテストノード２２１〜ｊがいつオンライン状態であるか、いつアイドル状態であるかまたはいつ手一杯であるかを知るために、テストノード２２１〜ｊが存在する弾力的なクラウドをモニタする。ｊａｖａ  ｓｃｒｉｐｔ  ｏｂｊｅｃｔ  ｎｏｔａｔｉｏｎプロトコルは、例示的な実装形態において使用することができる。
【００５１】
上記の通り、エクスペディタ２０は、必要に応じてテストノード２２１〜ｊの新しいノードを立ち上げるよう動作する。テストノード２２１〜ｊの新しい１つのノードが必要とされるセッションは、テストノード２２１〜ｊの新しい１つのノードがオンライン状態となりそのようなセッションで利用できるようになるのを待つ間、クライアントマネージャ３０によってキュー内に配置される。しかし、弾力的なクラウドでは、クライアント１２１〜ｉの１つの任意のユーザを待つことは、検証プロセスがリアルタイムで起こることを期待するユーザに、受け入れ難いほど長い時間遅延をもたらす恐れがある。例えば、弾力的なクラウドでは、テストノード２２１〜ｊの新しい１つのノードがオンライン状態となり利用できるようになるまで、最大で１５分またはそれ以上要する場合がある。
【００５２】
そのような遅延を緩和するため、ソフトウェア検証システム１０は、事前に選択された数のサーバを含むローカルのスタンバイサーバプール１４をさらに含み得、そのサーバの各々は、テストノード２２１〜ｊの各々に対して上記で説明されたものと同様に、ソフトウェア検証システム１０とともに機能し、ソフトウェア検証システム１０と相互作用することができる。また、サーバプール１４のサーバの各々は、静的サーバまたは仮想サーバの何れかでもあり得る。エクスペディタ２０がテストノードデータベース４０内でセッションに要求されるプラットホームを有する利用可能なサーバを見出せない場合は、エクスペディタ２０は、必要なプラットホームを備えたプールサーバ１４ｚを立ち上げる。
【００５３】
サーバプール１４は、ソフトウェア検証システム１０、より具体的には、エクスペディタ２０の管理下にあるため、プールサーバ１４ｚをおよそ１０秒で立ち上げてオンラインで利用可能にすることができ、それにより、ユーザが経験する遅延を緩和し、実質的にほぼリアルタイムでのソフトウェア検証システム１０との相互作用が可能になる。その上、エクスペディタ２０は、サーバプール１４の利用度を追跡することもでき、そのような全利用度が所定の閾値に近づけば、エクスペディタ２０は、今後の要求を満たすため、アイドル状態のテストノード２２１〜ｊの追加のノードを立ち上げることができる。また、サーバプールは、試験的に検証システム１０を使用することを希望し得るユーザに対する「サンドボックス」サーバとして使用することもできる。
【００５４】
上記では、新規のホストベースのウェブアプリケーションテストシステムおよび方法について説明してきた。この時点で、当業者は、本明細書で開示される発明概念から逸脱することなく、上記の実施形態を多様に使用したり、上記の実施形態から逸脱したりすることができる。
【図１】
0005646650.tif 000002
【図２】
0005646650.tif 000003
【図３】
0005646650.tif 000004