以下の詳細な説明は、プログラム試験サービスを提供し、利用するための技術に向けられる。本明細書で説明される技術を利用すれば、サービスプロバイダは、ネットワークに基づくプログラム試験サービスを提供することができ、該サービスは、開発者が、多種多様な物理コンピューティングデバイス及び/またはデバイスエミュレータ上のプログラムの動作を試験することを許可するための機能性を含む。そのようなプログラム試験サービスの使用を通して、開発者は、スマートフォン、タブレット、及び潜在的に他のタイプのデバイス等の数多くの物理コンピューティングデバイス上のプログラムの動作を迅速に、容易に、かつ経済的に試験することができる。このタイプの試験を通して、開発者は、自分のプログラムが広範囲にわたるコンピューティングデバイス上で適切に実行する可能性を向上させ得る。
本明細書で提示される一態様によれば、ネットワークに基づくプログラム試験サービスを提供し、利用するためのコンピュータ実装の機構が開示される。一実施形態によれば、サービスプロバイダは、それに接続される種々のコンピューティングデバイスを有するホストコンピュータを含む、サービスプロバイダネットワークを動作させる。例えば、サービスプロバイダネットワークの中のホストコンピュータは、それに接続されるいくつかの数(例えば、6〜16台)のスマートフォンもしくはタブレットコンピューティングデバイス、または他のタイプのモバイルコンピューティングデバイスを有し得る。一例として、サービスプロバイダネットワークの中のホストコンピュータは、ユニバーサルシリアルバス(「USB」)接続等の適切な接続タイプを利用してそれに接続される、16台のスマートフォンを有し得る。接続したデバイスは、異なるハードウェア及び/またはソフトウェア構成を有し得る。他のタイプのデバイスも、プログラムの試験で使用するためのホストコンピュータに接続され得る。下でさらに詳細に説明されるように、開発者は、本明細書で開示される機構を利用して、サービスプロバイダネットワークの中のホストコンピュータに接続されるデバイス上のプログラムの実行を試験することができる。
いくつかの実現形態において、サービスプロバイダネットワークはまた、そこで実行するデバイスエミュレータを有するホストコンピュータも含み得る。例えば、ホストコンピュータは、仮想マシンインスタンスにおいて、いくつかの数(例えば、2つまたは3つ)のデバイスエミュレータを実行するように構成され得る。デバイスエミュレータは、異なるハードウェア及び/またはソフトウェア構成を有する、スマートフォンまたはタブレットコンピュータのようなデバイスの物理ハードウェアをエミュレートし得る。同じく下でさらに詳細に説明されるように、開発者は、本明細書で開示される機構を利用して、サービスプロバイダネットワークの中のホストコンピュータ上で実行する、デバイスエミュレータ上のプログラムの実行を試験することができる。
プログラムの動作を試験するために、開発者は、最初に、従来様式でプログラムを作成する。例えば、開発者は、適切なプログラム開発環境を利用して、プログラムを作成し得る。開発者は、次いで、プログラムの試験で使用するための1つ以上のテストケースを作成する。テストケースは、プログラムが試験されるべき様式を説明する。テストケースに関する追加的な詳細は、下で提示される。
開発者が、プログラム及びプログラムのための少なくとも1つのテストケースを作成すると、開発者には、プログラムの動作の試験で使用するための、利用可能なデバイス及び/またはデバイスエミュレータのリストが提示され得る。次いで、開発者は、プログラムの動作の試験で使用するための1つ以上のデバイス及び/またはデバイスエミュレータを選択することが許可され得る。この選択が行われると、試験要求が、サービスプロバイダネットワークの中の構成要素に提出される。試験要求は、プログラム、少なくとも1つのテストケース、及びプログラムの動作を試験するために使用されるべきデバイス及び/またはデバイスエミュレータを識別するデータを含み得る。試験要求は、ウェブポータルのウェブページ等の、サービスプロバイダネットワークにより提供されるページを通して、電子メールメッセージで、または他の様式で、プログラム開発環境を経由してサービスプロバイダネットワークに伝送され得る。
サービスプロバイダネットワークが試験要求を受け取ったときに、サービスプロバイダネットワークの中のワークフローコーディネータまたは別の構成要素は、プログラムが試験されるコンピューティングデバイス及び/またはデバイスエミュレータが使用できるかどうか(すなわち、別のプログラムの試験に使用されていないこと)を判定し得る。プログラムが試験されるデバイス及び/またはデバイスエミュレータが使用できない場合、ワークフロー構成要素は、試験に必要とされるデバイス及び/またはデバイスエミュレータが使用できるようになるまで、試験要求を待ち行列に入れさせ得る。
デバイス及び/またはデバイスエミュレータが使用できる場合、ワークフローコーディネータは、プログラムを、サービスプロバイダネットワークの中の他の構成要素と併せて、試験が行われるデバイス及び/またはデバイスエミュレータにインストールさせ得る。次いで、プログラムが、デバイス及び/またはデバイスエミュレータ上で実行され、そして、供給された1つまたは複数のテストケースが、プログラムの動作の種々の態様を試験するために利用される。試験は、多数のデバイス及び/またはデバイスエミュレータに対して同時に行われ得る。プログラムの試験中には、リアルタイム試験データも開発者に提供され得る。例えば、試験が行われているデバイスまたはデバイスエミュレータによって生成されるテキストデータまたはビデオスクリーンデータが開発者に伝送され得る。
プログラムの試験が完了すると、試験の結果が収集され、プログラムの開発者に伝送され得る。結果としては、要約結果(例えば、特定の試験に合格したか、不合格であったか)、プログラムまたはテストケースによって生成されるログファイルなどの詳細な結果、試験前、試験中、及び/または試験後に取り出される画面キャプチャ、ならびに潜在的に、試験中にデバイス及び/またはデバイスエミュレータから取り込まれるビデオが挙げられ得る。次いで、開発者は、試験結果を利用して、プログラムの動作の態様を修正する。このようにして、開発者は、上で説明される試験サービスを利用して、スマートフォンもしくはタブレット等の数多くの物理コンピューティングデバイス上の、及び/または数多くの異なるコンピューティングデバイスのためのデバイスエミュレータ上のプログラムの動作を迅速に、容易に、かつ経済的に試験することができる。ネットワークに基づくプログラム試験サービスを提供し、利用するための、上で説明される種々の構成要素及び過程に関する追加的な詳細は、図1〜図6に関して下で提示される。
本明細書で提示される主題は、コンピュータプロセス、コンピュータ制御の装置、コンピューティングシステム、またはコンピュータ読み出し可能な記憶媒体等の製造物として実現され得ることを認識されたい。本明細書で提示される主題は、1つ以上のコンピューティングデバイス上で実行するプログラムモジュールの一般的な文脈で提示されるが、当業者は、他のタイプのプログラムモジュールと組み合わせて他の実現形態が行われ得ることを認識するであろう。全般的に、プログラムモジュールは、ルーチン、プログラム、構成要素、データ構造、及び特定のタスクを行うかまたは特定の抽象データ型を実現する他のタイプの構造を含む。
当業者はまた、本明細書で説明される主題の態様は、マルチプロセッサシステム、マイクロプロセッサに基づくまたはプログラム可能な消費者電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、電子ブックリーダー、携帯電話デバイス、特殊用途ハードウェアデバイス、ネットワーク機器、及び同類のものを含む、本明細書で説明されるもの以外の、他のコンピュータシステム構成上でまたは他のコンピュータシステム構成と併せて実践され得ることも認識するであろう。上で簡潔に述べたように、本明細書に記載された実施形態は、分散型コンピューティング環境において実施され得、その環境において、タスクは、通信ネットワークを通してリンクされたリモートコンピューティングデバイスによって行われる。分散コンピューティング環境において、プログラムモジュールは、ローカル及びリモート双方のメモリ記憶デバイスの中に位置し得る。
以下の詳細な説明では、その一部を形成し、例として具体的な実施形態または実施例を示す、添付図面に対する参照が行われる。本明細書の図面は、一定の縮尺で描画されていない。複数の図面(本明細書で「図(FIG.)」または「図面(FIGS.)」と称され得る)の全体を通して、同じ数字は、同じ要素を表す。
図1は、本明細書で開示される一実施形態による、ネットワークに基づくプログラム試験サービスを利用してプログラム108の動作を試験するための、本明細書で説明される1つの実例となる機構の概要を示すネットワークアーキテクチャの図である。図1で示されるように、開発者102は、適切な開発者コンピュータ106を利用して、プログラム開発環境104を実行し得る。当技術分野で知られているように、プログラム開発環境104は、ユーザがプログラム108等のプログラムを作成すること、コンパイルすること、及び実行することを可能にする環境である。例えば、本明細書で開示される1つの例示的な実施形態において、プログラム開発環境104は、ECLIPSE FOUNDATIONによるECLIPSE統合開発環境(「IDE」)である。しかしながら、他のベンダーによる他のIDE及び他のタイプのプログラム開発環境104も、本明細書で開示される機構とともに利用され得ることを認識されたい。
一実現形態において、プログラム108は、スマートフォン、タブレットコンピューティングデバイス、電子ブックリーダーデバイス、または別のタイプのコンピューティングデバイス等のコンピューティングデバイス上で実行するように構成される、実行可能なまたは翻訳されたプログラムである。これに関して、本明細書で開示される実施形態は、主に、スマートフォンコンピューティングデバイスの文脈において提示されるが、本明細書で開示される実施形態はまた、他のタイプのコンピューティングデバイスとともに利用され得ることを認識されたい。例えば、及びこれに限定されないが、本明細書で開示される実施形態は、タブレットコンピューティングデバイス、ビデオゲームデバイス、セットトップボックスデバイス、及び他のタイプのコンピューティングデバイスとともに利用され得る。本明細書で開示される実施形態は、特定の製造業者によるスマートフォンデバイスまたはデバイスに限定されるものとして解釈されるべきではない。
様々なコンピューティングデバイスとともにプログラム108の動作を試験するために、開発者102は、ネットワーク126を経由したサービスプロバイダネットワーク110への接続を確立し得る。下でさらに詳細に説明されるように、サービスプロバイダネットワーク110は、サービスプロバイダによって動作され、また、様々なコンピューティングデバイス上でプログラム108等のプログラムを試験するための、ネットワークに基づくサービスを提供するように構成される。開発者コンピュータ106は、インターネット等の適切なネットワーク126を通して、サービスプロバイダネットワーク110に接続し得る。図1及び他の図面で例示されるネットワークトポロジは、単なる実例に過ぎないこと、及び本明細書で開示され、図面で示される種々の実施形態を実現するために、さらに多くのネットワーク、ネットワーキングデバイス、コンピューティングシステム、及びソフトウェア構成要素が利用され得ることを認識されたい。
様々なデバイス上のプログラム108を試験するために、開発者102は、最初に、指定されたデバイス上のプログラム108の動作の試験で使用するための、1つ以上のテストケース114を定義し得る。テストケース114は、プログラム108を種々のコンピューティングデバイス上で実行している間にプログラム108に対して行われるべき、1つまたは複数の試験を説明する。例えば、テストケース114は、プログラム108が試験されているデバイスに提示される、シミュレーションしたユーザ入力イベントを定義し得る。他の実現形態において、テストケース114は、外部デバイスの配向、構成の変更を定義し、及び/または外部デバイスの存在または除去をシミュレーションし得る。テストケース114はまた、プログラム108が試験されている間に擬似ランダムイベントをデバイスに送る、ストレス試験も定義する。テストケース114はまた、バッテリ寿命に対する影響、プロセッサもしくはメモリの使用量、または他の動作態様等の、プログラム108の動作の種々の態様を試験するように構成される、他のタイプの試験も定義する。ある実施形態において、サービスプロバイダはまた、開発者102が使用するための、予め定義されたテストケース114も提供し得る。例えば、予め定義されたテストケース114は、プログラム108を実行し、そして、プログラム108のストレス試験について、及び/またはプログラム108に対して他のタイプの試験を行うことについて、何らかのエラーが起こったかどうかを判定するために提供され得る。
プログラム108が試験されているデバイスがGOOGLE,INC.,によるANDROIDオペレーティングシステムに基づいているときに、テストケース114は、ANDROID機器試験フレームワークを利用して定義され得る。プログラム108を試験するために利用されるデバイスが他の製造業者によるオペレーティングシステムとともに構成されるときには、テストケース114を定義するために、他のフォーマットが利用され得る。これに関して、本明細書で説明される実施形態は、主に、ANDROIDオペレーティングシステムを利用するコンピューティングデバイス上のプログラム108を試験するという文脈で提示されるが、本明細書で提示される実施形態は、そのようなデバイスとともに使用することに限定されないことを認識されたい。例えば、本明細書で開示される実施形態は、他の製造業者による他のタイプのオペレーティングシステムを実行するデバイス上のプログラム108を試験するために利用され得る。
いくつかの実施形態では、サービスプロバイダネットワーク110を経由して提供される試験サービスとともに使用するためのテストケース114を作成する際に、開発者102を支援するために、種々の開発ツールも提供され得る。例えば、一実現形態では、開発者102がユーザインターフェースの対話を記録することを可能にする、ユーザインターフェース(「UI」)に基づくソフトウェア開発ツールが提供され得る。次いで、これらのUI対話は、サービスプロバイダネットワーク110によって提供される種々のコンピューティングデバイス上のプログラム108の機能性を試験するために利用され得る。本明細書で説明されるサービスプロバイダネットワーク110によって提供される種々のファシリティとともに利用し、対話する際に、開発者102によって使用するための、他のタイプのソフトウェアツールも提供され得ることを認識されたい。
開発者102がプログラム108及びテストケース114の作成を完了すると、開発者102は、プログラム108の動作を試験するために利用される、サービスプロバイダネットワーク110内の1つ以上のコンピューティングデバイス118を選択することを許可され得る。例えば、種々の実施形態では、利用可能なデバイス118のリストが開発者102に提示され得る。他の実現形態において、プログラムが試験される特定の1つまたは複数のデバイス118は、プログラム108の任意の分析を通して選択され得る。例えば、プログラム108が特定のオペレーティングシステムまたはデバイスタイプとともに使用するために作成された場合、この情報は、プログラム108が試験される1つまたは複数のデバイス118を選択するために利用され得る。
いくつかの実施形態において、開発者102はまた、サービスプロバイダネットワーク110によって提供されるデバイスエミュレータ122上のプログラム108の動作を試験することも許可され得る。当技術分野で知られているように、デバイスエミュレータ122は、コンピューティングデバイスのソフトウェアエミュレーションである。この機構を利用して、開発者102は、実際の物理コンピューティングデバイス118上の、及びデバイスエミュレータ122上のプログラム108の動作を同時に試験することができる。
種々の実施形態によれば、開発者102は、開発者102がプログラム108を試験することを望む、特定の1つまたは複数のデバイスを選択することができる。開発者102はまた、デバイスが実行しているオペレーティングシステムのバージョンによってデバイスを選択することも許可され得る。他の実現形態において、開発者102はまた、ハードウェアのタイプ、ソフトウェアのタイプ、またはデバイスの他の態様に基づいて試験するためのデバイスを選択することも許可され得る。例えば、開発者102は、カメラ及び特定のバージョンのANDROIDオペレーティングシステムを有するデバイス上のプログラム108の試験を要求し得る。これに関して、開発者102は、デバイスの製造業者、デバイスのタイプ、デバイスのバージョン、デバイスハードウェア、オペレーティングシステムのバージョン、他のソフトウェアのバージョン、またはデバイスの他の属性のうちの1つ以上に基づいてプログラム108の試験に使用するための、デバイス及び/またはデバイスエミュレータを選択することが許可され得ることを認識されたい。
開発者102がプログラム108を生成し、テストケース114を作成し、そして、プログラム108が試験されるべきデバイス及び/またはエミュレータを選択すると、試験要求112がサービスプロバイダネットワーク110に伝送され得る。試験要求112は、プログラム108、テストケース114、ならびにプログラム108が試験されるべきデバイス及び/またはエミュレータを識別するデータを含む。他の実施形態において、上で説明される試験要求112の種々の構成要素は、他の場所に記憶され得、これらの場所の参照は、試験要求112に含まれ得る。試験要求112における上で説明される種々のデータは、他の実現形態における他の方法でサービスプロバイダネットワーク110に提供され得る。
試験要求112を受け取ることに応じて、サービスプロバイダネットワーク110内の種々の構成要素は、指定されたデバイス及び/またはデバイスエミュレータ上で実行している間に、テストケース114によって説明される試験をプログラム108に対して行わせるように構成される。例えば、図1で示される実施例において、サービスプロバイダネットワーク110は、それに取り付けられる複数のコンピューティングデバイス118A〜118Nを有する、ホストコンピュータ116Bを含む。一実現形態において、コンピューティングデバイス118A〜118Nは、ANDROIDオペレーティングシステムを実行する、スマートフォンまたはタブレットコンピューティングデバイスの種々のモデルである。コンピューティングデバイス118A〜118Nは、USB接続等の適切な有線接続を経由して、ホストコンピュータ116Bに接続され得る。コンピューティングデバイス118A〜118Nはまた、適切な無線接続を経由しても、ホストコンピュータ116Bに接続され得る。
別の実現形態において、コンピューティングデバイス118A〜118Nは、デバイスに一意であるハードウェアだけを含む、スマートフォンデバイスである。例えば、デバイス118は、特定のモデルのモバイルコンピューティングデバイスに一意であるプロセッサ及びメモリだけを含む、開発マザーボードであり得る。種々のデバイスにわたって共通であるモバイルコンピューティングデバイスによって利用される他のハードウェアデバイスは、ホストコンピュータ116上で実行しているソフトウェアによってエミュレートされ得る。このようにして、デバイス118A〜118Nのそれぞれのコストが低減され得る。他のタイプの開発ボード及び/またはプラットフォームも、本明細書で開示される様式の試験で使用するための、サービスプロバイダネットワーク110の中のホストコンピュータ116に接続され得る。
図1で示される実施例において、サービスプロバイダネットワーク110はまた、いくつかのデバイスエミュレータ122A〜122Nを実行しているホストコンピュータ116Aも含む。デバイスエミュレータ122A〜122Nは、ホストコンピュータ116Aの物理ハードウェア上で実行している場合があり、または他の実施形態では、ホストコンピュータ116A上で実行する仮想マシン内で実行している場合がある。デバイスエミュレータ122A〜122Nを実行するための他の機構も利用され得る。
プログラム108の動作を試験するために、プログラム108は、最初に、開発者102によって指定されたコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nにインストールされる。プログラム108が適切なコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nにインストールされると、種々のコンピューティングデバイス118及び/またはデバイスエミュレータ122上のプログラム108の動作を試験するために、テストケース114を利用することができる。これらの試験は、同時に行われ得、それによって、開発者102が、複数のコンピューティングデバイス118及びデバイスエミュレータ122上のプログラム108の動作を同時に試験することを可能にすることを認識されたい。
下でさらに詳細に説明されるように、サービスプロバイダネットワーク110は、プログラム108の試験が行われている間に、リアルタイム試験データを開発者102に提供し得る。例えば、試験の種々の態様を説明するテキストデータが、開発者コンピュータ106に提供され得る。他の実現形態では、コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nによる表示出力が、プログラム108の試験が行われている間に、開発者コンピュータ106に提供され得る。他のタイプのデータも、開発者102が使用するための指定された試験の実行中に、開発者コンピュータ106に提供され得る。
プログラム108の試験が完了したときに、サービスプロバイダネットワーク110は、試験結果124を開発者コンピュータ106に伝送するように構成される。下でさらに詳細に説明されるように、試験結果124は、試験が行われた各コンピューティングデバイス118A〜118N及びデバイスエミュレータ122A〜122Nに関する情報を含み得る。試験結果124は、試験の結果を要約し得、及び/または試験の実行に関するより詳細な情報を提供し得る。例えば、試験結果124は、試験の成功または失敗を説明することができ、試験の実行中に収集されたコンピューティングデバイス118及び/またはデバイスエミュレータ122からのログ及び/または他の情報を提供し得、また、他の実施形態では、他の情報を提供し得る。下でもさらに詳細に説明されるように、試験結果124は、試験の実行中に、コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nから取り込まれる画面表示も含み得る。試験結果124はまた、他の実施形態において、他の情報も含み得る。
開発者102が試験結果124を受け取ると、開発者102は、試験結果124を利用して、プログラム108の動作を修正し得る。開発者102は、次いで、上で説明される試験サービスを繰り返し利用して、プログラム108の動作の試験を継続し得る。開発者コンピュータ106上の、及びサービスプロバイダネットワーク110内の種々の構成要素の動作に関する追加的な詳細は、図2〜図5に関して下で提供される。
図2は、本明細書で開示される一実施形態による、プログラム108の動作を試験する試験要求112をプログラム試験サービスに提供するための、本明細書で説明される1つの実例となる機構の態様を示すネットワークアーキテクチャの図である。上で簡潔に説明されるように、開発者102は、開発者コンピュータ106上の種々のソフトウェア構成要素を利用して、試験要求112を上で説明されるサービスプロバイダネットワーク110に伝送し得る。図2は、種々の実施形態において試験要求112をサービスプロバイダネットワーク110に提出するために利用され得る、種々の構成要素に関する追加的な態様を提供する。
一実現形態において、プログラム開発環境104に対するプラグイン201は、サービスプロバイダネットワーク110への試験要求112Aの提出のために提供される。プラグイン201は、プログラム開発環境104内で実行され得、また、プログラム108の動作の試験で使用するための利用可能なコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nのリストを提示するための機能性を提供する。開発者102がプログラム108の動作の試験で使用するためのコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nを選択すると、プラグイン201は、試験要求112Aをサービスプロバイダネットワーク110に伝送し得る。
図2で示され、上で簡潔に説明されるように、試験要求112Aは、試験されるプログラム108と、どのように試験が起こるべきかを説明する1つ以上のテストケース114と、試験が行われるべきコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nを識別するデータ202とを含む。上で述べられるように、プログラム108及び/またはテストケース114の参照は、実際のプログラム108及びテストケース114ではなく、試験要求112Aにおいて提供され得る。プログラム108及びテストケース114をサービスプロバイダネットワーク110に供給するために、他の機構も利用され得る。
別の実現形態において、サービスプロバイダネットワーク110は、ウェブポータル206または別のタイプの情報ページを提供するように構成され、開発者102は、それを通して試験要求112を伝送することができる。例えば、図2で示される実施例において、サービスプロバイダネットワーク110は、ウェブポータル206を提供するように構成され、開発者102は、それを通して試験要求112Bを伝送することができる。同じく図2で例示されるように、ウェブポータル206にアクセスし、試験要求112Bを伝送するために、ウェブブラウザプログラム204または他の適切なプログラムが利用され得る。ウェブポータル206はまた、開発者102が、プログラム108が試験されるべきコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nを指定することを可能にするための機能性も含み得る。
さらに別の実現形態において、開発者102は、開発者コンピュータ106上で実行する電子メールプログラム208を利用して、試験要求112Cを含む電子メールメッセージ210を作成し、伝送し得る。試験に利用するためのプログラム108、テストケース114、ならびにコンピューティングデバイス118及び/またはデバイスエミュレータ122を識別するデータ202は、電子メールメッセージ210に添付され得る。代替として、電子メールメッセージ210は、プログラム108、テストケース114、ならびにプログラム108の動作を試験するために利用されるべきコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nを識別するデータ202のネットワークロケーションの参照を含み得る。
図2に関して説明される機構は、単なる実例に過ぎないことを認識されたい。他の実現形態では、開発者102が、プログラム108を試験するためのサービスを提供するサービスプロバイダネットワーク110に試験要求112を伝送することを可能にするために、他の機構が利用され得る。図2で示される機構は、単なる実例に過ぎず、本明細書に添付される特許請求の範囲は、これらの特定の機構に限定されるべきではない。
図3は、本明細書で開示される一実施形態による、プログラム108の動作を試験するための、及び試験に続いて試験結果124を要求者に返すための、本明細書で説明される1つの実例となる機構の態様を示すネットワークアーキテクチャの図である。図3で示され、上で簡潔に説明されるように、サービスプロバイダネットワーク110は、プログラム108の動作を試験するための、ネットワークに基づくサービスを提供する。上で述べられるように、プログラム108は、試験要求112において、または別の様式において、サービスプロバイダネットワーク110に提出され得る。
一実現形態において、サービスプロバイダネットワーク110内のワークフローコーディネータ302は、試験要求112を受け取る。本明細書においてさらに詳細に説明されるように、ワークフローコーディネータ302は、試験要求112をサービスプロバイダネットワーク110内のホストコンピュータ116A〜116Cに割り当てるように構成される、構成要素である。ワークフローコーディネータ302はまた、種々のホストコンピュータ116A〜116Cから試験結果124を受け取り、そして、試験結果124を、試験要求112を提出した開発者コンピュータ106に提供し得る。試験結果124に関する詳細は、下で提供される。
試験要求112を受け取ることに応じて、ワークフローコーディネータ302は、一実施形態において、試験要求112において要求されたコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A0〜122Nが、プログラム108の試験で使用するために利用できるかどうかを判定するように構成される。要求されたコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nが利用できない場合、ワークフローコーディネータ302は、待ち行列構成要素304を利用して、試験要求112を待ち行列に入れる、要求されたコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nが利用できるようになる。いくつかの実現形態では、コンピューティングデバイス118A〜118Nまたはデバイスエミュレータ122A〜122Nのいずれかが利用できない場合に、試験要求112によって要求される試験の全てが待ち行列に入れられ得る。他の実施形態では、コンピューティングデバイス118A〜118Nが利用できなくなること、及び/またはデバイスエミュレータ122A〜122Nが利用できなくなることが予定される、試験要求112によって要求される試験だけが待ち行列に入れられ得る。他の実現形態では、試験要求112を待ち行列に入れるための他の機構も利用され得る。
プログラム108の試験が行われるコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nが利用可能である場合、ワークフローコーディネータ302は、ホストコンピュータ116A〜116C上で実行するワークフロークライアント306に試験要求112を伝送する。例えば、試験要求112が、コンピューティングデバイス118A上で実行している間にプログラム108に対して試験を行わなければならないことを示す場合、ワークフローコーディネータ302は、ホストコンピュータ116B上で実行するワークフロークライアント306に試験要求112を伝送し得る。同様の様式で、試験要求112が、試験がデバイスエミュレータ122Aを使用して行われることを示す場合、ワークフローコーディネータ302は、ホストコンピュータ116A上で実行するワークフロークライアント306に試験要求112を伝送し得る。
ホストコンピュータ116A〜116Cのそれぞれの上で実行するワークフロークライアント306は、ワークフローコーディネータ302から試験要求112を受け取るように構成される。試験要求112を受け取ることに応じて、ワークフロークライアント306は、開発ブリッジ308に、試験されるコンピューティングデバイス118またはデバイスエミュレータ122上にプログラム108をインストールさせる。開発ブリッジ308は、接続したコンピューティングデバイス118またはデバイスエミュレータ122と対話するための機構を提供する。1つの特定の実現形態において、開発ブリッジ308は、ANDROIDデバッグブリッジである。ANDROIDデバッグブリッジは、コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122NがANDROIDオペレーティングシステムを利用するときに利用される。また、他の製造業者による他のオペレーティングシステムとともに構成されるコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nが、プログラム108の動作を試験するために利用されるときには、他のタイプのブリッジも利用され得る。
試験されるプログラム108が、試験が起こるべきコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nにインストールされると、プログラム108の動作を試験するために、試験要求112とともに提出されるテストケース114が利用される。図1に関して上で説明されるように、テストケース114は、ターゲットコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122N上のプログラム108の種々の態様、動作を試験し得る。例えば、テストケース114は、ユーザがプログラム108と対話する能力を試験し、キー押し等のユーザアクションをプログラム108に送り、コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nの配向の変化を模倣し、プログラム108で使用される異なる変数に対してプログラム的にアサートし、プログラム108によってUI要素において異なって表示されるテキストを検証及び/またはアサートし、また、他の種類の試験を提供し得る。
1つの特定の実現形態において、ホストコンピュータ116A〜116Cは、プログラム108の試験が行われている間に、リアルタイム試験データ318を開発者コンピュータ106に伝送するように構成される。例えば、いくつかの実現形態において、リアルタイム試験データ318は、特定のコンピューティングデバイス118A〜118Nまたはデバイスエミュレータ122A〜122N上のプログラム108の進行中の試験を説明するテキストデータを含む。他の実現形態において、リアルタイム試験データ318は、試験に利用されるコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nのうちの1つによって生成されるビデオ表示出力を含み得る。次いで、開発者102が視聴するために、リアルタイム試験データ318が開発者コンピュータ106上に提示され得る。このようにして、開発者102は、コンピューティングデバイス118A〜118Nまたはデバイスエミュレータ122A〜122N上のプログラム108のリアルタイム動作試験を閲覧することができる。複数の試験が同時に行われているときには、開発者102が、リアルタイム試験データ318が表示されるコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nを選択することを可能にする機構が開発者コンピュータ106において利用され得る。
コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122N上のプログラム108の試験が完了すると、ホストコンピュータ116A〜116Cのそれぞれが、試験結果124をワークフローコーディネータ302に提供する。次に、ワークフローコーディネータ302が、試験結果124を開発者コンピュータ106に提供する。図3で示されるように、試験結果124は、結果要約310を含み得、該結果要約は、特定の試験に合格したか、不合格であったかを示す。試験結果124はまた、コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nに対する試験の実行に関する詳細な情報を含む、詳細な結果312も含み得る。例えば、詳細な結果312は、コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122N上のプログラム108の試験中に、コンピューティングデバイス118、エミュレータ122、及び/または開発ブリッジ308によって生成される、ログファイル及び/または他の詳細な結果を含み得る。
いくつかの実現形態において、試験結果124はまた、プログラム108の試験中に、コンピューティングデバイス118及び/またはデバイスエミュレータ122上に取り込まれる、1つ以上の画面キャプチャ314も含む。同様に、試験結果124はまた、プログラム108の試験の全部または一部分の間に、コンピューティングデバイス118及び/またはデバイスエミュレータ122から取り込んだビデオ316も含み得る。これに関して、図3で例示される試験結果124の内容が単なる実例に過ぎないこと、及び他のタイプの情報が試験結果124において提供され得ることを認識されたい。
試験結果124を開発者102に提示するために、適切な機能性も開発者コンピュータ106で提供され得る。試験結果124を利用することで、開発者102は、プログラム開発環境104を利用して、プログラム108に変更を行うことができる。開発者102は、次いで、上で説明される様式での継続的な試験のために、プログラム108をサービスプロバイダネットワーク110に再提出し得る。
図4は、本明細書で開示される一実施形態による、ネットワークに基づくプログラムサービスがプログラム108を試験するよう要求するための、及びプログラム108の試験の結果124を受け取り、提示するための、開発者コンピュータ106の動作の態様を例示する1つの実例となるルーチン400を示すフロー図である。図4及び他の図面に関して本明細書で説明される論理動作は、(1)コンピューティングシステム上で動作する一連のコンピュータ実装の行為またはプログラムモジュールとして、及び/または(2)コンピューティングシステム内の相互接続した機械論理回路または回路モジュールとして実現され得ることを認識されたい。
本明細書で説明される種々の構成要素の実現形態は、コンピューティングシステムの性能及び他の要件に依存して選択できる事柄である。故に、本明細書で説明される論理演算は、動作、構造デバイス、行為、またはモジュールと様々に称される。これらの動作、構造デバイス、行為、及びモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、及びそれらの任意の組み合わせで実現され得る。また、図面で示され、本明細書で説明されるよりも多いまたは少ない動作が行われ得ることも認識されたい。これらの動作はまた、並列に、または本明細書で説明される順序と異なる順序でも行われ得る。
ルーチン400は、動作402から始まり、そこでは、プログラム108を開発するために、ファシリティが開発者コンピュータ106に提供される。上で説明されるように、プログラム開発環境104は、プログラム108を開発するために種々の実施形態において利用され得る。同じく上で簡潔に述べられるように、プログラム108の動作を試験するために利用すべきテストケース114を定義するために、ファシリティも開発者コンピュータ106に提供され得る。これは、ルーチン400の動作404で起こる。
開発者102がプログラム108及びテストケース114を開発すると、サービスプロバイダネットワーク110を通してプログラム108の動作の試験で使用するために利用できるコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nのリストが提示され得る。上で述べられるように、そのようなリストは、プログラム開発環境104において提供されるプラグイン201を通して、またはサービスプロバイダネットワーク110によって提供されるウェブポータル206を通して提示され得る。また、プログラム108の動作を試験するための利用可能なコンピューティングデバイス118A〜118N及びデバイスエミュレータ122A〜122Nのリストを提供するために、他の機構も利用され得る。
動作406から、ルーチン400は、動作408に進み、そこでは、プログラム108の動作の試験に使用するためのコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nの選択を開発者102から受け取る。それに応じて、ルーチン400は、動作410に進み、そこでは、試験要求112がサービスプロバイダネットワーク110に伝送される。上で論じられるように、試験要求112は、プログラム108またはプログラム108の参照と、テストケース114と、試験が起こるべきコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nを識別するデータとを含み得る。
動作410から、ルーチン400は、動作412に進み、そこでは、開発者コンピュータ106が、サービスプロバイダネットワーク110からリアルタイム試験データ318を受け取り得る。上で説明されるように、リアルタイム試験データ318は、プログラム108の試験中に、ホストコンピュータ116によって生成されるテキストまたはグラフィック画像を含み得る。リアルタイム試験データ318を開発者102に提示するために、プラグイン201またはウェブブラウザプログラム204等の開発者コンピュータ106上の適切な構成要素が利用され得る。
動作412から、ルーチン400は、動作414に進み、そこでは、サービスプロバイダネットワーク110に関してプログラム108の試験が完了したかどうかについて判定が行われる。試験が完了していない場合、ルーチン400は、動作412に戻り、そこでは、リアルタイム試験データ318が開発者102に継続的に提示され得る。試験が完了した場合、ルーチン400は、動作414から動作416に進む。
動作416で、開発者コンピュータ106は、試験結果124を受け取り、提示する。上で論じられるように、試験結果124は、種々の実施形態において、結果要約310、詳細な結果312、画面キャプチャ314、及び/またはビデオ316を含み得る。試験結果124を開発者102に提示するために、プラグイン201またはウェブブラウザプログラム204等の、開発者コンピュータ106上で実行する適切な構成要素が利用され得る。動作416から、ルーチン400は、動作418に進み、そこで終了する。
図5は、本明細書で開示される一実施形態による、プログラム108の動作を試験するための、及び試験の結果124を提供するための、サービスプロバイダネットワーク110の中の構成要素の動作の態様を例示する1つの実例となるルーチン500を示すフロー図である。ルーチン500は、動作502から始まり、そこでは、サービスプロバイダネットワーク110が試験要求112を受け取る。試験要求112を受け取ることに応じて、ワークフローコーディネータ302またはサービスプロバイダネットワーク110内の別の構成要素は、要求されたコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nが、プログラム108の試験で使用するために利用できるかどうかを判定する。要求されたコンピューティングデバイス118及び/またはデバイスエミュレータ122が利用できない場合、ルーチン500は、動作506に進み、そこでは、試験要求112が待ち行列に入れられ得る。上で論じられるように、要求されたコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nが利用できるようになるまで、試験要求112を待ち行列に入れるために、待ち行列構成要素304がサービスプロバイダネットワーク110に提供され得る。
動作504で、ワークフローコーディネータ302が、要求されたコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nが利用できると判定した場合、ルーチン500は、動作504から動作508に進む。動作508で、ワークフローコーディネータ302は、プログラム108を含む試験要求112を、試験が起こるべきコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nをホストするホストコンピュータ116A〜116Cに提供する。次いで、ルーチン500は、動作510に進み、そこでは、それぞれのホストコンピュータ116上の開発ブリッジ308が、試験が起こるコンピューティングデバイス118及び/またはデバイスエミュレータ122上にプログラム108をインストールする。
プログラム108がインストールされると、ルーチン500は、動作512に進み、そこでは、試験要求112によって指定されるコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122N上のプログラム108の動作を試験するために、試験要求112とともに提供されるテストケース114が利用される。上で述べられるように、リアルタイム試験データ318は、プログラム108の試験中に、開発者コンピュータ106に伝送され得る。これは、動作514で起こる。
動作514から、ルーチン500は、動作516に進み、そこでは、プログラム108の試験が完了したかどうかについて判定が行われる。試験が完了していない場合、ルーチン500は、動作514に戻り、そこでは、サービスプロバイダネットワーク110が、上で説明される様式で、リアルタイム試験データ318の開発者コンピュータ106への伝送を継続し得る。しかしながら、プログラム108の試験が完了した場合は、サービスプロバイダネットワーク110が試験結果124を生成する。上で述べられるように、試験結果124は、種々の実施形態において、結果要約310、詳細な結果312、画面キャプチャ314、及び/またはビデオ316を含み得る。試験結果124はまた、本明細書で具体的に言及されない他のデータも含み得る。
動作518から、ルーチン500は、動作520に進み、そこでは、試験結果124が、開発者102への提示、または別の様式での使用のために、開発者コンピュータ106に伝送される。試験結果124が開発者コンピュータ106に伝送されると、試験が起こったコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122をリセットするために、開発ブリッジ308等のサービスプロバイダネットワーク110内の構成要素が利用される。このようにして、コンピューティングデバイス118及び/またはデバイスエミュレータ122は、将来の試験のために、ベースライン状態に置くことができる。動作522から、ルーチン500は、動作524に進み、そこで終了する。
いくつかの実施形態において、上で説明される試験の結果は、将来の使用のために、開発者102によって記憶され得る。例えば、試験結果124は、サービスプロバイダネットワーク110に、開発者コンピュータ106に、または別の場所に記憶され得る。また、開発者102が、記憶した試験結果124をレビューすることを可能にするための機構も提供され得る。例えば、以前に生成され、記憶した試験結果124をレビューするための、ウェブポータルまたは他のタイプの適切なユーザインターフェースが提供され得る。
本明細書で開示される実施形態は、主に、プログラム108を試験する文脈において提示されるが、本明細書で開示される実施形態は、他のタイプの試験のために利用され得ることを認識されたい。例えば、1つの特定の実現形態において、上で説明される試験サービスは、ウェブページを試験するために利用され得る。そのような実現形態において、試験されるウェブページは、コンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nのうちの1つ以上で実行するウェブブラウザアプリケーションによってロードされ得る。次いで、適切なテストケース114を利用して、ウェブページのレンダリング及び動作が試験され得る。次いで、上で説明される様式で、試験結果124が提供され得る。
図6で示され、図7に関して下でさらに詳細に説明される別の実現形態において、開発者コンピュータ106は、プログラム108の動作の試験で使用するためのコンピューティングデバイス118A〜118N及び/またはデバイスエミュレータ122A〜122Nへの直接ネットワーク接続を確立するように構成され得る。そのような接続を通して、開発者102は、デバイス118またはエミュレータ122と対話して、デバイス118またはエミュレータ122上のプログラム108の動作を試験するためのユーザ入力604を提供することができる。開発者102はまた、エミュレータ122またはデバイス118によって生成される表示出力606を閲覧することもできる。
図6で示される実施形態において、プログラム開発環境104、プログラム開発環境104に対するプラグイン、または開発者コンピュータ106上で実行する別のプログラムは、直接接続要求602をサービスプロバイダネットワーク110に伝送して、コンピューティングデバイス118A〜118Nのうちの1つまたはデバイスエミュレータ122A〜122Nのうちの1つへの直接ネットワーク接続を確立するように構成され得る。そのような要求602を受け取ることに応じて、要求されたエミュレータ122またはデバイス118をホストするホストコンピュータ116Aまたは116Bは、直接接続が要求されたエミュレータ122またはデバイス118が利用できるかどうかを判定し得る。
直接接続が要求されたエミュレータ122またはデバイス118が利用できない場合、直接ネットワーク接続を確立する要求602は、拒否され得る。例えば、図6で示される実施形態において、要求602は、開発者コンピュータ106とデバイス118Nとの間に直接ネットワーク接続を確立することである。この事例において、デバイス118Nが別の開発者によって使用中であるか、または別の理由で利用できない場合、要求602は、拒否され得る。この事例では、要求602が待ち行列に入れられ得るか、または、開発者102が後でもう一度要求602を再提出するように指示される。
要求されたエミュレータ122またはデバイス118が利用できる場合は、適切なネットワークプロトコルを利用して、要求されたエミュレータ122またはデバイス118と開発者コンピュータ106との間に直接ネットワーク接続が確立され得る。そのような直接ネットワーク接続を使用することで、開発者102は、エミュレータ122またはデバイス118と直接対話して、プログラム108の動作の態様を試験するか、または他のタイプの動作を行うことができる。例えば、図6で示される実施例では、開発者コンピュータ106とデバイス118Nとの間に直接ネットワーク接続が確立されている。この実施形態において、開発者102は、タッチ画面入力、キーボード入力、及び他のタイプの入力等のユーザ入力604を、開発者コンピュータ106に提供することができる。
次いで、受け取ったユーザ入力604は、直接ネットワーク接続を通じてデバイス118Nに伝送される。次いで、開発者102が、開発者コンピュータ102ではなく、あたかもデバイス118Nに直接ユーザ入力604を行ったかのように、ユーザ入力604がデバイス118Nに提示される。このようにして、開発者102は、あたかも開発者102がデバイス118Nと物理的に同じ場所に配置されているかのように、デバイス118Nを利用することができる。特に、開発者102は、この機構を利用して、デバイス118N上のプログラム108の動作を利用すること、及び試験することができる。
図6で示される実施形態において、直接ネットワーク接続が確立されたエミュレータ122またはデバイス118はまた、エミュレータ122またはデバイス118の表示出力606を開発者コンピュータ106に伝送するようにも構成され得る。エミュレータ122またはデバイス118の音声出力も、同様の様式で伝送され得る。エミュレータ122またはデバイス118の表示出力606及び/または音声出力を伝送するために、仮想ネットワークコンピューティング(「VNC」)プロトコル、リモートデスクトッププロトコル(「RDP」)または別の適切なプロトコル等の、種々のプロトコルが利用され得る。
次いで、開発者コンピュータ106は、接続したエミュレータ122またはデバイス118の表示出力606を受け取り、提示し得る。例えば、図6で示される実施例において、デバイス118Nは、開発者102への表示のために、その表示出力606を開発者コンピュータ106に伝送している。このようにして、開発者102は、ユーザ入力604に応じて、デバイス118Nの出力を閲覧することができる。したがって、開発者102は、エミュレータ122またはデバイス118が開発者コンピュータ106にローカルであった場合と本質的に同じ様式で、サービスプロバイダネットワーク110の中で動作している、エミュレータ122またはデバイス118上のプログラム108の動作を試験することができる。この過程に関する追加的な詳細は、図7に関して下で提供される。
図7は、本明細書で開示される一実施形態による、プログラム108の動作を試験するために、開発者コンピュータ106等のコンピューティングデバイスと、サービスプロバイダネットワーク110の中のエミュレータ122またはデバイス118との間の直接ネットワーク接続を利用するための、本明細書で開示される1つの実例となるルーチン700の態様を示すフロー図である。ルーチン700は、動作702から始まり、そこでは、開発者コンピュータ106が、直接接続要求602を、サービスプロバイダネットワーク110の中のホストコンピュータ116B等の構成要素に伝送する。直接接続要求602は、直接ネットワーク接続が要求される特定のエミュレータ122またはデバイス118を識別するデータを含み得る。
動作702から、ルーチン700は、動作704に進み、そこでは、開発者コンピュータ106が、直接接続要求602が許可されたかどうかを判定する。要求602が許可されなかった場合、ルーチン700は、動作716に進み、そこで終了する。しかしながら、直接接続要求602が許可された場合、ルーチン700は、動作706から動作708に進む。
動作708で、開発者コンピュータ106は、直接ネットワーク接続を確立する、サービスプロバイダネットワーク110の中の要求されたエミュレータ122またはデバイス118。例えば、サービスプロバイダネットワーク110は、要求602に応じて、エミュレータ122またはデバイス118のネットワークアドレスを開発者コンピュータ106に提供し得る。提供されたネットワークアドレスを利用することで、開発者コンピュータ106は、適切なネットワーク通信プロトコルを利用して、要求されたエミュレータ122またはデバイス188への直接ネットワーク接続を確立し得る。
直接ネットワーク接続が確立されると、ルーチン700は、動作706から動作707に進み、そこでは、試験されるプログラム108が、直接ネットワーク接続が確立されたエミュレータ122またはデバイス188にロードされ得る。プログラム108がインストールされると、プログラム108の実行が開始される。次いで、ルーチン700は、動作707から動作708に進む。
動作708では、開発者コンピュータ106が、開発者102または他のユーザからユーザ入力604を受け取る。次いで、開発者コンピュータ106は、ユーザ入力604を、接続したエミュレータ122またはデバイス118に伝送する。上で述べられるように、次いで、あたかもユーザ入力604がエミュレータ122またはデバイス118にローカルに行われたかのように、ユーザ入力604が、接続したエミュレータ122またはデバイス118に提示され得る。
動作708から、ルーチン700は、動作710に進み、そこでは、接続したエミュレータ122またはデバイス118が、表示出力606を生成し、表示出力606を開発者コンピュータ106に伝送する。例えば、表示出力606は、特定のエミュレータ122またはデバイス118上で実行するプログラム108によって作成され得る。上で述べられるように、表示出力606は、VNCまたはRDP等の適切なプロトコルを利用してフォーマットされ得る。次いで、動作710で、開発者コンピュータ106が表示出力606を受け取り、表示出力606を表示する。上で述べられるように、接続したエミュレータ122またはデバイス118はまた、類似する様式で、開発者コンピュータ106による再生のために、音声を開発者コンピュータ106に伝送し得る。
動作710から、ルーチン700は、動作711に進み、そこでは、上で説明される様式で、エミュレータ122またはデバイス188に対して行われるアクティビティが記録され得る。アクティビティログからのデータは、直接ネットワーク接続が利用されている間に、または(下で説明される動作718での)直接接続セッションに続いて、リアルタイムで開発者102に提供され得る。
動作711から、ルーチン700は、動作712に進み、そこでは、開発者コンピュータ106が、開発者102がエミュレータ122またはデバイス118への直接ネットワーク接続の終了を要求したかどうかを判定する。開発者102が、直接ネットワーク接続の終了を要求した場合、ルーチン700は、動作708に戻り、そこでは、ユーザ入力604が、接続したエミュレータ122またはデバイス118に継続的に提供され得、そして、動作710に進み、そこでは、接続したエミュレータ122またはデバイス118によって生成された表示出力606が、開発者コンピュータ106で継続的に受け取られ、提示され得る。いくつかの実施形態において、直接ネットワーク接続は、ある期間に時間制限され得る。例えば、開発者102は、上で説明される様式で直接ネットワーク接続を利用してデバイス118を試験することが、15分または他の期間に制限され得る。
開発者102(またはサービスプロバイダネットワーク110)が、直接ネットワーク接続を中断することを要求したか、またはセッション制限時間が終了した場合、ルーチン700は、動作714に進み、直接ネットワーク接続が終了する。次いで、ルーチン700は、動作714から動作716に進み、そこでは、プログラム108がエミュレータ122またはデバイス188から除去される。次いで、ルーチン700は、動作718に進み、そこでは、上で説明されるアクティビティログが開発者コンピュータ106に伝送される。動作718から、ルーチン700は、動作720に進み、そこで終了する。
図8は、ネットワークに基づくプログラム試験サービスを提供し、利用するための、上で説明されるプログラム構成要素を実行することができるコンピュータ800の例示的なコンピュータアーキテクチャを示す。図8で示されるコンピュータアーキテクチャは、従来のサーバコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップ、タブレットコンピューティングデバイス、ネットワーク機器、パーソナルデジタルアシスタント(「PDA」)、電子ブックリーダー、デジタル携帯電話、または他のコンピューティングデバイスを例示し、また、本明細書で提示されるソフトウェア構成要素の任意の態様を実行するために利用され得る。例えば、図8で示されるコンピュータアーキテクチャは、ワークフローコーディネータ302、開発ブリッジ308、プログラム開発環境104、及び/または図1〜図3で示され、上で説明される他の構成要素を実行するために利用され得る。
コンピュータ800は、ベースボード802または「マザーボード」を含み、該ベースボードは、多数の構成要素またはデバイスがシステムバスまたは他の電気通信経路を経由して接続され得る、プリント回路基板である。例示的な一実施形態では、1つ以上の中央処理ユニット(「CPU」)804がチップセット806と連動して動作する。CPU804は、コンピュータ800の動作に必要な算術演算及び論理演算を行う、標準プログラマブルプロセッサであり得る。
CPU804は、1つの個別の物理的状態から次の状態に、これらの状態間を区別し、変化させるスイッチング素子の操作を通じて遷移することによって動作を行う。スイッチング素子は、全般的に、2つの2進状態のうちの1つを維持するフリップフロップ等の電子回路と、1つ以上の他のスイッチング素子の状態の論理的組み合わせに基づいて出力状態を提供する論理ゲート等の電子回路とを含み得る。これらの基本的スイッチング素子は、レジスタ、加算器−減算器、算術論理ユニット、浮動小数点ユニット、及び同類のものを含む、より複雑な論理回路を作成するために組み合わせられ得る。
チップセット806は、CPU804とベースボード802上の構成要素及びデバイスの残部との間のインターフェースを提供する。チップセット806は、コンピュータ800のメインメモリとして使用されるランダムアクセスメモリ(「RAM」)808へのインターフェースを提供し得る。チップセット806はさらに、コンピュータ800を起動し、種々の構成要素とデバイスとの間で情報を転送するのを補助する基本的なルーチンを記憶するための、リードオンリーメモリ(「ROM」)810または不揮発性RAM(「NVRAM」)等の、コンピュータ読み出し可能な記憶媒体へのインターフェースを提供し得る。ROM810またはNVRAMはまた、本明細書で説明される実施形態に従って、コンピュータ800の動作に必要な他のソフトウェア構成要素も記憶し得る。
コンピュータ800は、ローカルエリアネットワーク820等のネットワークを通して、リモートコンピューティングデバイス及びコンピュータシステムへの論理接続を使用する、ネットワーク化された環境で動作し得る。チップセット806は、ギガビットイーサネットアダプタ等のNIC812を通して、ネットワーク接続性を提供するための機能性を含み得る。NIC812は、ネットワーク820を通じて、コンピュータ800を他のコンピューティングデバイスに接続することができる。コンピュータ800には、コンピュータを他のタイプのネットワーク及びリモートコンピュータシステムに接続する複数のNIC812が存在し得ることを認識されたい。
コンピュータ800は、コンピュータの不揮発性記憶装置を提供する大容量記憶デバイス818に接続され得る。大容量記憶デバイス818は、本明細書でさらに詳細に説明されているシステムプログラム、アプリケーションプログラム、他のプログラムモジュール、及びデータを記憶し得る。大容量記憶デバイス818は、チップセット806に接続される記憶コントローラ814を通して、コンピュータ800に接続され得る。大容量記憶デバイス818は、1つ以上の物理記憶ユニットで構成され得る。記憶コントローラ814は、シリアルアタッチドSCSI(「SAS」)インターフェース、シリアルアドバンストテクノロジーアタッチメント(「SATA」)インターフェース、ファイバーチャネル(「FC」)インターフェース、またはコンピュータ及び物理記憶ユニットを物理的に接続し、それらの間でデータを転送するための他のタイプのインターフェースを通して、物理記憶ユニットとインターフェースし得る。
コンピュータ800は、物理記憶ユニットの物理的状態を変換して、記憶される情報を反映することによって、大容量記憶デバイス818にデータを記憶し得る。物理的状態の具体的な変換は、本明細書の異なる実現形態において、種々の因子に依存し得る。そのような因子の例としては、物理記憶ユニットを実現するために使用される技術、大容量記憶デバイス818が一次記憶装置として特徴付けられるかまたは二次記憶装置として特徴付けられるか、及び同類のものが挙げられ得るが、それらに限定されない。
例えば、コンピュータ800は、磁気ディスクドライブユニット内の特定の場所の磁気特性、光学記憶ユニット内の特定の場所の反射特性もしくは屈折特性、またはソリッドステート記憶ユニット内の特定のキャパシタ、トランジスタ、もしくは他の個別的な構成要素の電気特性を変更するために、記憶コントローラ814を通して命令を発行することによって、大容量記憶デバイス818に情報を記憶し得る。物理媒体の他の変換は、本明細書の範囲及び趣旨から逸脱しない範囲で可能であり、前述の例は、この説明を容易にするためにだけ提供される。コンピュータ800はさらに、物理記憶ユニット内の1つ以上の特定の場所の物理的状態または特性を検出することによって、大容量記憶デバイス818から情報を読み出し得る。
上で説明される大容量記憶デバイス818に加えて、コンピュータ800は、プログラムモジュール、データ構造、または他のデータ等の情報を記憶し、取り出すために、他のコンピュータ読み出し可能な記憶媒体へのアクセスを有し得る。当業者は、コンピュータ読み出し可能な記憶媒体を、非一時的なデータの記憶を提供し、コンピュータ800によってアクセスされ得る、任意の利用可能な媒体とすることができることを認識されたい。
一例であり、限定するものではないが、コンピュータ読み出し可能な記憶媒体としては、任意の方法または技術で実現される、揮発性及び不揮発性のリムーバブル及び非リムーバブル媒体が挙げられ得る。コンピュータ読み出し可能な記憶媒体としては、RAM、ROM、消去可能プログラマブルROM(「EPROM」)、電気的消去可能プログラマブルROM(「EEPROM」)、フラッシュメモリ、もしくは他の固体メモリ技術、コンパクトディスクROM(「CD−ROM」)、デジタル多用途ディスク(「DVD」)、高解像度DVD(「HD−DVD」)、ブルーレイ、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または非一時的な様式で所望の情報を記憶するために使用することができる任意の他の媒体が挙げられるが、それらに限定されない。
大容量記憶デバイス818は、コンピュータ800の動作を制御するために利用される、オペレーティングシステム830を記憶し得る。一実施形態によれば、オペレーティングシステムは、LINUXオペレーティングシステムを含む。別の実施形態によれば、オペレーティングシステムは、MICROSOFT CorporationによるWINDOWS(登録商標)SERVERオペレーティングシステムを含む。さらなる実施形態によれば、オペレーティングシステムは、UNIX(登録商標)またはSOLARISオペレーティングシステムを含み得る。また、他のオペレーティングシステムも利用され得ることを認識されたい。大容量記憶デバイス818は、ワークフローコーディネータ302、開発ブリッジ308、プログラム開発環境104、ならびに/または上で説明される他のソフトウェア構成要素及びデータのいずれか等の、コンピュータ800によって利用される他のシステムまたはアプリケーションプログラム及びデータを記憶し得る。大容量記憶デバイス818はまた、本明細書で具体的に識別されない他のプログラム及びデータも記憶し得る。
一実施形態において、大容量記憶デバイス818または他のコンピュータ読み出し可能な記憶媒体は、コンピュータ実行可能な命令によって符号化され、該命令は、コンピュータ800にロードされたときに、コンピュータを汎用コンピューティングシステムから、本明細書で説明される実施形態を実現することができる特殊用途コンピュータに変換する。これらのコンピュータ実行可能な命令は、上で説明されるように、CPU804がどのように状態間を遷移するのかを指定することによって、コンピュータ800を変換する。一実施形態によれば、コンピュータ800は、コンピュータ実行可能な命令を記憶するコンピュータ読み出し可能な記憶媒体へのアクセスを有し、該命令は、コンピュータ800によって実行されたときに、図4及び図5に関して上で説明される種々のルーチンを行う。コンピュータ800はまた、本明細書で説明される他のコンピュータ実装の動作のいずれかを行うための、コンピュータ読み出し可能な記憶媒体を含み得る。
コンピュータ800はまた、キーボード、マウス、タッチパッド、タッチ画面、電子スタイラス、または他のタイプの入力デバイス等の数多くの入力デバイスから入力を受け取り、処理するための、1つ以上の入力/出力コントローラ816も含み得る。同様に、入力/出力コントローラ816は、コンピュータモニタ、フラットパネルディスプレイ、デジタルプロジェクタ、プリンタ、プロッタ、または他のタイプの出力デバイス等のディスプレイに出力を提供し得る。コンピュータ800は、図8で示される構成要素の全てを含まない場合があること、図8で明示的に示されない他の構成要素を含み得ること、または図8で示されるものと完全に異なるアーキテクチャを利用し得ることが認識されるであろう。
上記に基づいて、ネットワークに基づくプログラム試験サービスを実現し、利用するための技術が本明細書で提示されていることを認識するべきである。さらに、本明細書で提示される主題は、コンピュータの構造的特徴、方法論的な行為、及びコンピュータ読み出し可能な媒体に特有の言い回しで説明してきたが、添付の特許請求の範囲で定義される本発明は、必ずしも、本明細書で説明される具体的な特徴、行為、または媒体に限定されるものではないことを理解されたい。むしろ、具体的な特徴、行為、媒体は、特許請求の範囲を実現する例示的な形態として開示される。
上で説明される主題は、単なる例示の目的で提供されるものであり、限定するものとして解釈するべきではない。さらに、特許請求される主題は、本開示の任意の部分に記載される任意のまたは全ての不利な点を解決する実現形態に限定されない。例示され、説明される例示的な実施形態及び応用例に従うことなく、また、以下の特許請求の範囲に記載される本発明の真の趣旨及び範囲から逸脱することなく、本明細書で説明される主題に対して様々な修正及び変更が行われ得る。