(57)【特許請求の範囲】
【請求項１】
そこに記憶されるコンピュータ実行可能な命令を有するコンピュータ読み出し可能な記憶媒体であって、前記命令は、コンピュータによって実行されたときに、前記コンピュータに、
１つ以上のホストコンピュータに接続されている複数のスマートフォンを含むサービスプロバイダネットワークで、スマートフォンのためのプログラムの動作を試験する要求を、前記サービスプロバイダネットワークの外部の開発者コンピュータから受け取らせることであって、前記要求は、前記プログラムを前記複数のスマートフォン上で実行している間に、１つ以上の前記プログラムまたは前記プログラムの参照及び前記プログラムに対して行われる１つ以上の試験を説明する１つ以上のテストケースを含む、受け取らせることと、
前記複数のスマートフォンのうちの１つ以上のスマートフォンは、前記プログラムを試験するために使用できると前記サービスプロバイダネットワーク内の１つ以上のコンピューティングデバイスを用いて判定させることであって、
前記１つ以上のスマートフォンは前記プログラムを試験するために使用できないと前記１つ以上のホストコンピュータのうち少なくとも１つのホストコンピュータを用いて前記コンピュータが判定した場合は、前記１つ以上のスマートフォンが利用可能になるまで前記要求によって要求される試験の全て、または前記１つ以上のスマートフォンが利用できなくなることが予定される、前記要求によって要求される前記試験のみを待ち行列に入れさせることと、
前記１つ以上のスマートフォンに接続される前記１つ以上のホストコンピュータに前記要求及び前記プログラムを提供させることと、
前記１つ以上のホストコンピュータと前記１つ以上のスマートフォンとの間での接続を介して、前記プログラムを前記１つ以上のスマートフォン上でインストールさせることと、
前記スマートフォン上で実行している間に、前記１つ以上の試験を前記プログラムに対して行わせることと、
前記１つ以上の試験を監視させることと、
前記要求に応じて、前記１つ以上の試験の結果を前記開発者コンピュータに提供させることと、
を行わせる、コンピュータ読み出し可能な記憶媒体。
【請求項２】
前記プログラムの動作を試験する前記要求は、プログラム開発環境によって生成される、請求項１に記載のコンピュータ読み出し可能な記憶媒体。
【請求項３】
前記プログラムの動作を試験する前記要求は、前記サービスプロバイダネットワークによって提供されるページを通して生成される、請求項１に記載のコンピュータ読み出し可能な記憶媒体。
【請求項４】
前記プログラムの動作を試験する前記要求は、電子メールメッセージによって生成される、請求項１に記載のコンピュータ読み出し可能な記憶媒体。
【請求項５】
前記プログラムの前記動作が試験される前記スマートフォンは、前記プログラムに基づいて選択される、請求項１に記載のコンピュータ読み出し可能な記憶媒体。
【請求項６】
そこに記憶されるさらなるコンピュータ実行可能な命令を有し、前記命令は、前記コンピュータによって実行されたときに、前記コンピュータに、
前記１つ以上の試験が前記プログラムに対して行われている間に、前記スマートフォンの少なくとも１つによって出力される１つ以上の画面表示を取り込ませ、前記試験結果は、前記１つ以上の取り込んだ画面表示を含む、請求項１に記載のコンピュータ読み出し可能な記憶媒体。
【請求項７】
そこに記憶されるさらなるコンピュータ実行可能な命令を有し、前記命令は、前記コンピュータによって実行されたときに、前記コンピュータに、前記１つ以上の試験の前記実行中に、リアルタイム試験データを提供させる、請求項１に記載のコンピュータ読み出し可能な記憶媒体。
【請求項８】
リアルタイム試験データは、前記スマートフォンの少なくとも１つによって生成される表示出力を含む、請求項１に記載のコンピュータ読み出し可能な記憶媒体。
【請求項９】
プログラムを試験するためのシステムであって、
プログラムを実行するように構成される複数のコンピューティングデバイスに接続される、サービスプロバイダネットワークの中の少なくとも１つのコンピュータを備え、前記サービスプロバイダネットワークの中の前記少なくとも１つのコンピュータはさらに、前記複数のコンピューティングデバイス上のプログラムを試験する、１つ以上の前記プログラムまたは前記プログラムへの参照を含む要求を前記サービスプロバイダネットワークに対して外部となる開発者コンピュータから受け取るように、
前記複数のコンピューティングデバイスに接続される前記サービスプロバイダネットワーク内の複数のホストコンピュータに前記要求及び前記プログラムを提供するように、
前記複数のコンピューティングデバイスのうちの１つ以上のコンピューティングデバイスが試験のために利用可能であることを、前記複数のホストコンピュータのうちの１つ以上のホストコンピュータを用いて判定するように構成されることであって、
前記１つ以上のコンピューティングデバイスは利用可能でないと前記複数のホストコンピュータのうちの前記１つ以上のホストコンピュータを用いて前記コンピュータが判定した場合は、前記１つ以上のコンピューティングデバイスが利用可能になるまで前記要求によって要求される試験の全て、または前記１つ以上のコンピューティングデバイスが利用できなくなることが予定される、前記要求によって要求される前記試験のみを待ち行列に入れるように、
前記プログラムを前記複数のコンピューティングデバイスに前記複数のホストコンピュータからの接続を介してインストールさせるように、
前記プログラムを前記複数のコンピューティングデバイスに試験させるように、及び前記試験の結果を生成し、前記開発者コンピュータに返すように構成される、
システム。
【請求項１０】
前記プログラムを試験する前記要求は、前記複数のコンピューティングデバイス上の前記プログラムの動作を試験するために、前記プログラムに対して行われる１つ以上の試験を説明するテストケースを含む、請求項９に記載のシステム。
【請求項１１】
前記試験要求はさらに、プログラムがインストールされ、試験される前記複数のコンピューティングデバイスを識別するデータを含む、請求項９に記載のシステム。
【請求項１２】
前記システムはさらに、複数のコンピューティングデバイスエミュレータ上のプログラムを試験する要求を受け取るように、前記プログラムを前記複数のコンピューティングデバイスエミュレータにインストールさせ、試験させるように、及び前記要求に応じて、前記試験の結果を生成し、返すように構成される、前記サービスプロバイダネットワークの中の前記少なくとも１つのコンピュータを備える、請求項９に記載のシステム。
【請求項１３】
前記複数のホストコンピュータのうちの前記１つ以上のホストコンピュータはさらに、前記試験が前記プログラムに対して行われている間に、前記コンピューティングデバイスの少なくとも１つによって出力される１つ以上の画像表示を取り込むように構成され、前記試験結果は、前記１つ以上の取り込んだ画面表示を含む、請求項９に記載のシステム。
【請求項１４】
前記複数のホストコンピュータのうちの前記１つ以上のホストコンピュータはさらに、前記複数のコンピューティングデバイスに対する試験の前記実行中に、リアルタイム試験データを提供するように構成される、請求項９に記載のシステム。
【請求項１５】
前記リアルタイム試験データは、前記コンピューティングデバイスの少なくとも１つによって生成される表示出力を含む、請求項１４に記載のシステム。
【請求項１６】
プログラムの動作を試験するためのコンピュータ実装の方法であって、
サービスプロバイダネットワークに存在するコンピューティングデバイス上のプログラムの動作を試験するための前記サービスプロバイダネットワークを公表することと、
複数のコンピューティングデバイス上の前記プログラムの前記動作の試験を行う、１つ以上の前記プログラムまたは前記プログラムへの参照を含む要求を、前記サービスプロバイダネットワークの外部に位置する開発者のコンピューティングデバイスから前記サービスプロバイダネットワークを経由して受け取ることと、
前記複数のコンピューティングデバイスに接続されている前記サービスプロバイダネットワーク内の複数のホストコンピュータに前記要求及び前記プログラムを提供することと、
前記複数のコンピューティングデバイスのうちの１つ以上のコンピューティングデバイスが試験のために利用可能であることを前記複数のホストコンピュータのうちの１つ以上のホストコンピュータを用いて判定することであって、
前記１つ以上のコンピューティングデバイスは利用可能でないと前記複数のホストコンピュータのうちの前記１つ以上のホストコンピュータを用いて前記コンピュータが判定した場合は、前記１つ以上のコンピューティングデバイスが利用可能になるまで前記要求によって要求される試験の全て、または前記１つ以上のコンピューティングデバイスが利用できなくなることが予定される、前記要求によって要求される前記試験のみを待ち行列に入れることと、
前記複数のホストコンピュータからの接続を介して前記プログラムを前記複数のコンピューティングデバイス上でインストールさせることと、
前記複数のコンピューティングデバイス上の前記プログラムの前記動作の前記試験を行わせることと、及び
前記要求に応じて、前記プログラムの前記動作の前記試験の結果を前記開発者のコンピューティングデバイスに返すこととを含む、
コンピュータ実装の方法。
【請求項１７】
前記複数のコンピューティングデバイスは、前記サービスプロバイダネットワークの中の前記１つ以上のホストコンピュータに接続される、スマートフォンコンピューティングデバイスを備える、請求項１６に記載のコンピュータ実装の方法。
【請求項１８】
前記複数のコンピューティングデバイス上の前記プログラムの前記動作の前記試験中に、リアルタイム試験データを前記試験の要求側に提供することをさらに含む、請求項１６に記載のコンピュータ実装の方法。
【請求項１９】
前記方法はさらに、前記プログラムの前記動作の前記試験が行われている間に、前記コンピューティングデバイスの少なくとも１つによって出力される、１つ以上の画面表示出力を取り込むことを含み、前記試験の前記結果は、前記１つ以上の取り込んだ画面表示を含む、請求項１６に記載のコンピュータ実装の方法。
【請求項２０】
前記プログラムの前記動作の試験を行う前記要求は、前記プログラムを前記複数のコンピューティングデバイスに対して実行している間に前記プログラムに対して行われる１つ以上の試験を説明するテストケース、及び前記プログラムの前記動作が試験される前記複数のコンピューティングデバイスを識別するデータを含む、請求項１６に記載のコンピュータ実装の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ここ２〜３年の間に、スマートフォン及びタブレットコンピューティングデバイスの利用可能なモデルの数が飛躍的に増えてきた。例えば、ここ数年で、ＡＮＤＲＯＩＤオペレーティングシステムを実行するように構成される、スマートフォンの利用可能なモデルの数がかなり増えてきた。また、ＡＮＤＲＯＩＤオペレーティングシステムを実行するように構成される、タブレットデバイスの利用可能なモデルの数においても同様の増加が起こっている。また、ＡＮＤＲＯＩＤオペレーティングシステムを実行する他のタイプのコンピューティングデバイスもかなりの増加を示している。また、最近では、他のオペレーティングシステムを実行するスマートフォン、タブレット、及び他のコンピューティングデバイスの利用可能なモデルの数にも驚異的な増加が見られる。
【０００２】
デバイスが同じオペレーティングシステムを実行するように構成されていても、上で説明されるスマートフォン、タブレット、及び他のコンピューティングデバイスの種々のモデルは、しばしば、異なるハードウェア構成を有する。例えば、ＡＮＤＲＯＩＤオペレーティングシステムに基づく異なるスマートフォンモデルは、異なるプロセッサ、異なるメモリの量、ならびにカメラ、全地球測位システム（「ＧＰＳ」）センサ、及び他のもの等の異なる周辺デバイスを含み得る。これらのデバイスはまた、ソフトウェア構成においてもかなりのバリエーションを含み得る。例えば、いくつかのモデルは、異なるバージョンのＡＮＤＲＯＩＤオペレーティングシステムとともに、及び／またはデバイスの製造業者によってデバイスにインストールされる異なるソフトウェアとともに構成され得る。他の製造業者による他のオペレーティングシステムを実行するスマートフォン及びタブレットデバイスはまた、ハードウェア及びソフトウェアにおいて多数のバリエーションも含み得る。
【０００３】
スマートフォン、タブレット、及び他のタイプのコンピューティングデバイスのソフトウェア及びハードウェア構成におけるかなりのバリエーションは、開発者が、広範囲にわたるデバイス上で適切に実行するプログラムを作成することを困難にする可能性がある。例えば、開発者は、自分が所有する単一のデバイス上の自分のプログラムの動作を試験し得る。しかしながら、通常、開発者が試験に使用するために数多くの物理デバイスを購入することは、法外な費用がかかる。開発者は、プログラムの実行を試験するために、デバイスエミュレータを利用し得るが、デバイスエミュレータも、行うことができる試験のタイプ及び深さに対して制限を有し得る。さらに、デバイスエミュレータは、全ての利用可能なデバイスに利用できないかもしれない。その結果、開発者によって作成されるプログラムは、開発者がプログラムの実行を具体的に試験することができる１つまたは複数の物理デバイス以外のデバイス上で最適に実行しないかもしれない。適切に実行しないプログラムは、開発者及びプログラムを購入する顧客の双方をイライラさせる可能性がある。
【０００４】
本明細書で行われる開示は、これらの及び他の考慮すべき事柄に関して提示される。
【図面の簡単な説明】
【０００５】
【図１】本明細書で開示される一実施形態による、プログラム試験サービスを利用してプログラムの動作を試験するための、本明細書で説明される１つの実例となる機溝の概要を示すネットワークアーキテクチャの図である。
【図２】本明細書で開示される一実施形態による、プログラムの動作を試験する要求をプログラム試験サービスに提出するための、本明細書で説明される１つの実例となる機構の態様を示すネットワークアーキテクチャの図である。
【図３】本明細書で開示される一実施形態による、プログラムの動作を試験するための、及び試験に続いて試験結果を要求者に返すための、本明細書で説明される１つの実例となる機構の態様を示すネットワークアーキテクチャの図である。
【図４】本明細書で開示される一実施形態による、プログラムサービスがプログラムを試験するよう要求するための、及びプログラムの試験の結果を受け取り、提示するための、開発者コンピュータの動作の態様を示すフロー図である。
【図５】本明細書で開示される一実施形態による、プログラムの動作を試験するための、及び試験の結果を提供するための、サービスプロバイダネットワークの中の構成要素の動作の態様を示すフロー図である。
【図６】本明細書で開示される一実施形態による、プログラムの動作を試験するために、開発者コンピュータと、サービスプロバイダネットワークの中のデバイスとの間で直接接続を利用するための、本明細書で説明される１つの実例となる機構の態様を示すネットワークアーキテクチャの図である。
【図７】本明細書で開示される一実施形態による、プログラムの動作を試験するために、開発者コンピュータと、サービスプロバイダネットワークの中のデバイスとの間で直接接続を利用するための、本明細書で開示される１つの実例となるルーチンの態様を示すフロー図である。
【図８】本明細書で提示される種々の実施形態の態様を実現するために利用され得るコンピューティングデバイスを実現するための、実例となるコンピュータハードウェアアーキテクチャを示すコンピュータアーキテクチャの図である。
【発明を実施するための形態】
【０００６】
以下の詳細な説明は、プログラム試験サービスを提供し、利用するための技術に向けられる。本明細書で説明される技術を利用すれば、サービスプロバイダは、ネットワークに基づくプログラム試験サービスを提供することができ、該サービスは、開発者が、多種多様な物理コンピューティングデバイス及び／またはデバイスエミュレータ上のプログラムの動作を試験することを許可するための機能性を含む。そのようなプログラム試験サービスの使用を通して、開発者は、スマートフォン、タブレット、及び潜在的に他のタイプのデバイス等の数多くの物理コンピューティングデバイス上のプログラムの動作を迅速に、容易に、かつ経済的に試験することができる。このタイプの試験を通して、開発者は、自分のプログラムが広範囲にわたるコンピューティングデバイス上で適切に実行する可能性を向上させ得る。
【０００７】
本明細書で提示される一態様によれば、ネットワークに基づくプログラム試験サービスを提供し、利用するためのコンピュータ実装の機構が開示される。一実施形態によれば、サービスプロバイダは、それに接続される種々のコンピューティングデバイスを有するホストコンピュータを含む、サービスプロバイダネットワークを動作させる。例えば、サービスプロバイダネットワークの中のホストコンピュータは、それに接続されるいくつかの数（例えば、６〜１６台）のスマートフォンもしくはタブレットコンピューティングデバイス、または他のタイプのモバイルコンピューティングデバイスを有し得る。一例として、サービスプロバイダネットワークの中のホストコンピュータは、ユニバーサルシリアルバス（「ＵＳＢ」）接続等の適切な接続タイプを利用してそれに接続される、１６台のスマートフォンを有し得る。接続したデバイスは、異なるハードウェア及び／またはソフトウェア構成を有し得る。他のタイプのデバイスも、プログラムの試験で使用するためのホストコンピュータに接続され得る。下でさらに詳細に説明されるように、開発者は、本明細書で開示される機構を利用して、サービスプロバイダネットワークの中のホストコンピュータに接続されるデバイス上のプログラムの実行を試験することができる。
【０００８】
いくつかの実現形態において、サービスプロバイダネットワークはまた、そこで実行するデバイスエミュレータを有するホストコンピュータも含み得る。例えば、ホストコンピュータは、仮想マシンインスタンスにおいて、いくつかの数（例えば、２つまたは３つ）のデバイスエミュレータを実行するように構成され得る。デバイスエミュレータは、異なるハードウェア及び／またはソフトウェア構成を有する、スマートフォンまたはタブレットコンピュータのようなデバイスの物理ハードウェアをエミュレートし得る。同じく下でさらに詳細に説明されるように、開発者は、本明細書で開示される機構を利用して、サービスプロバイダネットワークの中のホストコンピュータ上で実行する、デバイスエミュレータ上のプログラムの実行を試験することができる。
【０００９】
プログラムの動作を試験するために、開発者は、最初に、従来様式でプログラムを作成する。例えば、開発者は、適切なプログラム開発環境を利用して、プログラムを作成し得る。開発者は、次いで、プログラムの試験で使用するための１つ以上のテストケースを作成する。テストケースは、プログラムが試験されるべき様式を説明する。テストケースに関する追加的な詳細は、下で提示される。
【００１０】
開発者が、プログラム及びプログラムのための少なくとも１つのテストケースを作成すると、開発者には、プログラムの動作の試験で使用するための、利用可能なデバイス及び／またはデバイスエミュレータのリストが提示され得る。次いで、開発者は、プログラムの動作の試験で使用するための１つ以上のデバイス及び／またはデバイスエミュレータを選択することが許可され得る。この選択が行われると、試験要求が、サービスプロバイダネットワークの中の構成要素に提出される。試験要求は、プログラム、少なくとも１つのテストケース、及びプログラムの動作を試験するために使用されるべきデバイス及び／またはデバイスエミュレータを識別するデータを含み得る。試験要求は、ウェブポータルのウェブページ等の、サービスプロバイダネットワークにより提供されるページを通して、電子メールメッセージで、または他の様式で、プログラム開発環境を経由してサービスプロバイダネットワークに伝送され得る。
【００１１】
サービスプロバイダネットワークが試験要求を受け取ったときに、サービスプロバイダネットワークの中のワークフローコーディネータまたは別の構成要素は、プログラムが試験されるコンピューティングデバイス及び／またはデバイスエミュレータが使用できるかどうか（すなわち、別のプログラムの試験に使用されていないこと）を判定し得る。プログラムが試験されるデバイス及び／またはデバイスエミュレータが使用できない場合、ワークフロー構成要素は、試験に必要とされるデバイス及び／またはデバイスエミュレータが使用できるようになるまで、試験要求を待ち行列に入れさせ得る。
【００１２】
デバイス及び／またはデバイスエミュレータが使用できる場合、ワークフローコーディネータは、プログラムを、サービスプロバイダネットワークの中の他の構成要素と併せて、試験が行われるデバイス及び／またはデバイスエミュレータにインストールさせ得る。次いで、プログラムが、デバイス及び／またはデバイスエミュレータ上で実行され、そして、供給された１つまたは複数のテストケースが、プログラムの動作の種々の態様を試験するために利用される。試験は、多数のデバイス及び／またはデバイスエミュレータに対して同時に行われ得る。プログラムの試験中には、リアルタイム試験データも開発者に提供され得る。例えば、試験が行われているデバイスまたはデバイスエミュレータによって生成されるテキストデータまたはビデオスクリーンデータが開発者に伝送され得る。
【００１３】
プログラムの試験が完了すると、試験の結果が収集され、プログラムの開発者に伝送され得る。結果としては、要約結果（例えば、特定の試験に合格したか、不合格であったか）、プログラムまたはテストケースによって生成されるログファイルなどの詳細な結果、試験前、試験中、及び／または試験後に取り出される画面キャプチャ、ならびに潜在的に、試験中にデバイス及び／またはデバイスエミュレータから取り込まれるビデオが挙げられ得る。次いで、開発者は、試験結果を利用して、プログラムの動作の態様を修正する。このようにして、開発者は、上で説明される試験サービスを利用して、スマートフォンもしくはタブレット等の数多くの物理コンピューティングデバイス上の、及び／または数多くの異なるコンピューティングデバイスのためのデバイスエミュレータ上のプログラムの動作を迅速に、容易に、かつ経済的に試験することができる。ネットワークに基づくプログラム試験サービスを提供し、利用するための、上で説明される種々の構成要素及び過程に関する追加的な詳細は、図１〜図６に関して下で提示される。
【００１４】
本明細書で提示される主題は、コンピュータプロセス、コンピュータ制御の装置、コンピューティングシステム、またはコンピュータ読み出し可能な記憶媒体等の製造物として実現され得ることを認識されたい。本明細書で提示される主題は、１つ以上のコンピューティングデバイス上で実行するプログラムモジュールの一般的な文脈で提示されるが、当業者は、他のタイプのプログラムモジュールと組み合わせて他の実現形態が行われ得ることを認識するであろう。全般的に、プログラムモジュールは、ルーチン、プログラム、構成要素、データ構造、及び特定のタスクを行うかまたは特定の抽象データ型を実現する他のタイプの構造を含む。
【００１５】
当業者はまた、本明細書で説明される主題の態様は、マルチプロセッサシステム、マイクロプロセッサに基づくまたはプログラム可能な消費者電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、電子ブックリーダー、携帯電話デバイス、特殊用途ハードウェアデバイス、ネットワーク機器、及び同類のものを含む、本明細書で説明されるもの以外の、他のコンピュータシステム構成上でまたは他のコンピュータシステム構成と併せて実践され得ることも認識するであろう。上で簡潔に述べたように、本明細書に記載された実施形態は、分散型コンピューティング環境において実施され得、その環境において、タスクは、通信ネットワークを通してリンクされたリモートコンピューティングデバイスによって行われる。分散コンピューティング環境において、プログラムモジュールは、ローカル及びリモート双方のメモリ記憶デバイスの中に位置し得る。
【００１６】
以下の詳細な説明では、その一部を形成し、例として具体的な実施形態または実施例を示す、添付図面に対する参照が行われる。本明細書の図面は、一定の縮尺で描画されていない。複数の図面（本明細書で「図（ＦＩＧ．）」または「図面（ＦＩＧＳ．）」と称され得る）の全体を通して、同じ数字は、同じ要素を表す。
【００１７】
図１は、本明細書で開示される一実施形態による、ネットワークに基づくプログラム試験サービスを利用してプログラム１０８の動作を試験するための、本明細書で説明される１つの実例となる機構の概要を示すネットワークアーキテクチャの図である。図１で示されるように、開発者１０２は、適切な開発者コンピュータ１０６を利用して、プログラム開発環境１０４を実行し得る。当技術分野で知られているように、プログラム開発環境１０４は、ユーザがプログラム１０８等のプログラムを作成すること、コンパイルすること、及び実行することを可能にする環境である。例えば、本明細書で開示される１つの例示的な実施形態において、プログラム開発環境１０４は、ＥＣＬＩＰＳＥ  ＦＯＵＮＤＡＴＩＯＮによるＥＣＬＩＰＳＥ統合開発環境（「ＩＤＥ」）である。しかしながら、他のベンダーによる他のＩＤＥ及び他のタイプのプログラム開発環境１０４も、本明細書で開示される機構とともに利用され得ることを認識されたい。
【００１８】
一実現形態において、プログラム１０８は、スマートフォン、タブレットコンピューティングデバイス、電子ブックリーダーデバイス、または別のタイプのコンピューティングデバイス等のコンピューティングデバイス上で実行するように構成される、実行可能なまたは翻訳されたプログラムである。これに関して、本明細書で開示される実施形態は、主に、スマートフォンコンピューティングデバイスの文脈において提示されるが、本明細書で開示される実施形態はまた、他のタイプのコンピューティングデバイスとともに利用され得ることを認識されたい。例えば、及びこれに限定されないが、本明細書で開示される実施形態は、タブレットコンピューティングデバイス、ビデオゲームデバイス、セットトップボックスデバイス、及び他のタイプのコンピューティングデバイスとともに利用され得る。本明細書で開示される実施形態は、特定の製造業者によるスマートフォンデバイスまたはデバイスに限定されるものとして解釈されるべきではない。
【００１９】
様々なコンピューティングデバイスとともにプログラム１０８の動作を試験するために、開発者１０２は、ネットワーク１２６を経由したサービスプロバイダネットワーク１１０への接続を確立し得る。下でさらに詳細に説明されるように、サービスプロバイダネットワーク１１０は、サービスプロバイダによって動作され、また、様々なコンピューティングデバイス上でプログラム１０８等のプログラムを試験するための、ネットワークに基づくサービスを提供するように構成される。開発者コンピュータ１０６は、インターネット等の適切なネットワーク１２６を通して、サービスプロバイダネットワーク１１０に接続し得る。図１及び他の図面で例示されるネットワークトポロジは、単なる実例に過ぎないこと、及び本明細書で開示され、図面で示される種々の実施形態を実現するために、さらに多くのネットワーク、ネットワーキングデバイス、コンピューティングシステム、及びソフトウェア構成要素が利用され得ることを認識されたい。
【００２０】
様々なデバイス上のプログラム１０８を試験するために、開発者１０２は、最初に、指定されたデバイス上のプログラム１０８の動作の試験で使用するための、１つ以上のテストケース１１４を定義し得る。テストケース１１４は、プログラム１０８を種々のコンピューティングデバイス上で実行している間にプログラム１０８に対して行われるべき、１つまたは複数の試験を説明する。例えば、テストケース１１４は、プログラム１０８が試験されているデバイスに提示される、シミュレーションしたユーザ入力イベントを定義し得る。他の実現形態において、テストケース１１４は、外部デバイスの配向、構成の変更を定義し、及び／または外部デバイスの存在または除去をシミュレーションし得る。テストケース１１４はまた、プログラム１０８が試験されている間に擬似ランダムイベントをデバイスに送る、ストレス試験も定義する。テストケース１１４はまた、バッテリ寿命に対する影響、プロセッサもしくはメモリの使用量、または他の動作態様等の、プログラム１０８の動作の種々の態様を試験するように構成される、他のタイプの試験も定義する。ある実施形態において、サービスプロバイダはまた、開発者１０２が使用するための、予め定義されたテストケース１１４も提供し得る。例えば、予め定義されたテストケース１１４は、プログラム１０８を実行し、そして、プログラム１０８のストレス試験について、及び／またはプログラム１０８に対して他のタイプの試験を行うことについて、何らかのエラーが起こったかどうかを判定するために提供され得る。
【００２１】
プログラム１０８が試験されているデバイスがＧＯＯＧＬＥ，ＩＮＣ．，によるＡＮＤＲＯＩＤオペレーティングシステムに基づいているときに、テストケース１１４は、ＡＮＤＲＯＩＤ機器試験フレームワークを利用して定義され得る。プログラム１０８を試験するために利用されるデバイスが他の製造業者によるオペレーティングシステムとともに構成されるときには、テストケース１１４を定義するために、他のフォーマットが利用され得る。これに関して、本明細書で説明される実施形態は、主に、ＡＮＤＲＯＩＤオペレーティングシステムを利用するコンピューティングデバイス上のプログラム１０８を試験するという文脈で提示されるが、本明細書で提示される実施形態は、そのようなデバイスとともに使用することに限定されないことを認識されたい。例えば、本明細書で開示される実施形態は、他の製造業者による他のタイプのオペレーティングシステムを実行するデバイス上のプログラム１０８を試験するために利用され得る。
【００２２】
いくつかの実施形態では、サービスプロバイダネットワーク１１０を経由して提供される試験サービスとともに使用するためのテストケース１１４を作成する際に、開発者１０２を支援するために、種々の開発ツールも提供され得る。例えば、一実現形態では、開発者１０２がユーザインターフェースの対話を記録することを可能にする、ユーザインターフェース（「ＵＩ」）に基づくソフトウェア開発ツールが提供され得る。次いで、これらのＵＩ対話は、サービスプロバイダネットワーク１１０によって提供される種々のコンピューティングデバイス上のプログラム１０８の機能性を試験するために利用され得る。本明細書で説明されるサービスプロバイダネットワーク１１０によって提供される種々のファシリティとともに利用し、対話する際に、開発者１０２によって使用するための、他のタイプのソフトウェアツールも提供され得ることを認識されたい。
【００２３】
開発者１０２がプログラム１０８及びテストケース１１４の作成を完了すると、開発者１０２は、プログラム１０８の動作を試験するために利用される、サービスプロバイダネットワーク１１０内の１つ以上のコンピューティングデバイス１１８を選択することを許可され得る。例えば、種々の実施形態では、利用可能なデバイス１１８のリストが開発者１０２に提示され得る。他の実現形態において、プログラムが試験される特定の１つまたは複数のデバイス１１８は、プログラム１０８の任意の分析を通して選択され得る。例えば、プログラム１０８が特定のオペレーティングシステムまたはデバイスタイプとともに使用するために作成された場合、この情報は、プログラム１０８が試験される１つまたは複数のデバイス１１８を選択するために利用され得る。
【００２４】
いくつかの実施形態において、開発者１０２はまた、サービスプロバイダネットワーク１１０によって提供されるデバイスエミュレータ１２２上のプログラム１０８の動作を試験することも許可され得る。当技術分野で知られているように、デバイスエミュレータ１２２は、コンピューティングデバイスのソフトウェアエミュレーションである。この機構を利用して、開発者１０２は、実際の物理コンピューティングデバイス１１８上の、及びデバイスエミュレータ１２２上のプログラム１０８の動作を同時に試験することができる。
【００２５】
種々の実施形態によれば、開発者１０２は、開発者１０２がプログラム１０８を試験することを望む、特定の１つまたは複数のデバイスを選択することができる。開発者１０２はまた、デバイスが実行しているオペレーティングシステムのバージョンによってデバイスを選択することも許可され得る。他の実現形態において、開発者１０２はまた、ハードウェアのタイプ、ソフトウェアのタイプ、またはデバイスの他の態様に基づいて試験するためのデバイスを選択することも許可され得る。例えば、開発者１０２は、カメラ及び特定のバージョンのＡＮＤＲＯＩＤオペレーティングシステムを有するデバイス上のプログラム１０８の試験を要求し得る。これに関して、開発者１０２は、デバイスの製造業者、デバイスのタイプ、デバイスのバージョン、デバイスハードウェア、オペレーティングシステムのバージョン、他のソフトウェアのバージョン、またはデバイスの他の属性のうちの１つ以上に基づいてプログラム１０８の試験に使用するための、デバイス及び／またはデバイスエミュレータを選択することが許可され得ることを認識されたい。
【００２６】
開発者１０２がプログラム１０８を生成し、テストケース１１４を作成し、そして、プログラム１０８が試験されるべきデバイス及び／またはエミュレータを選択すると、試験要求１１２がサービスプロバイダネットワーク１１０に伝送され得る。試験要求１１２は、プログラム１０８、テストケース１１４、ならびにプログラム１０８が試験されるべきデバイス及び／またはエミュレータを識別するデータを含む。他の実施形態において、上で説明される試験要求１１２の種々の構成要素は、他の場所に記憶され得、これらの場所の参照は、試験要求１１２に含まれ得る。試験要求１１２における上で説明される種々のデータは、他の実現形態における他の方法でサービスプロバイダネットワーク１１０に提供され得る。
【００２７】
試験要求１１２を受け取ることに応じて、サービスプロバイダネットワーク１１０内の種々の構成要素は、指定されたデバイス及び／またはデバイスエミュレータ上で実行している間に、テストケース１１４によって説明される試験をプログラム１０８に対して行わせるように構成される。例えば、図１で示される実施例において、サービスプロバイダネットワーク１１０は、それに取り付けられる複数のコンピューティングデバイス１１８Ａ〜１１８Ｎを有する、ホストコンピュータ１１６Ｂを含む。一実現形態において、コンピューティングデバイス１１８Ａ〜１１８Ｎは、ＡＮＤＲＯＩＤオペレーティングシステムを実行する、スマートフォンまたはタブレットコンピューティングデバイスの種々のモデルである。コンピューティングデバイス１１８Ａ〜１１８Ｎは、ＵＳＢ接続等の適切な有線接続を経由して、ホストコンピュータ１１６Ｂに接続され得る。コンピューティングデバイス１１８Ａ〜１１８Ｎはまた、適切な無線接続を経由しても、ホストコンピュータ１１６Ｂに接続され得る。
【００２８】
別の実現形態において、コンピューティングデバイス１１８Ａ〜１１８Ｎは、デバイスに一意であるハードウェアだけを含む、スマートフォンデバイスである。例えば、デバイス１１８は、特定のモデルのモバイルコンピューティングデバイスに一意であるプロセッサ及びメモリだけを含む、開発マザーボードであり得る。種々のデバイスにわたって共通であるモバイルコンピューティングデバイスによって利用される他のハードウェアデバイスは、ホストコンピュータ１１６上で実行しているソフトウェアによってエミュレートされ得る。このようにして、デバイス１１８Ａ〜１１８Ｎのそれぞれのコストが低減され得る。他のタイプの開発ボード及び／またはプラットフォームも、本明細書で開示される様式の試験で使用するための、サービスプロバイダネットワーク１１０の中のホストコンピュータ１１６に接続され得る。
【００２９】
図１で示される実施例において、サービスプロバイダネットワーク１１０はまた、いくつかのデバイスエミュレータ１２２Ａ〜１２２Ｎを実行しているホストコンピュータ１１６Ａも含む。デバイスエミュレータ１２２Ａ〜１２２Ｎは、ホストコンピュータ１１６Ａの物理ハードウェア上で実行している場合があり、または他の実施形態では、ホストコンピュータ１１６Ａ上で実行する仮想マシン内で実行している場合がある。デバイスエミュレータ１２２Ａ〜１２２Ｎを実行するための他の機構も利用され得る。
【００３０】
プログラム１０８の動作を試験するために、プログラム１０８は、最初に、開発者１０２によって指定されたコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎにインストールされる。プログラム１０８が適切なコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎにインストールされると、種々のコンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２上のプログラム１０８の動作を試験するために、テストケース１１４を利用することができる。これらの試験は、同時に行われ得、それによって、開発者１０２が、複数のコンピューティングデバイス１１８及びデバイスエミュレータ１２２上のプログラム１０８の動作を同時に試験することを可能にすることを認識されたい。
【００３１】
下でさらに詳細に説明されるように、サービスプロバイダネットワーク１１０は、プログラム１０８の試験が行われている間に、リアルタイム試験データを開発者１０２に提供し得る。例えば、試験の種々の態様を説明するテキストデータが、開発者コンピュータ１０６に提供され得る。他の実現形態では、コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎによる表示出力が、プログラム１０８の試験が行われている間に、開発者コンピュータ１０６に提供され得る。他のタイプのデータも、開発者１０２が使用するための指定された試験の実行中に、開発者コンピュータ１０６に提供され得る。
【００３２】
プログラム１０８の試験が完了したときに、サービスプロバイダネットワーク１１０は、試験結果１２４を開発者コンピュータ１０６に伝送するように構成される。下でさらに詳細に説明されるように、試験結果１２４は、試験が行われた各コンピューティングデバイス１１８Ａ〜１１８Ｎ及びデバイスエミュレータ１２２Ａ〜１２２Ｎに関する情報を含み得る。試験結果１２４は、試験の結果を要約し得、及び／または試験の実行に関するより詳細な情報を提供し得る。例えば、試験結果１２４は、試験の成功または失敗を説明することができ、試験の実行中に収集されたコンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２からのログ及び／または他の情報を提供し得、また、他の実施形態では、他の情報を提供し得る。下でもさらに詳細に説明されるように、試験結果１２４は、試験の実行中に、コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎから取り込まれる画面表示も含み得る。試験結果１２４はまた、他の実施形態において、他の情報も含み得る。
【００３３】
開発者１０２が試験結果１２４を受け取ると、開発者１０２は、試験結果１２４を利用して、プログラム１０８の動作を修正し得る。開発者１０２は、次いで、上で説明される試験サービスを繰り返し利用して、プログラム１０８の動作の試験を継続し得る。開発者コンピュータ１０６上の、及びサービスプロバイダネットワーク１１０内の種々の構成要素の動作に関する追加的な詳細は、図２〜図５に関して下で提供される。
【００３４】
図２は、本明細書で開示される一実施形態による、プログラム１０８の動作を試験する試験要求１１２をプログラム試験サービスに提供するための、本明細書で説明される１つの実例となる機構の態様を示すネットワークアーキテクチャの図である。上で簡潔に説明されるように、開発者１０２は、開発者コンピュータ１０６上の種々のソフトウェア構成要素を利用して、試験要求１１２を上で説明されるサービスプロバイダネットワーク１１０に伝送し得る。図２は、種々の実施形態において試験要求１１２をサービスプロバイダネットワーク１１０に提出するために利用され得る、種々の構成要素に関する追加的な態様を提供する。
【００３５】
一実現形態において、プログラム開発環境１０４に対するプラグイン２０１は、サービスプロバイダネットワーク１１０への試験要求１１２Ａの提出のために提供される。プラグイン２０１は、プログラム開発環境１０４内で実行され得、また、プログラム１０８の動作の試験で使用するための利用可能なコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎのリストを提示するための機能性を提供する。開発者１０２がプログラム１０８の動作の試験で使用するためのコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎを選択すると、プラグイン２０１は、試験要求１１２Ａをサービスプロバイダネットワーク１１０に伝送し得る。
【００３６】
図２で示され、上で簡潔に説明されるように、試験要求１１２Ａは、試験されるプログラム１０８と、どのように試験が起こるべきかを説明する１つ以上のテストケース１１４と、試験が行われるべきコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎを識別するデータ２０２とを含む。上で述べられるように、プログラム１０８及び／またはテストケース１１４の参照は、実際のプログラム１０８及びテストケース１１４ではなく、試験要求１１２Ａにおいて提供され得る。プログラム１０８及びテストケース１１４をサービスプロバイダネットワーク１１０に供給するために、他の機構も利用され得る。
【００３７】
別の実現形態において、サービスプロバイダネットワーク１１０は、ウェブポータル２０６または別のタイプの情報ページを提供するように構成され、開発者１０２は、それを通して試験要求１１２を伝送することができる。例えば、図２で示される実施例において、サービスプロバイダネットワーク１１０は、ウェブポータル２０６を提供するように構成され、開発者１０２は、それを通して試験要求１１２Ｂを伝送することができる。同じく図２で例示されるように、ウェブポータル２０６にアクセスし、試験要求１１２Ｂを伝送するために、ウェブブラウザプログラム２０４または他の適切なプログラムが利用され得る。ウェブポータル２０６はまた、開発者１０２が、プログラム１０８が試験されるべきコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎを指定することを可能にするための機能性も含み得る。
【００３８】
さらに別の実現形態において、開発者１０２は、開発者コンピュータ１０６上で実行する電子メールプログラム２０８を利用して、試験要求１１２Ｃを含む電子メールメッセージ２１０を作成し、伝送し得る。試験に利用するためのプログラム１０８、テストケース１１４、ならびにコンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２を識別するデータ２０２は、電子メールメッセージ２１０に添付され得る。代替として、電子メールメッセージ２１０は、プログラム１０８、テストケース１１４、ならびにプログラム１０８の動作を試験するために利用されるべきコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎを識別するデータ２０２のネットワークロケーションの参照を含み得る。
【００３９】
図２に関して説明される機構は、単なる実例に過ぎないことを認識されたい。他の実現形態では、開発者１０２が、プログラム１０８を試験するためのサービスを提供するサービスプロバイダネットワーク１１０に試験要求１１２を伝送することを可能にするために、他の機構が利用され得る。図２で示される機構は、単なる実例に過ぎず、本明細書に添付される特許請求の範囲は、これらの特定の機構に限定されるべきではない。
【００４０】
図３は、本明細書で開示される一実施形態による、プログラム１０８の動作を試験するための、及び試験に続いて試験結果１２４を要求者に返すための、本明細書で説明される１つの実例となる機構の態様を示すネットワークアーキテクチャの図である。図３で示され、上で簡潔に説明されるように、サービスプロバイダネットワーク１１０は、プログラム１０８の動作を試験するための、ネットワークに基づくサービスを提供する。上で述べられるように、プログラム１０８は、試験要求１１２において、または別の様式において、サービスプロバイダネットワーク１１０に提出され得る。
【００４１】
一実現形態において、サービスプロバイダネットワーク１１０内のワークフローコーディネータ３０２は、試験要求１１２を受け取る。本明細書においてさらに詳細に説明されるように、ワークフローコーディネータ３０２は、試験要求１１２をサービスプロバイダネットワーク１１０内のホストコンピュータ１１６Ａ〜１１６Ｃに割り当てるように構成される、構成要素である。ワークフローコーディネータ３０２はまた、種々のホストコンピュータ１１６Ａ〜１１６Ｃから試験結果１２４を受け取り、そして、試験結果１２４を、試験要求１１２を提出した開発者コンピュータ１０６に提供し得る。試験結果１２４に関する詳細は、下で提供される。
【００４２】
試験要求１１２を受け取ることに応じて、ワークフローコーディネータ３０２は、一実施形態において、試験要求１１２において要求されたコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ０〜１２２Ｎが、プログラム１０８の試験で使用するために利用できるかどうかを判定するように構成される。要求されたコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが利用できない場合、ワークフローコーディネータ３０２は、待ち行列構成要素３０４を利用して、試験要求１１２を待ち行列に入れる、要求されたコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが利用できるようになる。いくつかの実現形態では、コンピューティングデバイス１１８Ａ〜１１８Ｎまたはデバイスエミュレータ１２２Ａ〜１２２Ｎのいずれかが利用できない場合に、試験要求１１２によって要求される試験の全てが待ち行列に入れられ得る。他の実施形態では、コンピューティングデバイス１１８Ａ〜１１８Ｎが利用できなくなること、及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが利用できなくなることが予定される、試験要求１１２によって要求される試験だけが待ち行列に入れられ得る。他の実現形態では、試験要求１１２を待ち行列に入れるための他の機構も利用され得る。
【００４３】
プログラム１０８の試験が行われるコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが利用可能である場合、ワークフローコーディネータ３０２は、ホストコンピュータ１１６Ａ〜１１６Ｃ上で実行するワークフロークライアント３０６に試験要求１１２を伝送する。例えば、試験要求１１２が、コンピューティングデバイス１１８Ａ上で実行している間にプログラム１０８に対して試験を行わなければならないことを示す場合、ワークフローコーディネータ３０２は、ホストコンピュータ１１６Ｂ上で実行するワークフロークライアント３０６に試験要求１１２を伝送し得る。同様の様式で、試験要求１１２が、試験がデバイスエミュレータ１２２Ａを使用して行われることを示す場合、ワークフローコーディネータ３０２は、ホストコンピュータ１１６Ａ上で実行するワークフロークライアント３０６に試験要求１１２を伝送し得る。
【００４４】
ホストコンピュータ１１６Ａ〜１１６Ｃのそれぞれの上で実行するワークフロークライアント３０６は、ワークフローコーディネータ３０２から試験要求１１２を受け取るように構成される。試験要求１１２を受け取ることに応じて、ワークフロークライアント３０６は、開発ブリッジ３０８に、試験されるコンピューティングデバイス１１８またはデバイスエミュレータ１２２上にプログラム１０８をインストールさせる。開発ブリッジ３０８は、接続したコンピューティングデバイス１１８またはデバイスエミュレータ１２２と対話するための機構を提供する。１つの特定の実現形態において、開発ブリッジ３０８は、ＡＮＤＲＯＩＤデバッグブリッジである。ＡＮＤＲＯＩＤデバッグブリッジは、コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２ＮがＡＮＤＲＯＩＤオペレーティングシステムを利用するときに利用される。また、他の製造業者による他のオペレーティングシステムとともに構成されるコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが、プログラム１０８の動作を試験するために利用されるときには、他のタイプのブリッジも利用され得る。
【００４５】
試験されるプログラム１０８が、試験が起こるべきコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎにインストールされると、プログラム１０８の動作を試験するために、試験要求１１２とともに提出されるテストケース１１４が利用される。図１に関して上で説明されるように、テストケース１１４は、ターゲットコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎ上のプログラム１０８の種々の態様、動作を試験し得る。例えば、テストケース１１４は、ユーザがプログラム１０８と対話する能力を試験し、キー押し等のユーザアクションをプログラム１０８に送り、コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎの配向の変化を模倣し、プログラム１０８で使用される異なる変数に対してプログラム的にアサートし、プログラム１０８によってＵＩ要素において異なって表示されるテキストを検証及び／またはアサートし、また、他の種類の試験を提供し得る。
【００４６】
１つの特定の実現形態において、ホストコンピュータ１１６Ａ〜１１６Ｃは、プログラム１０８の試験が行われている間に、リアルタイム試験データ３１８を開発者コンピュータ１０６に伝送するように構成される。例えば、いくつかの実現形態において、リアルタイム試験データ３１８は、特定のコンピューティングデバイス１１８Ａ〜１１８Ｎまたはデバイスエミュレータ１２２Ａ〜１２２Ｎ上のプログラム１０８の進行中の試験を説明するテキストデータを含む。他の実現形態において、リアルタイム試験データ３１８は、試験に利用されるコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎのうちの１つによって生成されるビデオ表示出力を含み得る。次いで、開発者１０２が視聴するために、リアルタイム試験データ３１８が開発者コンピュータ１０６上に提示され得る。このようにして、開発者１０２は、コンピューティングデバイス１１８Ａ〜１１８Ｎまたはデバイスエミュレータ１２２Ａ〜１２２Ｎ上のプログラム１０８のリアルタイム動作試験を閲覧することができる。複数の試験が同時に行われているときには、開発者１０２が、リアルタイム試験データ３１８が表示されるコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎを選択することを可能にする機構が開発者コンピュータ１０６において利用され得る。
【００４７】
コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎ上のプログラム１０８の試験が完了すると、ホストコンピュータ１１６Ａ〜１１６Ｃのそれぞれが、試験結果１２４をワークフローコーディネータ３０２に提供する。次に、ワークフローコーディネータ３０２が、試験結果１２４を開発者コンピュータ１０６に提供する。図３で示されるように、試験結果１２４は、結果要約３１０を含み得、該結果要約は、特定の試験に合格したか、不合格であったかを示す。試験結果１２４はまた、コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎに対する試験の実行に関する詳細な情報を含む、詳細な結果３１２も含み得る。例えば、詳細な結果３１２は、コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎ上のプログラム１０８の試験中に、コンピューティングデバイス１１８、エミュレータ１２２、及び／または開発ブリッジ３０８によって生成される、ログファイル及び／または他の詳細な結果を含み得る。
【００４８】
いくつかの実現形態において、試験結果１２４はまた、プログラム１０８の試験中に、コンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２上に取り込まれる、１つ以上の画面キャプチャ３１４も含む。同様に、試験結果１２４はまた、プログラム１０８の試験の全部または一部分の間に、コンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２から取り込んだビデオ３１６も含み得る。これに関して、図３で例示される試験結果１２４の内容が単なる実例に過ぎないこと、及び他のタイプの情報が試験結果１２４において提供され得ることを認識されたい。
【００４９】
試験結果１２４を開発者１０２に提示するために、適切な機能性も開発者コンピュータ１０６で提供され得る。試験結果１２４を利用することで、開発者１０２は、プログラム開発環境１０４を利用して、プログラム１０８に変更を行うことができる。開発者１０２は、次いで、上で説明される様式での継続的な試験のために、プログラム１０８をサービスプロバイダネットワーク１１０に再提出し得る。
【００５０】
図４は、本明細書で開示される一実施形態による、ネットワークに基づくプログラムサービスがプログラム１０８を試験するよう要求するための、及びプログラム１０８の試験の結果１２４を受け取り、提示するための、開発者コンピュータ１０６の動作の態様を例示する１つの実例となるルーチン４００を示すフロー図である。図４及び他の図面に関して本明細書で説明される論理動作は、（１）コンピューティングシステム上で動作する一連のコンピュータ実装の行為またはプログラムモジュールとして、及び／または（２）コンピューティングシステム内の相互接続した機械論理回路または回路モジュールとして実現され得ることを認識されたい。
【００５１】
本明細書で説明される種々の構成要素の実現形態は、コンピューティングシステムの性能及び他の要件に依存して選択できる事柄である。故に、本明細書で説明される論理演算は、動作、構造デバイス、行為、またはモジュールと様々に称される。これらの動作、構造デバイス、行為、及びモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、及びそれらの任意の組み合わせで実現され得る。また、図面で示され、本明細書で説明されるよりも多いまたは少ない動作が行われ得ることも認識されたい。これらの動作はまた、並列に、または本明細書で説明される順序と異なる順序でも行われ得る。
【００５２】
ルーチン４００は、動作４０２から始まり、そこでは、プログラム１０８を開発するために、ファシリティが開発者コンピュータ１０６に提供される。上で説明されるように、プログラム開発環境１０４は、プログラム１０８を開発するために種々の実施形態において利用され得る。同じく上で簡潔に述べられるように、プログラム１０８の動作を試験するために利用すべきテストケース１１４を定義するために、ファシリティも開発者コンピュータ１０６に提供され得る。これは、ルーチン４００の動作４０４で起こる。
【００５３】
開発者１０２がプログラム１０８及びテストケース１１４を開発すると、サービスプロバイダネットワーク１１０を通してプログラム１０８の動作の試験で使用するために利用できるコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎのリストが提示され得る。上で述べられるように、そのようなリストは、プログラム開発環境１０４において提供されるプラグイン２０１を通して、またはサービスプロバイダネットワーク１１０によって提供されるウェブポータル２０６を通して提示され得る。また、プログラム１０８の動作を試験するための利用可能なコンピューティングデバイス１１８Ａ〜１１８Ｎ及びデバイスエミュレータ１２２Ａ〜１２２Ｎのリストを提供するために、他の機構も利用され得る。
【００５４】
動作４０６から、ルーチン４００は、動作４０８に進み、そこでは、プログラム１０８の動作の試験に使用するためのコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎの選択を開発者１０２から受け取る。それに応じて、ルーチン４００は、動作４１０に進み、そこでは、試験要求１１２がサービスプロバイダネットワーク１１０に伝送される。上で論じられるように、試験要求１１２は、プログラム１０８またはプログラム１０８の参照と、テストケース１１４と、試験が起こるべきコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎを識別するデータとを含み得る。
【００５５】
動作４１０から、ルーチン４００は、動作４１２に進み、そこでは、開発者コンピュータ１０６が、サービスプロバイダネットワーク１１０からリアルタイム試験データ３１８を受け取り得る。上で説明されるように、リアルタイム試験データ３１８は、プログラム１０８の試験中に、ホストコンピュータ１１６によって生成されるテキストまたはグラフィック画像を含み得る。リアルタイム試験データ３１８を開発者１０２に提示するために、プラグイン２０１またはウェブブラウザプログラム２０４等の開発者コンピュータ１０６上の適切な構成要素が利用され得る。
【００５６】
動作４１２から、ルーチン４００は、動作４１４に進み、そこでは、サービスプロバイダネットワーク１１０に関してプログラム１０８の試験が完了したかどうかについて判定が行われる。試験が完了していない場合、ルーチン４００は、動作４１２に戻り、そこでは、リアルタイム試験データ３１８が開発者１０２に継続的に提示され得る。試験が完了した場合、ルーチン４００は、動作４１４から動作４１６に進む。
【００５７】
動作４１６で、開発者コンピュータ１０６は、試験結果１２４を受け取り、提示する。上で論じられるように、試験結果１２４は、種々の実施形態において、結果要約３１０、詳細な結果３１２、画面キャプチャ３１４、及び／またはビデオ３１６を含み得る。試験結果１２４を開発者１０２に提示するために、プラグイン２０１またはウェブブラウザプログラム２０４等の、開発者コンピュータ１０６上で実行する適切な構成要素が利用され得る。動作４１６から、ルーチン４００は、動作４１８に進み、そこで終了する。
【００５８】
図５は、本明細書で開示される一実施形態による、プログラム１０８の動作を試験するための、及び試験の結果１２４を提供するための、サービスプロバイダネットワーク１１０の中の構成要素の動作の態様を例示する１つの実例となるルーチン５００を示すフロー図である。ルーチン５００は、動作５０２から始まり、そこでは、サービスプロバイダネットワーク１１０が試験要求１１２を受け取る。試験要求１１２を受け取ることに応じて、ワークフローコーディネータ３０２またはサービスプロバイダネットワーク１１０内の別の構成要素は、要求されたコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが、プログラム１０８の試験で使用するために利用できるかどうかを判定する。要求されたコンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２が利用できない場合、ルーチン５００は、動作５０６に進み、そこでは、試験要求１１２が待ち行列に入れられ得る。上で論じられるように、要求されたコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが利用できるようになるまで、試験要求１１２を待ち行列に入れるために、待ち行列構成要素３０４がサービスプロバイダネットワーク１１０に提供され得る。
【００５９】
動作５０４で、ワークフローコーディネータ３０２が、要求されたコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎが利用できると判定した場合、ルーチン５００は、動作５０４から動作５０８に進む。動作５０８で、ワークフローコーディネータ３０２は、プログラム１０８を含む試験要求１１２を、試験が起こるべきコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎをホストするホストコンピュータ１１６Ａ〜１１６Ｃに提供する。次いで、ルーチン５００は、動作５１０に進み、そこでは、それぞれのホストコンピュータ１１６上の開発ブリッジ３０８が、試験が起こるコンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２上にプログラム１０８をインストールする。
【００６０】
プログラム１０８がインストールされると、ルーチン５００は、動作５１２に進み、そこでは、試験要求１１２によって指定されるコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎ上のプログラム１０８の動作を試験するために、試験要求１１２とともに提供されるテストケース１１４が利用される。上で述べられるように、リアルタイム試験データ３１８は、プログラム１０８の試験中に、開発者コンピュータ１０６に伝送され得る。これは、動作５１４で起こる。
【００６１】
動作５１４から、ルーチン５００は、動作５１６に進み、そこでは、プログラム１０８の試験が完了したかどうかについて判定が行われる。試験が完了していない場合、ルーチン５００は、動作５１４に戻り、そこでは、サービスプロバイダネットワーク１１０が、上で説明される様式で、リアルタイム試験データ３１８の開発者コンピュータ１０６への伝送を継続し得る。しかしながら、プログラム１０８の試験が完了した場合は、サービスプロバイダネットワーク１１０が試験結果１２４を生成する。上で述べられるように、試験結果１２４は、種々の実施形態において、結果要約３１０、詳細な結果３１２、画面キャプチャ３１４、及び／またはビデオ３１６を含み得る。試験結果１２４はまた、本明細書で具体的に言及されない他のデータも含み得る。
【００６２】
動作５１８から、ルーチン５００は、動作５２０に進み、そこでは、試験結果１２４が、開発者１０２への提示、または別の様式での使用のために、開発者コンピュータ１０６に伝送される。試験結果１２４が開発者コンピュータ１０６に伝送されると、試験が起こったコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２をリセットするために、開発ブリッジ３０８等のサービスプロバイダネットワーク１１０内の構成要素が利用される。このようにして、コンピューティングデバイス１１８及び／またはデバイスエミュレータ１２２は、将来の試験のために、ベースライン状態に置くことができる。動作５２２から、ルーチン５００は、動作５２４に進み、そこで終了する。
【００６３】
いくつかの実施形態において、上で説明される試験の結果は、将来の使用のために、開発者１０２によって記憶され得る。例えば、試験結果１２４は、サービスプロバイダネットワーク１１０に、開発者コンピュータ１０６に、または別の場所に記憶され得る。また、開発者１０２が、記憶した試験結果１２４をレビューすることを可能にするための機構も提供され得る。例えば、以前に生成され、記憶した試験結果１２４をレビューするための、ウェブポータルまたは他のタイプの適切なユーザインターフェースが提供され得る。
【００６４】
本明細書で開示される実施形態は、主に、プログラム１０８を試験する文脈において提示されるが、本明細書で開示される実施形態は、他のタイプの試験のために利用され得ることを認識されたい。例えば、１つの特定の実現形態において、上で説明される試験サービスは、ウェブページを試験するために利用され得る。そのような実現形態において、試験されるウェブページは、コンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎのうちの１つ以上で実行するウェブブラウザアプリケーションによってロードされ得る。次いで、適切なテストケース１１４を利用して、ウェブページのレンダリング及び動作が試験され得る。次いで、上で説明される様式で、試験結果１２４が提供され得る。
【００６５】
図６で示され、図７に関して下でさらに詳細に説明される別の実現形態において、開発者コンピュータ１０６は、プログラム１０８の動作の試験で使用するためのコンピューティングデバイス１１８Ａ〜１１８Ｎ及び／またはデバイスエミュレータ１２２Ａ〜１２２Ｎへの直接ネットワーク接続を確立するように構成され得る。そのような接続を通して、開発者１０２は、デバイス１１８またはエミュレータ１２２と対話して、デバイス１１８またはエミュレータ１２２上のプログラム１０８の動作を試験するためのユーザ入力６０４を提供することができる。開発者１０２はまた、エミュレータ１２２またはデバイス１１８によって生成される表示出力６０６を閲覧することもできる。
【００６６】
図６で示される実施形態において、プログラム開発環境１０４、プログラム開発環境１０４に対するプラグイン、または開発者コンピュータ１０６上で実行する別のプログラムは、直接接続要求６０２をサービスプロバイダネットワーク１１０に伝送して、コンピューティングデバイス１１８Ａ〜１１８Ｎのうちの１つまたはデバイスエミュレータ１２２Ａ〜１２２Ｎのうちの１つへの直接ネットワーク接続を確立するように構成され得る。そのような要求６０２を受け取ることに応じて、要求されたエミュレータ１２２またはデバイス１１８をホストするホストコンピュータ１１６Ａまたは１１６Ｂは、直接接続が要求されたエミュレータ１２２またはデバイス１１８が利用できるかどうかを判定し得る。
【００６７】
直接接続が要求されたエミュレータ１２２またはデバイス１１８が利用できない場合、直接ネットワーク接続を確立する要求６０２は、拒否され得る。例えば、図６で示される実施形態において、要求６０２は、開発者コンピュータ１０６とデバイス１１８Ｎとの間に直接ネットワーク接続を確立することである。この事例において、デバイス１１８Ｎが別の開発者によって使用中であるか、または別の理由で利用できない場合、要求６０２は、拒否され得る。この事例では、要求６０２が待ち行列に入れられ得るか、または、開発者１０２が後でもう一度要求６０２を再提出するように指示される。
【００６８】
要求されたエミュレータ１２２またはデバイス１１８が利用できる場合は、適切なネットワークプロトコルを利用して、要求されたエミュレータ１２２またはデバイス１１８と開発者コンピュータ１０６との間に直接ネットワーク接続が確立され得る。そのような直接ネットワーク接続を使用することで、開発者１０２は、エミュレータ１２２またはデバイス１１８と直接対話して、プログラム１０８の動作の態様を試験するか、または他のタイプの動作を行うことができる。例えば、図６で示される実施例では、開発者コンピュータ１０６とデバイス１１８Ｎとの間に直接ネットワーク接続が確立されている。この実施形態において、開発者１０２は、タッチ画面入力、キーボード入力、及び他のタイプの入力等のユーザ入力６０４を、開発者コンピュータ１０６に提供することができる。
【００６９】
次いで、受け取ったユーザ入力６０４は、直接ネットワーク接続を通じてデバイス１１８Ｎに伝送される。次いで、開発者１０２が、開発者コンピュータ１０２ではなく、あたかもデバイス１１８Ｎに直接ユーザ入力６０４を行ったかのように、ユーザ入力６０４がデバイス１１８Ｎに提示される。このようにして、開発者１０２は、あたかも開発者１０２がデバイス１１８Ｎと物理的に同じ場所に配置されているかのように、デバイス１１８Ｎを利用することができる。特に、開発者１０２は、この機構を利用して、デバイス１１８Ｎ上のプログラム１０８の動作を利用すること、及び試験することができる。
【００７０】
図６で示される実施形態において、直接ネットワーク接続が確立されたエミュレータ１２２またはデバイス１１８はまた、エミュレータ１２２またはデバイス１１８の表示出力６０６を開発者コンピュータ１０６に伝送するようにも構成され得る。エミュレータ１２２またはデバイス１１８の音声出力も、同様の様式で伝送され得る。エミュレータ１２２またはデバイス１１８の表示出力６０６及び／または音声出力を伝送するために、仮想ネットワークコンピューティング（「ＶＮＣ」）プロトコル、リモートデスクトッププロトコル（「ＲＤＰ」）または別の適切なプロトコル等の、種々のプロトコルが利用され得る。
【００７１】
次いで、開発者コンピュータ１０６は、接続したエミュレータ１２２またはデバイス１１８の表示出力６０６を受け取り、提示し得る。例えば、図６で示される実施例において、デバイス１１８Ｎは、開発者１０２への表示のために、その表示出力６０６を開発者コンピュータ１０６に伝送している。このようにして、開発者１０２は、ユーザ入力６０４に応じて、デバイス１１８Ｎの出力を閲覧することができる。したがって、開発者１０２は、エミュレータ１２２またはデバイス１１８が開発者コンピュータ１０６にローカルであった場合と本質的に同じ様式で、サービスプロバイダネットワーク１１０の中で動作している、エミュレータ１２２またはデバイス１１８上のプログラム１０８の動作を試験することができる。この過程に関する追加的な詳細は、図７に関して下で提供される。
【００７２】
図７は、本明細書で開示される一実施形態による、プログラム１０８の動作を試験するために、開発者コンピュータ１０６等のコンピューティングデバイスと、サービスプロバイダネットワーク１１０の中のエミュレータ１２２またはデバイス１１８との間の直接ネットワーク接続を利用するための、本明細書で開示される１つの実例となるルーチン７００の態様を示すフロー図である。ルーチン７００は、動作７０２から始まり、そこでは、開発者コンピュータ１０６が、直接接続要求６０２を、サービスプロバイダネットワーク１１０の中のホストコンピュータ１１６Ｂ等の構成要素に伝送する。直接接続要求６０２は、直接ネットワーク接続が要求される特定のエミュレータ１２２またはデバイス１１８を識別するデータを含み得る。
【００７３】
動作７０２から、ルーチン７００は、動作７０４に進み、そこでは、開発者コンピュータ１０６が、直接接続要求６０２が許可されたかどうかを判定する。要求６０２が許可されなかった場合、ルーチン７００は、動作７１６に進み、そこで終了する。しかしながら、直接接続要求６０２が許可された場合、ルーチン７００は、動作７０６から動作７０８に進む。
【００７４】
動作７０８で、開発者コンピュータ１０６は、直接ネットワーク接続を確立する、サービスプロバイダネットワーク１１０の中の要求されたエミュレータ１２２またはデバイス１１８。例えば、サービスプロバイダネットワーク１１０は、要求６０２に応じて、エミュレータ１２２またはデバイス１１８のネットワークアドレスを開発者コンピュータ１０６に提供し得る。提供されたネットワークアドレスを利用することで、開発者コンピュータ１０６は、適切なネットワーク通信プロトコルを利用して、要求されたエミュレータ１２２またはデバイス１８８への直接ネットワーク接続を確立し得る。
【００７５】
直接ネットワーク接続が確立されると、ルーチン７００は、動作７０６から動作７０７に進み、そこでは、試験されるプログラム１０８が、直接ネットワーク接続が確立されたエミュレータ１２２またはデバイス１８８にロードされ得る。プログラム１０８がインストールされると、プログラム１０８の実行が開始される。次いで、ルーチン７００は、動作７０７から動作７０８に進む。
【００７６】
動作７０８では、開発者コンピュータ１０６が、開発者１０２または他のユーザからユーザ入力６０４を受け取る。次いで、開発者コンピュータ１０６は、ユーザ入力６０４を、接続したエミュレータ１２２またはデバイス１１８に伝送する。上で述べられるように、次いで、あたかもユーザ入力６０４がエミュレータ１２２またはデバイス１１８にローカルに行われたかのように、ユーザ入力６０４が、接続したエミュレータ１２２またはデバイス１１８に提示され得る。
【００７７】
動作７０８から、ルーチン７００は、動作７１０に進み、そこでは、接続したエミュレータ１２２またはデバイス１１８が、表示出力６０６を生成し、表示出力６０６を開発者コンピュータ１０６に伝送する。例えば、表示出力６０６は、特定のエミュレータ１２２またはデバイス１１８上で実行するプログラム１０８によって作成され得る。上で述べられるように、表示出力６０６は、ＶＮＣまたはＲＤＰ等の適切なプロトコルを利用してフォーマットされ得る。次いで、動作７１０で、開発者コンピュータ１０６が表示出力６０６を受け取り、表示出力６０６を表示する。上で述べられるように、接続したエミュレータ１２２またはデバイス１１８はまた、類似する様式で、開発者コンピュータ１０６による再生のために、音声を開発者コンピュータ１０６に伝送し得る。
【００７８】
動作７１０から、ルーチン７００は、動作７１１に進み、そこでは、上で説明される様式で、エミュレータ１２２またはデバイス１８８に対して行われるアクティビティが記録され得る。アクティビティログからのデータは、直接ネットワーク接続が利用されている間に、または（下で説明される動作７１８での）直接接続セッションに続いて、リアルタイムで開発者１０２に提供され得る。
【００７９】
動作７１１から、ルーチン７００は、動作７１２に進み、そこでは、開発者コンピュータ１０６が、開発者１０２がエミュレータ１２２またはデバイス１１８への直接ネットワーク接続の終了を要求したかどうかを判定する。開発者１０２が、直接ネットワーク接続の終了を要求した場合、ルーチン７００は、動作７０８に戻り、そこでは、ユーザ入力６０４が、接続したエミュレータ１２２またはデバイス１１８に継続的に提供され得、そして、動作７１０に進み、そこでは、接続したエミュレータ１２２またはデバイス１１８によって生成された表示出力６０６が、開発者コンピュータ１０６で継続的に受け取られ、提示され得る。いくつかの実施形態において、直接ネットワーク接続は、ある期間に時間制限され得る。例えば、開発者１０２は、上で説明される様式で直接ネットワーク接続を利用してデバイス１１８を試験することが、１５分または他の期間に制限され得る。
【００８０】
開発者１０２（またはサービスプロバイダネットワーク１１０）が、直接ネットワーク接続を中断することを要求したか、またはセッション制限時間が終了した場合、ルーチン７００は、動作７１４に進み、直接ネットワーク接続が終了する。次いで、ルーチン７００は、動作７１４から動作７１６に進み、そこでは、プログラム１０８がエミュレータ１２２またはデバイス１８８から除去される。次いで、ルーチン７００は、動作７１８に進み、そこでは、上で説明されるアクティビティログが開発者コンピュータ１０６に伝送される。動作７１８から、ルーチン７００は、動作７２０に進み、そこで終了する。
【００８１】
図８は、ネットワークに基づくプログラム試験サービスを提供し、利用するための、上で説明されるプログラム構成要素を実行することができるコンピュータ８００の例示的なコンピュータアーキテクチャを示す。図８で示されるコンピュータアーキテクチャは、従来のサーバコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップ、タブレットコンピューティングデバイス、ネットワーク機器、パーソナルデジタルアシスタント（「ＰＤＡ」）、電子ブックリーダー、デジタル携帯電話、または他のコンピューティングデバイスを例示し、また、本明細書で提示されるソフトウェア構成要素の任意の態様を実行するために利用され得る。例えば、図８で示されるコンピュータアーキテクチャは、ワークフローコーディネータ３０２、開発ブリッジ３０８、プログラム開発環境１０４、及び／または図１〜図３で示され、上で説明される他の構成要素を実行するために利用され得る。
【００８２】
コンピュータ８００は、ベースボード８０２または「マザーボード」を含み、該ベースボードは、多数の構成要素またはデバイスがシステムバスまたは他の電気通信経路を経由して接続され得る、プリント回路基板である。例示的な一実施形態では、１つ以上の中央処理ユニット（「ＣＰＵ」）８０４がチップセット８０６と連動して動作する。ＣＰＵ８０４は、コンピュータ８００の動作に必要な算術演算及び論理演算を行う、標準プログラマブルプロセッサであり得る。
【００８３】
ＣＰＵ８０４は、１つの個別の物理的状態から次の状態に、これらの状態間を区別し、変化させるスイッチング素子の操作を通じて遷移することによって動作を行う。スイッチング素子は、全般的に、２つの２進状態のうちの１つを維持するフリップフロップ等の電子回路と、１つ以上の他のスイッチング素子の状態の論理的組み合わせに基づいて出力状態を提供する論理ゲート等の電子回路とを含み得る。これらの基本的スイッチング素子は、レジスタ、加算器−減算器、算術論理ユニット、浮動小数点ユニット、及び同類のものを含む、より複雑な論理回路を作成するために組み合わせられ得る。
【００８４】
チップセット８０６は、ＣＰＵ８０４とベースボード８０２上の構成要素及びデバイスの残部との間のインターフェースを提供する。チップセット８０６は、コンピュータ８００のメインメモリとして使用されるランダムアクセスメモリ（「ＲＡＭ」）８０８へのインターフェースを提供し得る。チップセット８０６はさらに、コンピュータ８００を起動し、種々の構成要素とデバイスとの間で情報を転送するのを補助する基本的なルーチンを記憶するための、リードオンリーメモリ（「ＲＯＭ」）８１０または不揮発性ＲＡＭ（「ＮＶＲＡＭ」）等の、コンピュータ読み出し可能な記憶媒体へのインターフェースを提供し得る。ＲＯＭ８１０またはＮＶＲＡＭはまた、本明細書で説明される実施形態に従って、コンピュータ８００の動作に必要な他のソフトウェア構成要素も記憶し得る。
【００８５】
コンピュータ８００は、ローカルエリアネットワーク８２０等のネットワークを通して、リモートコンピューティングデバイス及びコンピュータシステムへの論理接続を使用する、ネットワーク化された環境で動作し得る。チップセット８０６は、ギガビットイーサネットアダプタ等のＮＩＣ８１２を通して、ネットワーク接続性を提供するための機能性を含み得る。ＮＩＣ８１２は、ネットワーク８２０を通じて、コンピュータ８００を他のコンピューティングデバイスに接続することができる。コンピュータ８００には、コンピュータを他のタイプのネットワーク及びリモートコンピュータシステムに接続する複数のＮＩＣ８１２が存在し得ることを認識されたい。
【００８６】
コンピュータ８００は、コンピュータの不揮発性記憶装置を提供する大容量記憶デバイス８１８に接続され得る。大容量記憶デバイス８１８は、本明細書でさらに詳細に説明されているシステムプログラム、アプリケーションプログラム、他のプログラムモジュール、及びデータを記憶し得る。大容量記憶デバイス８１８は、チップセット８０６に接続される記憶コントローラ８１４を通して、コンピュータ８００に接続され得る。大容量記憶デバイス８１８は、１つ以上の物理記憶ユニットで構成され得る。記憶コントローラ８１４は、シリアルアタッチドＳＣＳＩ（「ＳＡＳ」）インターフェース、シリアルアドバンストテクノロジーアタッチメント（「ＳＡＴＡ」）インターフェース、ファイバーチャネル（「ＦＣ」）インターフェース、またはコンピュータ及び物理記憶ユニットを物理的に接続し、それらの間でデータを転送するための他のタイプのインターフェースを通して、物理記憶ユニットとインターフェースし得る。
【００８７】
コンピュータ８００は、物理記憶ユニットの物理的状態を変換して、記憶される情報を反映することによって、大容量記憶デバイス８１８にデータを記憶し得る。物理的状態の具体的な変換は、本明細書の異なる実現形態において、種々の因子に依存し得る。そのような因子の例としては、物理記憶ユニットを実現するために使用される技術、大容量記憶デバイス８１８が一次記憶装置として特徴付けられるかまたは二次記憶装置として特徴付けられるか、及び同類のものが挙げられ得るが、それらに限定されない。
【００８８】
例えば、コンピュータ８００は、磁気ディスクドライブユニット内の特定の場所の磁気特性、光学記憶ユニット内の特定の場所の反射特性もしくは屈折特性、またはソリッドステート記憶ユニット内の特定のキャパシタ、トランジスタ、もしくは他の個別的な構成要素の電気特性を変更するために、記憶コントローラ８１４を通して命令を発行することによって、大容量記憶デバイス８１８に情報を記憶し得る。物理媒体の他の変換は、本明細書の範囲及び趣旨から逸脱しない範囲で可能であり、前述の例は、この説明を容易にするためにだけ提供される。コンピュータ８００はさらに、物理記憶ユニット内の１つ以上の特定の場所の物理的状態または特性を検出することによって、大容量記憶デバイス８１８から情報を読み出し得る。
【００８９】
上で説明される大容量記憶デバイス８１８に加えて、コンピュータ８００は、プログラムモジュール、データ構造、または他のデータ等の情報を記憶し、取り出すために、他のコンピュータ読み出し可能な記憶媒体へのアクセスを有し得る。当業者は、コンピュータ読み出し可能な記憶媒体を、非一時的なデータの記憶を提供し、コンピュータ８００によってアクセスされ得る、任意の利用可能な媒体とすることができることを認識されたい。
【００９０】
一例であり、限定するものではないが、コンピュータ読み出し可能な記憶媒体としては、任意の方法または技術で実現される、揮発性及び不揮発性のリムーバブル及び非リムーバブル媒体が挙げられ得る。コンピュータ読み出し可能な記憶媒体としては、ＲＡＭ、ＲＯＭ、消去可能プログラマブルＲＯＭ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブルＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリ、もしくは他の固体メモリ技術、コンパクトディスクＲＯＭ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（「ＤＶＤ」）、高解像度ＤＶＤ（「ＨＤ−ＤＶＤ」）、ブルーレイ、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または非一時的な様式で所望の情報を記憶するために使用することができる任意の他の媒体が挙げられるが、それらに限定されない。
【００９１】
大容量記憶デバイス８１８は、コンピュータ８００の動作を制御するために利用される、オペレーティングシステム８３０を記憶し得る。一実施形態によれば、オペレーティングシステムは、ＬＩＮＵＸオペレーティングシステムを含む。別の実施形態によれば、オペレーティングシステムは、ＭＩＣＲＯＳＯＦＴ  ＣｏｒｐｏｒａｔｉｏｎによるＷＩＮＤＯＷＳ（登録商標）ＳＥＲＶＥＲオペレーティングシステムを含む。さらなる実施形態によれば、オペレーティングシステムは、ＵＮＩＸ（登録商標）またはＳＯＬＡＲＩＳオペレーティングシステムを含み得る。また、他のオペレーティングシステムも利用され得ることを認識されたい。大容量記憶デバイス８１８は、ワークフローコーディネータ３０２、開発ブリッジ３０８、プログラム開発環境１０４、ならびに／または上で説明される他のソフトウェア構成要素及びデータのいずれか等の、コンピュータ８００によって利用される他のシステムまたはアプリケーションプログラム及びデータを記憶し得る。大容量記憶デバイス８１８はまた、本明細書で具体的に識別されない他のプログラム及びデータも記憶し得る。
【００９２】
一実施形態において、大容量記憶デバイス８１８または他のコンピュータ読み出し可能な記憶媒体は、コンピュータ実行可能な命令によって符号化され、該命令は、コンピュータ８００にロードされたときに、コンピュータを汎用コンピューティングシステムから、本明細書で説明される実施形態を実現することができる特殊用途コンピュータに変換する。これらのコンピュータ実行可能な命令は、上で説明されるように、ＣＰＵ８０４がどのように状態間を遷移するのかを指定することによって、コンピュータ８００を変換する。一実施形態によれば、コンピュータ８００は、コンピュータ実行可能な命令を記憶するコンピュータ読み出し可能な記憶媒体へのアクセスを有し、該命令は、コンピュータ８００によって実行されたときに、図４及び図５に関して上で説明される種々のルーチンを行う。コンピュータ８００はまた、本明細書で説明される他のコンピュータ実装の動作のいずれかを行うための、コンピュータ読み出し可能な記憶媒体を含み得る。
【００９３】
コンピュータ８００はまた、キーボード、マウス、タッチパッド、タッチ画面、電子スタイラス、または他のタイプの入力デバイス等の数多くの入力デバイスから入力を受け取り、処理するための、１つ以上の入力／出力コントローラ８１６も含み得る。同様に、入力／出力コントローラ８１６は、コンピュータモニタ、フラットパネルディスプレイ、デジタルプロジェクタ、プリンタ、プロッタ、または他のタイプの出力デバイス等のディスプレイに出力を提供し得る。コンピュータ８００は、図８で示される構成要素の全てを含まない場合があること、図８で明示的に示されない他の構成要素を含み得ること、または図８で示されるものと完全に異なるアーキテクチャを利用し得ることが認識されるであろう。
【００９４】
上記に基づいて、ネットワークに基づくプログラム試験サービスを実現し、利用するための技術が本明細書で提示されていることを認識するべきである。さらに、本明細書で提示される主題は、コンピュータの構造的特徴、方法論的な行為、及びコンピュータ読み出し可能な媒体に特有の言い回しで説明してきたが、添付の特許請求の範囲で定義される本発明は、必ずしも、本明細書で説明される具体的な特徴、行為、または媒体に限定されるものではないことを理解されたい。むしろ、具体的な特徴、行為、媒体は、特許請求の範囲を実現する例示的な形態として開示される。
【００９５】
上で説明される主題は、単なる例示の目的で提供されるものであり、限定するものとして解釈するべきではない。さらに、特許請求される主題は、本開示の任意の部分に記載される任意のまたは全ての不利な点を解決する実現形態に限定されない。例示され、説明される例示的な実施形態及び応用例に従うことなく、また、以下の特許請求の範囲に記載される本発明の真の趣旨及び範囲から逸脱することなく、本明細書で説明される主題に対して様々な修正及び変更が行われ得る。
【図１】
0006283096.tif 000002
【図２】
0006283096.tif 000003
【図３】
0006283096.tif 000004
【図４】
0006283096.tif 000005
【図５】
0006283096.tif 000006
【図６】
0006283096.tif 000007
【図７】
0006283096.tif 000008
【図８】
0006283096.tif 000009