(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
テスト・デバイスは、性能モジュールを含む テスト・デバイスのディスプレイ・デバイス上で提示される、グラフィカル・ユーザ・インターフェースなどの画像のエントロピ値を判定する ことができる。画像のエントロピ値は、画像内の画素の強度値またはカラー値などのデータ値の分布を示すことができる。経時的なエントロピ値のパターンは、テスト・デバイスの性能を示す情報を提供することができる。たとえば、経時的に一定のエントロピ値は、グラフィカル・ユーザ・インターフェースが変化していないことを示す可能性がある。別の例では、経時的なエントリ値の特定のパターンは、待機インジケータまたは他のユーザ・インターフェース要素の提示を示す可能性がある。エントロピ値を使用して、テスト・デバイスの性能を示すデータを判定することができる。このデータを、ローカルに記憶し、外部デバイスに送るなどを行うことができる。
前記ディスプレイ・デバイス上での提示のために記憶された複数の画像を判定することであって、前記複数の画像は、前記第1の画像および前記第2の画像を含む、判定することと、
前記複数の画像の少なくとも一部の第1の複数のエントロピ値を判定することと、
前記第1の複数のエントロピ値内の繰り返すパターンを判定することと
をさらに含み、前記コンピューティング・デバイスの性能を示す前記データは、前記繰り返すパターンに少なくとも部分的に基づく
請求項1に記載の方法。
【発明を実施するための形態】
【0008】
諸実施態様が、本開示で例として示されるが、当業者は、諸実施態様が説明される例または図に限定されないことを認めよう。図面およびそれに対する詳細な説明が、諸実施態様を開示される特定の形態に限定することを意図されたものではなく、逆に、その意図が、添付の特許請求の範囲によって定義される趣旨および範囲に含まれるすべての修正形態、同等物、および代替形態を包含することであることを理解されたい。本開示で使用される見出しは、組織化のためのみのものであって、この説明または特許請求の範囲の範囲を限定するのに使用されることを意図されたものではない。本願全体で使用される時に、単語「may」は、必須の意味(すなわち、mustを意味する)ではなく、許可の意味(すなわち、可能性を有するを意味する)で使用される。同様に、単語「include」、「including」、および「includes」は、「including,but not limited to(含むがこれに限定されない)」を意味する。
【0009】
モバイル・デバイスは、さまざまな機能を提供するためにアプリケーションを実行することができる。モバイル・デバイスは、スマートフォン、ラップトップ、タブレット・コンピュータ、組込みデバイス、ウェアラブル・コンピューティング・デバイス、電化製品、自動車、航空機、その他を含むことができるが、これに限定はされない。アプリケーションによって提供される機能は、データの取出し、ユーザへのそのデータの提示、データの処理、他の動作、またはその任意の組合せを含むことができる。いくつかの実施形態では、アプリケーションは、独立型アプリケーションとすることができる。
【0010】
一部のアプリケーションは、ネットワークを使用してサーバなどの宛先デバイスと通信することができる。たとえば、マッピング・アプリケーションは、モバイル・デバイスの位置を示す情報をマッピング・サーバに送ることができ、マッピング・アプリケーションは、情報の送出に応答して、モバイル・デバイスのディスプレイ上で提示すべき地図データを受信することができる。この通信に関する問題は、アプリケーションが所望の機能を実行できないこと、エラー・メッセージ、静的なまたはブランクのディスプレイ・データ、不正な動作、他の問題、またはその任意の組合せをもたらす可能性がある。上の例を継続すると、地図データを受信する際の長い待ち時間または遅延は、モバイル・デバイス上のアプリケーションに、ユーザにエラーを提示させる場合があり、あるいは、ディスプレイ上のデータがその間に更新されない、長い待ち時間またはローディング遅延を引き起こす場合がある。これらの問題は、悪いユーザ経験をもたらす可能性がある。たとえば、ユーザが、これらの問題のゆえにアプリケーションの使用を中止し、その代わりに別のアプリケーションを使用する場合がある。
【0011】
モバイル・デバイスによって提示される情報から判定されるエントロピに基づいてモバイル・デバイスまたはモバイル・デバイス上で実行するアプリケーションの1つまたは複数の性能パラメータを判定することのできるシステム、方法、およびデバイスの実施形態を、下で説明する。性能パラメータは、ウェブサーバ応答の遅延、ネットワーク・スループット、他の要因、またはその任意の組合せなど、何らかの他のシステムの性能に基づくものとすることができる。そのような情報は、たとえば、ディスプレイ上で提示される1つまたは複数の画像、オーディオ出力(スピーカなど)に提示されるオーディオ・データ、他の情報、またはその任意の組合せを含むことができる。たとえば、エントロピ値は、データの配列の特性を表すのに使用できるランダムさの統計的尺度を含むことができる。画像処理では、用語「エントロピ」は、画像のテクスチャ(色または強度の空間配置)の特性を表すのに使用できるランダムさの統計的尺度を指すことができる。特定の例では、エントロピを、画像に対応する値の数値配列、サウンドに対応する値の数値配列、他のデータ、またはその任意の組合せから判定することができる。エントロピ分析を、画像データ、オーディオ・データ、他のデータ、またはその任意の組合せに対して実行することができる。用語「エントロピ」は、全般的に画像などの特定のデータ項目のコンテンツのランダムさに関する他の定義を有することもできる。
【0012】
エントロピ分析
情報エントロピは、ビットまたは「シャノン」単位で測定することができ、一般にベルヌーイ過程によってモデル化されるデータ・ソースの情報コンテンツを測定するのに有用なメトリックである可能性がある。ベルヌーイ過程は、それぞれが相互に排他的で網羅的な、通常は0または1である2つの値だけをとることのできる2進ランダム変数のシーケンスである。たとえば、コイン投げのシーケンスを、ベルヌーイ過程と考えることができる。Pr(X=1)=pおよびPr(X=0)=1−pを有するベルヌーイ試行のシーケンスの2進エントロピ関数または「シャノン」エントロピ関数は、H(X)=H
B(p)=−p log
2p−(1−p)log
2(1−p)によって与えられ、ここで、0 log
20は、0と解釈され、Xは、ランダム変数である。
【0013】
画像を、確率データ・ソースとして扱うことができる。ベルヌーイ過程の代わりに、画像は、画素の配列からなり、各画素は、ある確率P(x
i)で発生する画像データ型範囲内の値を有し、x
iは、所与の画素値(たとえば、グレイ・レベル)を表す。エントロピは、一般に、
【数1】
によって記述することができ、ここで、bは、対数関数の基底であり、所与の画素の複数の可能な値を表すことができ、nは、画素の総数を表す。画像は、一般に、N×M×D要素を有する8ビット配列として表される。8ビット配列内の各要素は、256ビット範囲[0,255]内の値を有することができる。グレイスケール画像に関して、D=1であり、したがって、各画素は、256個の可能な値を有することができる。したがって、8ビットすなわち1バイトの単位を有するb=256であり、P(x
i)は、[0,255]内の値の256個のビンを有するヒストグラムを作成することと、画素の総数nによって除算することとによって計算することができる。エントロピが、スケール独立の値であり、定式化される時に追加の正規化を必要としないことを理解されたい。上で説明した実施態様では、エントロピは、P(x
i)=0が不定の0*log(0)をもたらすので、非0確率の値の和として計算される。
【0014】
RGB画像に関して、各画素は、3要素の深さを有し、単一の画素は、256*256*256=16777216個の可能な値を有することができる。そのような大きい範囲の画素をビンにいれることは計算的に高価になる可能性があるので、実用的な代替案は、画像をグレイスケールに変換すること、または単純にすべてのチャネルにまたがって画像エントロピの平均をとることを含むことができる。
【0015】
画像エントロピは、すべての画素が同等の強度を有する(たとえば、画素のすべてが同一であり、ディスプレイ上でモノクローム画像を作る)最小理論エントロピから、すべての画素強度が同等にありそうな(たとえば、画素値がランダムに変化する大量の画像コンテンツを有する画像)最大エントロピまでの範囲にわたる画素値の分布として解釈され得る。情報理論の展望から、すべての画素が同一である最小エントロピの点は、最小ダイバーシティ、最低情報コンテンツ、および最大秩序(または最小ランダムさ)の点である。
【0016】
数学的に、エントロピの最小値は0であり、最大値は1である。最小エントロピ値は、分布内のすべての値が等しいことを暗示する。画像に関して、これは、すべての画素が同一の値を有することを意味する。最大エントロピ値は、分布内の値が均一に分布することを暗示する。この特性を有する画像は、画素値の豊かな分布と高い情報コンテンツとを有する。このスケール独立メトリックは、[0,1]の範囲での、異なるサイズを有する画像の便利で解釈可能な比較を可能にする。
【0017】
ビデオ内の画像ごとにこの画像エントロピ値を計算することによって作られる時系列は、特に有用である。コンピューティング・リソースを使用してビデオの画像をスキャンするのではなく、エントロピ値の時系列またはグラフは、ビデオ・フィード内の展開する情報コンテンツのすばやい視覚的要約を可能にする。エントロピ・グラフ内で、任意の色のブランク画像または相対的に均一なディスプレイ・コンテンツを有する画像は、低いエントロピ値を有するが、かなりのコントラストおよび色の変動を有する画像は、相対的に高いエントロピ値を有する。
【0018】
いくつかの実施形態では、画像のコンテンツから導出された画像エントロピ値は、時系列で見られる時に有用な情報を提供することができる。具体的には、エントロピ値または他のハッシュ値によって表されるランダムさまたはエントロピは、アプリケーションまたはコンピューティング・デバイスの性能を評価するのに使用できる情報を提供することができる。
【0019】
エントロピ時系列の読取
たとえば、テスト中の携帯電話機からのビデオ内に、新しいページを開くことによってユーザによってコンテンツが要求される別個のフェーズがある場合があり、アプリケーションは、新しいコンテンツをロードし、おそらくは視覚的フィードバックを提供するためにスピナまたはローディング・インジケータを示し、その後、コンテンツが最終的にロードされる。アプリケーションが、通常はユーザが要求した情報を準備していないので、スクリーンがブランクまたはほぼブランクになる遅延がある場合がある。いくつかの場合に、遅延中に、コンテンツが要求された時にスクリーン上にあった画像が、スクリーン上で凍結したままになる場合があり、スピナまたはローディング・インジケータが、要求されたコンテンツが最終的にロードされるまで、凍結した画像または静的画像に重畳される場合がある。
【0020】
ページ上に提示されるもののこれらの遷移を、ビデオ・エントロピ時系列内で検出することができる。第1のページから要求されたページへの遷移を、エントロピが変化し始める前の短い期間にわたるステップ減少または高台として取り込むことができる。コンテンツがロードされている間に、エントロピは、低いままになり、または実質的に静的のままになる可能性がある。いくつかの場合に、エントロピは、スピナ、砂時計、棒グラフ、および類似物などの周期的に回転するか展開するローディング・インジケータに応答して、周期的に変動する可能性がある。コンテンツがロードし始める時に、エントロピは、増分的に、スクリーン上の情報の量に比例して増加する可能性がある。
【0021】
いくつかの場合に、ローディング・インジケータなどのコンテンツ・プレースホルダは、完全にロードされたコンテンツより少なくエントロピ値に寄与する可能性がある。エントロピ値を判定し、査定することによって、携帯電話機テストの動作に関する有用なデータを、すばやく効率的に収集することができる。
【0022】
この例は、携帯電話機テストを説明するが、これらの技法を、任意のモバイル・デバイスまたは固定デバイスに使用することができる。たとえば、エントロピを使用して、タブレット・コンピュータ、デスクトップ・コンピュータ、組込みデバイスなどの動作を査定することができる。これらの技法を使用して、テスト中のアプリケーション、デバイスの通常動作、オペレーティング・システム、その他を査定することができる。
【0023】
いくつかの実施形態では、スマートフォンなどのモバイル・コンピューティング・デバイス上で実行するアプリケーションは、たとえば時間しきい値を超える可能性がある時間期間にわたってデバイスが情報をロードできないのでデバイスのユーザに顕著になる可能性がある、間欠的な性能問題を経験する場合がある。時々、モバイル・コンピューティング・デバイスは、アプリケーションが表示するか他の形で提示すべき情報を有しないタイム・インターバル中に、ローディング・インジケータ(スピナ、砂時計、または別の視覚的インジケータ)を有するブランク・スクリーンを表示する場合がある。ソフトウェア開発者は、さまざまなコンピューティング・デバイス上で異なる時に異なる地理的位置で実行するアプリケーションの性能に関する情報を収集することを望む場合がある。
【0024】
モバイル・コンピューティング・デバイス上で実行中である可能性があるアプリケーションを含むことができ、モバイル・コンピューティング・デバイスによって提示される情報に基づいてエントロピ値を判定することのできるシステム、方法、およびデバイスの実施形態を下で説明する。そのような情報は、画像、サウンド、または他の情報を含むことができる。モバイル・コンピューティング・デバイスは、エントロピ値に基づいて、アプリケーションまたはモバイル・コンピューティング・デバイスの性能または動作(ユーザによって見られる)を示すデータを判定するように構成され得る。たとえば、エントロピ値は、エントロピ値が少ない情報コンテンツまたは静的情報コンテンツを示す(情報コンテンツが変化していなければならない時に)時間期間に対応することのできる待ち時間インターバルを明らかにすることができる。別の例では、性能を示すデータを、ウェブサーバ応答の遅延、ネットワーク・スループット、他の要因、またはその任意の組合せなど、何らかの他のシステムの性能に基づくものとすることができる。いくつかの場合に、ネットワーク・スループット値とのエントロピ値の相関が、ネットワーク・スループット値が高いがエントロピ値が待ち時間インターバルを明らかにする時など、編集を必要とする可能性があるアプリケーション内の機能を明らかにする場合がある。他の場合に、たとえば入力インターフェースからの入力データの受信とのエントロピ値の相関が、ユーザ対話と、アプリケーションに対するユーザ対話の影響とを明らかにする場合がある。エントロピ・データを使用して、待ち時間インターバルの存在または不在などに基づいてアプリケーションの総合性能を検査することもできる。
【0025】
いくつかの実施形態では、エントロピ値を使用して、ユーザに提示されるデータに基づいて、コンピューティング・デバイスの動作およびアプリケーションの動作を示すデータを判定することができる。言い換えると、エントロピ値は、客観的に評価するのがむずかしい可能性があるユーザ経験を明らかにすることができる。エントロピ値を調べることによって、情報コンテンツがないか少ないインターバルを識別し、ネットワーク・スループット・データと相関させ、受信された入力と相関させ、分析することができる。分析は、プログラム・エラー、コーディングまたは機能の問題、および他の情報を明らかにすることができ、これらを使用して、モバイル・コンピューティング・デバイスの機能を改善することができる。
【0026】
いくつかの実施態様では、エントロピ値を、テスト・データと相関させることができ、これは、中央処理装置、メモリ・デバイス、通信インターフェースなどを含むデバイス・メトリックスへのエントロピの相関を可能にすることができる。テスト・データを使用して、動作を駆動することができ、エントロピは、ユーザによって見られるデバイスの性能への洞察を提供することができる。他の実施態様も可能である。
【0027】
いくつかの実施態様では、エントロピ値は、アプリケーションの性能の非侵襲的尺度を提供し、この非侵襲的尺度を使用して、アプリケーションの機能およびモバイル・コンピューティング・デバイスの機能を改善することができる。エントロピ値に基づいて性能を判定するテスト・デバイスを含むシステムの1つの可能な例を、下で
図1に関して説明する。
【0028】
例示的なシステム
図1は、一実施形態による、ネットワーク・リソースを利用するアプリケーションをテストするシステム100の図を示す。システム100は、モバイル・デバイスとすることのできるテスト・デバイス(TD)102を含むことができる。TD 102は、スマートフォン、ラップトップ、タブレット・コンピュータ、組込みデバイス、ウェアラブル・コンピューティング・デバイス、電化製品、自動車、航空機などを含むことができるが、これに限定はされない。TD 102は、経時的に変化し得る視覚的コンテンツを提示することのできるディスプレイ104を含むことができる。TD 102のディスプレイ104は、さまざまな時にローディング・インジケータ106を提示することができる。TD 102は、ネットワーク110を介して分析システム108などの1つまたは複数のコンピューティング・デバイスと通信することができる。
【0029】
ネットワーク110は、セルラ・ネットワーク、衛星ネットワーク、インターネット、ローカル・エリア・ネットワーク、他のネットワーク、またはその任意の組合せを含むことができる。ネットワーク110と通信するのにTD 102および分析システム108によって使用される接続は、有線イーサネット接続、Wi−Fiなどの無線ローカル・エリア・ネットワーク(WLAN)接続、基地局を介する携帯電話接続、別のタイプの接続、またはその任意の組合せを含むことができるが、これに限定はされない。
【0030】
TD 102は、テスト中のアプリケーション(AUT)112を含むモバイル・コンピューティング・デバイスとすることができる。AUT 112は、開発または保守ライフサイクルのいずれかのステージにあるアプリケーションとすることができる。たとえば、AUT 112は、ソフトウェアのアルファ(またはプリリリース)バージョンを含むことができ、あるいは、さらなるテストを受けつつある、以前にリリースされた製品バージョンを含むことができる。
【0031】
TD 102は、性能モジュール114をさらに含むことができ、この性能モジュール114は、アプリケーション、プラグイン、ソフトウェア開発キット(SDK)、ウィジェット、または別のタイプのソフトウェア・コンポーネントとすることができる。TD 102は、画像データ116およびログ・データ118を記憶するメモリをさらに含むことができ、ログ・データ118は、エントロピ・データ120およびネットワーク・データ122を含むことができる。メモリは、キャッシュ・メモリ、ディスプレイ・バッファ、不揮発性メモリ、他のメモリ・コンポーネント、またはその任意の組合せを含むことができるが、これに限定はされない。画像データ116は、たとえばディスプレイ・バッファ内に記憶された、ビデオ・フレームを含むことができる。エントロピ・データ120は、性能モジュール114またはAUT 112によって判定されたデータを含むことができる。ネットワーク・データ122は、TD 102の、ネットワーク・トランシーバなどの回路網によって判定され得る。
【0032】
性能モジュール114は、TD 102によって提示される画像情報など、1つまたは複数のパラメータを監視することができる。性能モジュール114は、画像データ116から画像のシーケンスの第1の画像および第2の画像を選択することができる。性能モジュール114は、第1の画像内のデータ値の分布を示す第1のエントロピ値および第2の画像内のデータ値の分布を示す第2のエントロピ値を判定することができる。その後、性能モジュール114は、第1のエントロピ値および第2のエントロピ値に基づいてTD 102の性能を示すデータを生成することができる。一例では、性能を示すデータは、ウェブサーバ応答の遅延、ネットワーク・スループット、他の要因、またはその任意の組合せなど、何らかの他のシステムの性能に基づくものとすることができる。性能モジュール114は、データをエントロピ・データ120として記憶するためにログ・データ118にアクセスすることができる。いくつかの実施形態では、TD 102は、エントロピ・データ120、ネットワーク・データ122、動作を示すデータ、またはその任意の組合せを、ネットワーク110を介して分析システム108に送ることができる。
【0033】
いくつかの実施態様では、性能モジュール114は、画像のシーケンスの第1のデータ項目(たとえば、画像)のデータ値のサブセットを判定することができる。性能モジュール114は、データ値のサブセットに基づいて、第1のデータ項目の第1のエントロピ値をさらに判定することができる。たとえば、性能モジュール114は、画像からデータ値のサブセットを判定することができ、サブセットの確率を判定することができる。この確率は、データ値のサブセットが特定の値を有する尤度を表すことができる。第1のエントロピ値を、確率を合計することによって判定することができる。他の実施態様も可能である。
【0034】
分析システム108は、1つまたは複数のTD 102から受信されたエントロピ・データ126およびネットワーク・データ128を含むログ・データ124を記憶するメモリを含むことができる。分析システム108は、分析モジュール130をも含むことができる。分析モジュール130は、エントロピ・データ126、ネットワーク・データ128、他のデータ、またはその任意の組合せに基づいてレポート・データ134を生成することができる。
【0035】
いくつかの実施態様では、画像は、複数のデータ値からなることができる。分析モジュール130は、第1の画像の第1のデータ値の第1の確率値を判定することができ、第1の画像の第2のデータ値の第2の確率値を判定することができる。たとえば、第1の確率値は、第1のデータ値が特定の色、強度、または他の特性を有する尤度を表すことができる。第2の確率値は、第2のデータ値が特定の色、強度、または他の特性を有する尤度を表すことができる。いくつかの実施態様では、第1の確率値は、第2の確率値と独立である。第1および第2の確率値を一緒に加算して、第1の画像のエントロピ値を判定することができる。このプロセスを、画像のシーケンスの1つまたは複数の画像について繰り返すことができる。他の実施態様も可能である。
【0036】
エントロピ・データ126は、経時的な画像のシーケンス(たとえば、ビデオ・フレーム)内の値の分布に対応する時系列データを含むことができる。この例では、TD 102などの特定のデバイスに関連するエントロピ・データ126を、時刻140に対するエントロピ値138のエントロピ・グラフ136を使用して視覚化することができる。TD 102のディスプレイ104に提供されるデータが、時刻140にわたって変化でき、第1の時刻T
1にディスプレイ104に提示される情報が、第2の時刻T
2にディスプレイ104に提示される情報とは異なる可能性があることを了解されたい。エントロピ・グラフ136は、そのような変動を反映する。
【0037】
エントロピ・グラフ136は、経時的に減少するエントロピを示す。時刻T
0に、TD 102のディスプレイ104は、建物を示し、これは、エントロピ・グラフ136上で0と1との間にあるエントロピ値によって表される。時刻T
1に、ディスプレイ104は、モノクローム(低エントロピ)背景に重畳されたローディング・インジケータ106を有するモノクローム背景に遷移している。ローディング・インジケータ106は、AUT 112の動作を示し、ネットワーク・スループットを示し、ある他のパラメータを示し、またはその任意の組合せであることができる。時刻T
1から時刻T
2まで延びる待ち時間インターバル144中に、ローディング・インジケータ106を、146でディスプレイ104上に提示することができる。ディスプレイ104上の背景のエントロピは、待ち時間インターバル144中に静的または実質的に一定のままになる。しかし、ローディング・インジケータ106は、スピンしまたは他の形で変化することができ、待ち時間インターバル144中にエントロピ値138を変動させる。この例では、ローディング・インジケータ106を、周期的にスピンし、エントロピ値138を変動させるスピナまたは砂時計とすることができる。待ち時間インターバル144内のエントロピ・グラフ136の図の例は、変動がシヌソイドになることを示すが、変動が非周期的になるか、変動が待ち時間インターバル144中の不規則な変化(振幅の、周波数の、またはその両方)によって表されることが可能である。時刻T
2に、ローディング・インジケータ106が、消えることができ(148に全般的に示されるように)、エントロピ値138は、エントロピ・インターバル144内の平均エントロピ値から変化し始めることができる。
【0038】
1つの可能な例では、待ち時間インターバル144は、ネットワーク・スループットを減少させるネットワーク接続性問題によって引き起こされる可能性がある。たとえば、TD 102が、信号受信に干渉するエレベータ内で動作する場合がある。別の例では、TD 102が、トンネルを通過する車両内で動作する場合がある。別の可能な例では、待ち時間インターバル144が、AUT 112によって引き起こされる場合がある。一例では、AUT 112が、エラーに出会う場合がある。その代わりに、AUT 112が、性能に影響する可能性があり、ディスプレイ104へのデータの提示の遅延として現れる可能性がある欠陥または他の問題を有する場合がある。一例では、性能パラメータを、ウェブサーバ応答の遅延、ネットワーク・スループット、他の要因、またはその任意の組合せなど、何らかの他のシステムの性能に基づくものとすることができる。いくつかの場合に、データの提示の遅延は、悪いユーザ経験を引き起こす可能性のある、低い性能を示す可能性がある。そのような遅延が、TD 102からのエントロピ・データ120の時系列に基づいて検出可能である場合がある。
【0039】
分析システム108は、分析モジュール130を利用して、エントロピ・データ126およびネットワーク・データ128に基づいてTD 102のうちの1つまたは複数の性能を示すデータを判定することができる。さらに、分析モジュール130は、性能を示すデータに基づいてレポート・データ134を生成することができる。一例では、レポート・データ134は、TD 102のエントロピ・データ120を示すデータを含むレポート150を含むことができる。いくつかの場合に、レポート・データ134は、複数のTD 102の動作を示すデータをも含むことができる。
【0040】
図1に示された実施形態は、TD 102だけを示すが、分析システム108が、複数のTD 102からエントロピ・データ120およびネットワーク・データ122を受信することができ、受信したデータをログ・データ124内にエントロピ・データ126およびネットワーク・データ128として記憶できることを理解されたい。さらに、TD 102が、複数の異なる地理的位置に分散され得ることと、各TD 102のエントロピ・データ120およびネットワーク・データ122が、他のTD 102によって収集されたそのようなデータと独立であり、ネットワーク110を介して分析システム108に送出され得ることを了解されたい。
【0041】
図2は、一実施態様による、各TD 102の時刻140に対するエントロピ値138のエントロピ・グラフ136(1)および136(2)を含む、TD 102(1)および102(2)の
図200を示す。TD 102(1)は、第1の時刻T
0に、ディスプレイ104(1)に画像データ(たとえば、人間の写真)を供給することができる。時刻T
1に、TD 102(1)のディスプレイ104(1)は、ローディング・インジケータ106(1)と共にブランク(またはモノクローム)の背景を提示することができる。エントロピ・グラフ136(1)を参照すると、時刻T
0と時刻T
1との間に、時刻T
1の前のエントロピ値138(1)(全体的に142(1)に示す)は、第1の時刻T
0の相対的に高いエントロピ値138から第2の時刻T
1の相対的に低いエントロピ値138へ時間140(1)にわたってすばやく減少し、ここで、第2の時刻T
1の相対的に低いエントロピ値138は、少ない情報を示すことができる。時刻T
1に、ディスプレイ104(1)は、全体的に146(1)に示されるように、ローディング・インジケータ106(1)を提示することができる。時刻T
1から時刻T
2まで延びる待ち時間インターバル144(1)中に、エントロピ値138(1)は、低いレベルのままになり、ローディング・インジケータ106(1)に関連する移動または変化に基づいて変動する。時刻T
2に、ローディング・インジケータが消え148(1)、情報コンテンツは、変化するエントロピ値138によって反映されるように変化し始める。
【0042】
TD 102(2)に関して、ディスプレイ104(2)は、全体的に142(2)によって示されるように、時刻T
3の前の第1の時刻に島の画像を示す。時刻T
3に、TD 102(2)は、ディスプレイ104(2)にローディング・インジケータ106(2)を供給することができる(全体的に146(2)に示されるように)。この場合に、島の画像は、ディスプレイ104(2)上に残り、ローディング・インジケータ106(2)は、画像に重畳される。エントロピ・グラフ136(2)を参照すると、エントロピ値138(2)は、ローディング・インジケータ106(2)の導入に応答してわずかに増加し、待ち時間インターバル144(2)内に変化しない(ローディング・インジケータ106(2)の回転または他の移動に起因する変動を除いて。時刻T
4に、ローディング・インジケータ106(2)は、全体的に148(2)に示されるように消える。
【0043】
TD 102(1)を第1の地理的位置に配置することができ、TD 102(2)を第2の地理的位置に配置することができることを了解されたい。さらに、TD 102(1)は、TD 102(2)と比較して、異なるAUT 112を実行しているものとすることができる。図示の例では、TD 102(1)とTD 102(2)との両方が、待ち時間インターバル144を経験する。エントロピ・グラフ136(2)内のエントロピ値138(2)の振幅は、それぞれの待ち時間インターバル144中にエントロピ・グラフ136(1)内のエントロピ値138(1)より大きい。しかし、エントロピ値138は、特定のローディング・インジケータ106を示すパターンまたはシグネチャを表す可能性がある。パターンまたはシグネチャを、時系列内の繰り返すエントロピ値138から、またはヒストリカル分析に基づいて判定することができる。繰り返すパターンまたはシグネチャを、繰り返すエントロピ値138、エントロピ値138の繰り返す差、またはエントロピ値138の時系列の他の再帰する形状、傾き、変動、もしくは他の識別できるコンテンツによって表すことができる。他の例では、待ち時間インターバル144内の変化するエントロピ値138が、異なる波形を有する場合がある。いくつかの実施形態では、エントロピ値138のサブセット内のエントロピ値138に基づいてローディング・インジケータ106を判定することが可能である場合がある。
【0044】
いくつかの実施態様では、パターンを、第1の時刻から第2の時刻へ振幅において減少するエントロピ値のシーケンスおよび第3の時刻から第4の時刻へ振幅において増加するエントロピ値の第2のシーケンスから判定することができる。他の実施態様も可能である。
【0045】
さらに、いくつかの実施形態では、エントロピ値138のパターンが繰り返す場合がある。そのようなパターンが、TD 102によって実行される特定の動作を示す場合がある。たとえば、ウェブサイトからの音楽ビデオのダウンロードおよび再生を伴う動作中に、アプリケーションが第1のビデオから第2のビデオに遷移する(かつ、オプションで、アプリケーションが広告を表示する)時に、エントロピ値138がパターンを繰り返す場合がある。各遷移の開始時に、エントロピ値138は、背景がモノクローム背景またはモノクロームに近い背景に変化する時に減少する可能性があり、その後、エントロピ値138は、選択されたビデオがロードされ、再生を開始する時にすばやく増加する可能性がある。この繰り返すパターンは、特定のアプリケーションの通常動作を示す可能性がある。
【0046】
別の例では、ユーザ対話が、エントロピ・パターンをトリガしまたは開始する場合がある。たとえば、「右にスワイプする」対話は、提示される画像がディスプレイ104から外れてスライドし、ディスプレイ104をブランクにする時に、エントロピ値138をすばやく減少させる場合がある。このすばやい減少の後に、エントロピ値138は、新しい画像がロードされる時にすばやく増加する可能性がある。このパターンが、TD 102との対話に応答して繰り返される可能性がある。他の例も可能である。
【0047】
ある種の実施形態では、TD 102(1)およびTD 102(2)の動作を示すデータを、エントロピ値138に基づいて判定することができる。さらに、時系列内のエントロピ値138の繰り返すパターンが、「自動再生」または他の動作などのルーチン動作を実行する特定のアプリケーションの動作を示す場合があり、あるいは、悪いユーザ経験をもたらす可能性があるアプリケーション内の欠陥またはエラーを示す場合がある。
図2に示されたデータの繰り返すパターンは、待ち時間インターバル144内に発生するが、エントロピ値138のサブセットが時系列内のさまざまな位置で繰り返すことが可能である。他の実施形態も可能である。
【0048】
いくつかの実施形態では、動作 TD 102をリモートに制御することが望ましい場合がある。一例では、TD 102または別のテスト・デバイスは、コンピューティング・デバイスにテザリングされ、またはデバイスのリモート・アクセスもしくはリモート・コントロールを可能にするコンピューティング・コードを含む場合がある。エントロピ・データ120に基づいてデバイスの動作を判定する複数の異なるテスト・シナリオを可能にすることのできるシステムの1つの可能な例を、下で
図3に関して説明する。
【0049】
例示的なテスト・システム
図3は、一実施態様による、エントロピ・データ120を提供するためにさまざまなコンピューティング・デバイスを含むアプリケーションをテストするシステム300のブロック図を示す。開発者302は、新しいアプリケーションの作成、既存アプリケーションの保守、既存アプリケーションのリファクタリング、アプリケーションに対するテストの実行、メディア・コンテンツ・システムのテスト、他の動作の実行、またはその任意の組合せを割り当てられた個人、個人のグループ、またはエンティティとすることができる。開発者302は、テスト中のアプリケーション(AUT)112に取り組んでいるものとすることができる。AUT 112は、テスト・デバイス(TD)102(1)、ワークステーション308、他のデバイス、またはその任意の組合せなどのコンピューティング・デバイス上で実行され得る。ワークステーション308は、ラップトップ、デスクトップ・コンピュータ、タブレット・コンピュータ、別のコンピューティング・デバイス、またはその任意の組合せを含むことができる。
【0050】
ワークステーション308は、プログラム・コードの作成および編集、デバッギング、コンパイル、他の動作の実行、またはその任意の組合せを容易にする統合開発環境(IDE)を含むことができる。いくつかの実施態様では、ワークステーション308は、AUT 112が別のハードウェア上で、異なるオペレーティング・システムの下で、などで実行しているかのようにAUT 112を実行するように設計されたエミュレータまたはシミュレータを含むことができる。
【0051】
開発者302は、たとえば、TD 102(1)上で実行するAUT 112から判定されたエントロピ値138に基づいて、AUT 112の使用に関連する問題を判定するためにAUT 112をテストすることができる。それらの問題は、判定された後に、軽減され得る。たとえば、開発者302は、問題を矯正するためにAUT 112のプログラム・コードを変更することができる。開発者202は、下で説明する技法を使用して、AUT 112の動作に関連する問題の少なくとも一部を判定することができる。
【0052】
開発者302、TD 102(1)、またはワークステーション308のうちの1つまたは複数は、第1のジオロケーション310(1)に配置され得る。ジオロケーション310は、特定の部屋、建物、都市、州、国、その他などの地理的位置を含む。たとえば、ジオロケーション310を、地球の表面の緯度および経度に関する座標のセットによって指定することができる。
【0053】
TD 102(1)またはワークステーション308のうちの1つまたは複数を、第1のネットワーク312(1)に通信可能に結合することができる。第1のネットワーク312(1)を、より大きいネットワークに接続するかその一部とすることができる。たとえば、第1のネットワーク312(1)は、インターネットを含むことができる。第1のネットワーク312(1)を、
図1のネットワーク110の実施形態とすることができる。
【0054】
TD 102(1)またはワークステーション308によって使用される接続は、有線イーサネット接続、Wi−Fiなどの無線ローカル・エリア・ネットワーク(WLAN)接続などを含むことができるが、これに限定はされない。たとえば、第1のジオロケーション310(1)は、開発者302が働いているオフィスを含むことができる。TD 102(1)は、イーサネット・ケーブルを介してルータに接続されたローカルWi−Fiアクセス・ポイントに接続することができる。ルータは、ネットワーク312(1)への接続性を提供するケーブル・モデムに接続される。
【0055】
動作中に、AUT 112は、宛先デバイス、別のコンピューティング・デバイス、データ・ソース、またはその任意の組合せなどの外部リソースへのアクセスに頼ることができる。たとえば、AUT 112は、ユーザによって生成されたデータを送り、サーバから提示情報を取り出すソーシャル・ネットワーキング・アプリケーションを含むことができる。その結果、いくつかの実施態様では、AUT 112は、通常動作のために宛先デバイスへのアクセスを必要とする可能性がある。図示の例では、宛先デバイスまたはデータ・ソースは、明瞭さのために省略されている。しかし、AUT 112が、ネットワーク312(1)を介して多数の異なるコンピューティング・デバイスおよびデータ・ソース(宛先デバイス)と通信できることを理解されたい。
【0056】
AUT 112は、動作中に宛先デバイスと交換され得るAUTトラフィック314を生成することができる。伝統的に、第1のジオロケーション310(1)のTD 102(1)によって生成されたAUTトラフィック314は、第1のネットワーク312(1)および宛先ネットワークに送られる。しかし、いくつかの実施態様では、開発者302が、第1のジオロケーション310(1)に関係するさらなるテスト・データを生成するために、TD 102(1)のさらなる制御を働かせることを望む場合がある。
【0057】
本明細書で説明する機能性を提供するために、開発者302は、AUT 112にソフトウェア開発キット(SDK)を組み込むことができる。たとえば、コンパイル時に、コンパイルされるAUT 112にSDKを含めることができる。他の実施態様では、SDK以外のプラグイン、マクロ、他の命令セットまたは技法が、本明細書で説明する機能性を提供するのに使用され得る。たとえば、SDKの少なくとも一部の機能性を提供するコンピュータ・コードの行を、AUT 112のコード・ベースに組み込むことができる。
【0058】
1つの可能な実施形態では、SDKは、AUTトラフィック314のリダイレクションを可能にするユーザ・インターフェースを開発者302に提供することができる。SDKは、管理サーバ318との通信を確立する命令を含むことができる。たとえば、SDKは、開発者302が管理モジュール320と対話することを可能にするユーザ・インターフェースを追加することができる。
【0059】
管理サーバ318は、管理モジュール320を利用して、プロキシ・ホスト・デバイス322またはプロキシ・アクセス・デバイス324のうちの1つまたは複数のアクティビティを調整することができる。プロキシ・ホスト・デバイス322は、第1のネットワーク312(1)に接続し、プロキシ・アクセス・デバイス324のうちの1つまたは複数にも接続する。たとえば、プロキシ・ホスト・デバイス322は、複数のプロキシ・アクセス・デバイス324をテザリングできるデスクトップ・コンピュータを含むことができる。図示の例では、4つのプロキシ・アクセス・デバイス324が、プロキシ・ホスト・デバイス322を介してネットワーク312(1)に結合される。いくつかの実施態様では、プロキシ・ホスト・デバイス322は、タブレット・コンピュータ、サーバなどを含むことができる。任意の個数のプロキシ・アクセス・デバイス324を、プロキシ・ホスト・デバイス322にテザリングすることができる。
【0060】
プロキシ・アクセス・デバイス324は、ネットワーク・アクセス・ポイント326にも接続することができる。ネットワーク・アクセス・ポイント326は、第2のネットワーク312(2)への接続性を提供する。たとえば、プロキシ・アクセス・デバイス324は、商品セル電話機を含むことができ、ネットワーク・アクセス・ポイント326は、セル電話塔を含むことができ、第2のネットワーク312(2)は、無線セルラ・データ・ネットワーク(WCDN)などの無線広域ネットワーク(WWAN)を含むことができる。第2のネットワーク312(2)を、第1のネットワーク312(1)に接続することができる。たとえば、遠隔通信会社によって運営されるWCDNが、ピアリング・エージェントをインターネット・バックボーン・プロバイダに相互接続し、またはピアリング・エージェントを有することができる。その結果、第2のネットワーク312(2)のユーザは、第1のネットワーク312(1)上のリソースにアクセスでき、逆も同様である可能性がある。
【0061】
プロキシ・アクセス・デバイス324を、TD 102(1)のジオロケーションとは異なるジオロケーション310(2)に配置することができる。たとえば、プロキシ・ホスト・デバイス322およびプロキシ・アクセス・デバイス324を、別の都市内、別の州内、別の国内など、第2のジオロケーション310(2)に設置することができる。
【0062】
さらに、TD 102(2)を、ネットワーク312(1)に、ネットワーク・アクセス・ポイント326に、または別のネットワーク・アクセス・ポイントを介して接続することができる。TD 102(2)は、データを受信し、ネットワーク312(1)を介して分析システム108に、TD 102(2)の動作を表すデータを供給することができる。このデータは、エントロピ・データ120、ネットワーク・データ、他のデータ、またはその任意の組合せを含むことができる。
【0063】
AUT 112に戻って、テスト・プロセスの一部として、開発者302は、ユーザ・インターフェースを使用して、管理サーバ318の管理モジュール320にアクセスすることができる。ユーザ・インターフェースから、開発者302は、テスト中に使用すべき特定のジオロケーション310または特定のプロキシ・アクセス・デバイス324のうちの1つまたは複数を選択することができる。管理モジュール320は、ジオロケーション310、可用性、コスト、プロキシ・アクセス・デバイス324のタイプ、その他など、プロキシ・アクセス・デバイス324に関する情報を維持することができる。管理モジュール320は、オプトイン・オプションを介してまたはダウンロード中に受信された情報に基づいてなど、TD 102(2)からの情報を判定することもできる。
【0064】
管理モジュール320は、AUT 112と選択されたプロキシ・アクセス・デバイス324との間の第1の接続の確立を調整することができる。たとえば、開発者302による選択に基づいて、管理モジュール320は、プロキシ・ホスト・デバイス322を判定し、デジタル証明書、暗号証明書、ネットワーク・アドレス、他の情報、またはその任意の組合せなどの情報を取り出すことができる。一実施態様では、管理モジュール320は、AUT 112との通信に関してプロキシ・ホスト・デバイス322を準備するためにプロキシ・ホスト・デバイス322と通信することができる。別の実施態様では、管理モジュール320は、構成データをAUT 112に供給することができ、AUT 112は、プロキシ・ホスト・デバイス322に接続し、構成データを送る。
【0065】
テスト中に、AUTトラフィック314は、第1のネットワーク312(1)を介してプロキシ・ホスト・デバイス322に、プロキシ・アクセス・デバイス324を介して第2のネットワーク312(2)にルーティングされ、その後に、第1のネットワーク312(1)上で、サーバ、別のコンピューティング・デバイス、別のTD 102、分析システム108、別のデバイス、またはその任意の組合せなどの宛先デバイスに最終的に到着することができる。AUTトラフィック314は、アウトバウンド・アプリケーション・トラフィックおよびインバウンド・アプリケーション・トラフィックを含むことができる。アウトバウンド・アプリケーション・トラフィックは、AUT 112から宛先デバイスに送られるデータを含むことができ、インバウンド・アプリケーション・トラフィックは、宛先デバイスからAUT 112に送られるデータを含むことができる。AUTトラフィック314は、たとえばTD 102のネットワーク・トランシーバによって取り込まれるものとは別々に取り込まれ得るネットワーク・スループット・データを表すことができる。
【0066】
動作中に、AUT 112は、選択されたプロキシ・アクセス・デバイス324に関連するプロキシ・ホスト・デバイス322へのアウトバウンド・アプリケーション・トラフィックを指示することができる。プロキシ・ホスト・デバイス322は、アウトバウンド・アプリケーション・トラフィックをプロキシ・アクセス・デバイス324に転送し、プロキシ・アクセス・デバイス324は、アウトバウンド・アプリケーション・トラフィックを第2のネットワーク312(2)に送る。第2のネットワーク312(2)は、アウトバウンド・アプリケーション・トラフィックを宛先デバイスに向けることができる。宛先デバイスからのインバウンド・アプリケーション・トラフィックは、逆の経路をたどることができる。
【0067】
管理サーバ318は、システムの動作に関連するログ・データ332を収集することができる。ログ・データ332は、プロキシ・セッション・データ334を含むことができる。プロキシ・ホスト・デバイス322を、プロキシ・セッション・データ334を生成するように構成することができる。プロキシ・セッション・データ334は、「パンくず」データ、プロキシ・アクセス・デバイス324の動作に関連する情報、プロキシ・ホスト・デバイス322によって転送されたデータのパケット・キャプチャ、他のデータ、またはその任意の組合せを含むことができる。パンくずデータは、特定の瞬間または時間のインターバルに関して、ウェブサイト上の現在のページ、プロキシ・アクセス・デバイス324が接続されているネットワークのタイプ、受信されたデータの量、送信されるデータの量、宛先デバイスへの待ち時間、データ・スループット、受信信号強度、送信電力、第2のネットワーク312(2)でのデータ転送に関連するコスト、エントロピ・データ120、他のデータ、またはその任意の組合せを含む1つまたは複数の動作パラメータを含むことができる。たとえば、パンくずデータは、プロキシ・アクセス・デバイス324が、タイムスタンプ201508172312030092にウェブページhttp://www.example.com/main.htmlに、4Gネットワーク接続を使用し、14dBmの受信信号強度、7dBmの送信電力、400Kbpsのデータ・スループットなどを伴って接続されたことを示すことができる。したがって、プロキシ・セッション・データ334は、AUT 112が所望のジオロケーション310の実世界の第2のネットワーク312(2)上で動作したことの産物である。結果のプロキシ・セッション・データ334は、関連する複雑さおよびニュアンスを含む実世界を表すことができる。
【0068】
管理サーバ318は、プロキシ・セッション・データ334を入手することができる。たとえば、プロキシ・ホスト・デバイス322は、テスト・セッション中に、テスト・セッションの後に、周期的に、または所定のスケジュールに従って、管理サーバ318にプロキシ・セッション・データ334を送ることができる。別の例では、管理サーバ318は、プロキシ・セッション・データ334を求めてプロキシ・ホスト・デバイス322をポーリングすることができる。
【0069】
プロキシ・セッション・データ334の代わりにまたはこれに加えて、1つまたは複数の展開されたデバイス336は、展開されたログ・データ338を管理サーバ318に供給することができる。展開されたデバイス336は、スマートフォン、ラップトップ、タブレット・コンピュータ、組込みデバイス、ウェアラブル・コンピューティング・デバイス、電化製品、自動車、航空機などを含むことができるが、これに限定はされない。展開されたデバイス336は、SDKを組み込んだAUT 112を実行することができ、このSDKは、展開されたデバイス336上でのAUT 112の動作中に展開されたログ・データ338を収集するように構成され得る。展開されたログ・データ338は、特定の時刻の、展開されたデバイス336のジオロケーション310、パンくずデータ、およびAUTトラフィック314または展開されたデバイス336の動作に関連する他の情報を含むデータを示す情報を含むことができる。たとえば、ユーザは、展開されたデバイス336での展開されたログ・データ338の収集を可能にすることに合意することができる。ユーザがAUT 112を使用している間に、展開されたログ・データ338が収集される。その結果、展開されたログ・データ338は、AUT 112を使用して実際のユーザから入手される実世界情報を含む。ジオロケーション310データは、GPS受信器などの測位デバイスから、Wi−Fiホットスポット・ジオロケーション・ルックアップなどのサービスから、複数のネットワーク・アクセス・ポイント326での信号強度または時間遅れに基づいてネットワーク・プロバイダから、などで入手され得る。
【0070】
分析モジュール340は、プロキシ・セッション・データ334を処理し、レポート・データ342を生成することができる。たとえば、分析モジュール340は、第1の要求が送られた時の第1のタイムスタンプおよび第1の要求に対する第1の応答が受信された時の第2のタイムスタンプを判定するために、プロキシ・セッション・データ334を解析することができる。第1のタイムスタンプおよび第2のタイムスタンプに基づいて、第2のネットワーク312(2)への要求を満足する待ち時間を判定することができる。
【0071】
いくつかの実施態様では、分析モジュール340は、画像のシーケンスの第1のデータ項目(たとえば、画像)のデータ値のサブセットを判定することができる。分析モジュール340は、データ値のサブセットに基づいて、第1のデータ項目の第1のエントロピ値をさらに判定することができる。たとえば、分析モジュール340は、画像からデータ値のサブセットを判定することができ、サブセットの確率を判定することができる。この確率は、データ値のサブセットが特定の値を有する尤度を表すことができる。第1のエントロピ値を、確率を合計することによって判定することができる。他の実施態様も可能である。
【0072】
いくつかの実施態様では、レポート・データ342は、AUT 112に対する可能な変更の1つまたは複数の最適化を指定することができる。たとえば、レポート・データ342は、AUT 112のうちで、しきい値を超える待ち時間を有する要求を生成している特定の部分を指定することができる。
【0073】
展開されたログ・データ338を、管理サーバ318または別のデバイスにリアル・タイムでまたは指定されたインターバルに送信することができる。たとえば、展開されたデバイス336上のAUT 112を、展開されたログ・データ338をリアル・タイムで送るように構成することができる。リアル・タイムまたは近リアル・タイムは、しきい最大時間以内に行われるアクションを含むことができる。たとえば、展開されたログ・データ338は、100ミリ秒(ms)以内に収集され、送信される場合に、リアル・タイムと考えることができる。リアル・タイム構成または近リアル・タイム構成では、管理サーバ318は、AUT 112に関連する問題を示すレポート・データ342をすばやく生成できる可能性がある。その結果、開発者302は、問題をすばやく軽減し、したがって、ユーザ経験を改善できる可能性がある。
【0074】
図示の例では、管理サーバ318は、さまざまなジオロケーション310でさまざまな条件(たとえば、ネットワーク・アクセス・ポイント326を介して、ネットワーク312(1)を介して、プロキシ・ホスト・デバイス322を介して、またはその任意の組合せ)の下でAUT 112を実行しているさまざまなデバイスに関するデータを収集することができる。分析システム108は、1つまたは複数のTD 102の動作を示すデータならびに管理サーバ318からのデータを受信することができる。
【0075】
分析システム108は、TD 102からまたは管理サーバ318から受信したデータをログ・データ124に記憶することができる。このデータは、エントロピ・データ126およびネットワーク・データ128を含むことができる。いくつかの実施形態では、ネットワーク・データ128は、上で議論したパンくずデータを含むことができる。分析システム108は、TD 102およびAUT 112の動作を示すデータを判定するためにエントロピ・データ126およびネットワーク・データ128を処理することができる。分析システム108は、分析モジュール130を含むことができ、分析モジュール130は、エントロピ・データ126、ネットワーク・データ128、他のデータ、またはその任意の組合せに基づいて、TD 102およびAUT 112の動作を示すデータを含むレポート・データ134を生成することができる。レポート・データ134は、開発者302によって、問題を軽減し、AUT 112の機能性および応答性を改善し、ユーザ経験を改善するのに使用され得る。
【0076】
図4は、一実施態様による、分析システム108として働くコンピューティング・デバイスのブロック
図400を示す。分析システム108は、1つまたは複数のコンピューティング・デバイスを含むことができる。任意のタイプのコンピューティング・デバイスおよび任意の個数のネットワーク化されたコンピューティング・デバイスが、本明細書で説明される実施態様を実行することができる。
【0077】
1つまたは複数の電源404を、分析システム108の構成要素を動作させるのに適切な電力を供給するように構成することができる。いくつかの実施態様では、電源404は、再充電可能バッテリ、燃料電池、太陽電池、電力調整回路網、他のデバイス、他の回路、またはその任意の組合せを含むことができる。
【0078】
分析システム108は、1つまたは複数の記憶された命令を実行するように構成された1つまたは複数のハードウェア・プロセッサ406(プロセッサ)を含むことができる。プロセッサ(1つまたは複数)406は、1つまたは複数のコアを含むことができる。1つまたは複数のクロック408が、日付、時刻、ティックなどを示す情報を提供することができる。たとえば、プロセッサ(1つまたは複数)406は、クロック408からのデータを使用して、タイムスタンプを生成し、事前にプログラムされたアクションをトリガするなどを行うことができる。分析システム108は、分析システム108のさまざまなモジュールおよび構成要素の間のデータの転送を可能にする、1つもしくは複数のバスまたは他の内部通信ハードウェアもしくは内部通信ソフトウェアを含むことができる。
【0079】
分析システム108は、入出力インターフェース412、ネットワーク・インターフェース414、その他などの1つまたは複数の通信インターフェース410を含むことができる。通信インターフェース410は、分析システム108または分析システム108の構成要素が、他のデバイスまたは分析システム108の構成要素と通信することを可能にすることができる。入出力インターフェース412は、Inter−Integrated Circuit(I2C)、Serial Peripheral Interfaceバス(SPI)、Universal Serial Bus(USB)Implementers Forumによって公布されるUSB、RS−232、その他などのインターフェースを含むことができる。
【0080】
入出力インターフェース(1つまたは複数)412は、1つまたは複数の入出力デバイス416に結合することができる。入出力デバイス416は、分析システム108に関連する任意の形の入力デバイスまたは出力デバイスを含むことができる。たとえば、入出力デバイス416は、タッチ・センサ、キーボード、マウス・デバイス、マイクロホン、イメージ・センサ(たとえば、カメラ)、スキャナ、ディスプレイ、スピーカ、触覚デバイス、プリンタ、測位デバイスなどを含むことができる。測位デバイスは、衛星無線航法システム、慣性航法システム、地上無線航法システム、またはジオロケーション310を示すデータを生成するように構成された他のデバイスのうちの1つまたは複数を含むことができる。たとえば、衛星無線航法システムは、全地球測位システム(GPS)受信器を含むことができ、地上無線航法システムは、ネットワーク・アクセス・ポイント326からの情報を利用することができるなどである。いくつかの実施態様では、入出力デバイス416を、分析システム108と共に物理的に組み込むことができ、あるいは、外部に配置することができる。
【0081】
ネットワーク・インターフェース414を、分析システム108と、入出力デバイス416、ルータ、アクセス・ポイント、その他などの他のデバイスとの間の通信を提供するように構成することができる。ネットワーク・インターフェース414は、ローカル・エリア・ネットワーク(LAN)、WLAN、広域ネットワーク(WAN)、WWANなどを含む1つまたは複数のネットワーク312に結合するように構成されたデバイスを含むことができる。たとえば、ネットワーク・インターフェース414は、イーサネット、Wi−Fi、Bluetooth、ZigBee、Z−Wave、3G、4G、LTEなどと互換のデバイスを含むことができる。
【0082】
図4に示されているように、分析システム108は、1つまたは複数のメモリ418を含むことができる。メモリ418は、1つまたは複数の非一時的コンピュータ可読記憶媒体(CRSM)を含むことができる。CRSMは、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、量子記憶デバイス、機械コンピュータ記憶デバイス、ソリッド・ステート・メモリ・デバイスなどのうちの任意の1つまたは複数とすることができる。メモリ418は、コンピュータ可読命令、データ構造、プログラム・モジュール、および分析システム108の動作に関する他のデータの記憶を提供することができる。少数の例のモジュールが、メモリ418内に図示されているが、同一の機能性を、その代わりにハードウェア内で、ファームウェア内で、またはシステム・オン・ア・チップ(SoC)として実施することができる。
【0083】
メモリ418は、1つまたは複数のオペレーティング・システム(OS)420を含むことができる。OS 420を、入出力インターフェース412、ネットワーク・インターフェース414、入出力デバイス416などのハードウェア・リソース・デバイスを管理し、プロセッサ406上で実行するアプリケーションまたはモジュールにさまざまなサービスを提供するように構成することができる。OS 420は、FreeBSD Projectによって公布されるFreeBSDオペレーティング・システムの変形、UNIXもしくはUNIXライク・オペレーティング・システム、Linus Torvaldsによって公布されるLinuxオペレーティング・システムの変形、米国ワシントン州レッドモンドのMicrosoft CorporationからのWindowsオペレーティング・システム、米国カリフォルニア州カパティーノのApple Inc.によって公布されるMac OSもしくはiOS、または他のオペレーティング・システムを実施することができる。
【0084】
データ・ストア422および以下のモジュールのうちの1つまたは複数を、メモリ418に記憶することもできる。モジュールを、フォアグラウンド・アプリケーション、バックグラウンド・タスク、デーモンなどとして実行することができる。データ・ストア422は、フラット・ファイル、データベース、リンク・リスト、ツリー、実行可能コード、スクリプト、または情報を記憶する他のデータ構造を使用することができる。いくつかの実施態様では、データ・ストア422またはデータ・ストア422の一部を、他のコンピューティング・デバイス、ネットワーク・アタッチト・ストレージ・デバイスなどを含む1つまたは複数の他のデバイスにまたがって分散させることができる。
【0085】
通信モジュール424を、通信インターフェース410のうちの1つまたは複数を使用して1つまたは複数の他のデバイスとの通信を確立するように構成することができる。通信を、認証し、暗号化し、その他を行うことができる。たとえば、通信モジュール424は、通信に用いられるデバイスのアイデンティティを認証するのにデジタル証明書を利用することができる。たとえば、通信モジュール424を、プロキシ・ホスト・デバイス322との仮想プライベート・ネットワーク(VPN)接続またはトンネルを確立するように構成することができる。
【0086】
管理モジュール426を、
図1のネットワーク110または
図3のネットワーク312(1)などのネットワークを介する管理サーバ318との通信を確立するように構成することができる。管理モジュール426は、展開されたデバイス336または管理サーバ318のいずれかから展開されたデバイス336の動作を示すデータを取り出すように構成された展開されたデバイス・データ収集モジュール428を含むことができる。管理モジュール426は、さまざまなソースから受信されたデータを相関させるデータ相関モジュール430をさらに含むことができる。データ相関モジュール430は、受信されたデータを、データ・ストア422内のログ・データ124に記憶することができる。ログ・データ124は、エントロピ・データ126およびネットワーク・データ128を含むことができる。
【0087】
さまざまな機能を実行するように構成され得る、他のモジュール432を含めることができる。
【0088】
分析モジュール130は、TD 102、AUT 112、テスト中の他のデバイス、またはその任意の組合せの動作を示すデータを判定するために、エントロピ・データ126およびネットワーク・データ128を処理することができる。分析モジュール130は、TD 102のうちの少なくとも1つに関連する時系列内のエントロピ・データ126の繰り返すサブセットに対応する1つまたは複数のパターンを判定するために、データをさらに処理することができる。さらに、分析モジュール130は、性能問題と、特定の性能問題が発生した状況とを判定することができる。分析モジュール130は、ログ・データ124の処理に基づいてレポート・データ134を作ることができる。さらに、データ・ストア422は、他のデータ436を含むことができる。
【0089】
いくつかの実施態様では、分析モジュール130は、画像のシーケンスの第1のデータ項目(たとえば、画像)のデータ値のサブセットを判定することができる。分析モジュール130は、データ値のサブセットに基づいて、第1のデータ項目の第1のエントロピ値をさらに判定することができる。たとえば、分析モジュール130は、画像からデータ値のサブセットを判定することができ、サブセットの確率を判定することができる。この確率は、データ値のサブセットが特定の値を有する尤度を表すことができる。第1のエントロピ値を、確率を合計することによって判定することができる。他の実施態様も可能である。
【0090】
図5は、本開示の範囲内のコンピューティング・デバイス502を示すブロック500である。コンピューティング・デバイス502は、1つまたは複数のTD 102、ワークステーション308、プロキシ・アクセス・デバイス324、展開されたデバイス336、または他のデバイスを含むことができる。任意のタイプのコンピューティング・デバイス502および任意の個数のネットワーク化されたコンピューティング・デバイスが、本明細書で説明する実施態様を実行することができる。
【0091】
1つまたは複数の電源504を、コンピューティング・デバイス502の構成要素を動作させるのに適切な電力を供給するように構成することができる。いくつかの実施態様では、電源504は、再充電可能バッテリ、燃料電池、太陽電池、電力調整回路網などを含むことができる。
【0092】
コンピューティング・デバイス502は、1つまたは複数の記憶された命令を実行するように構成された1つまたは複数のハードウェア・プロセッサ506(プロセッサ)を含むことができる。プロセッサ(1つまたは複数)506は、1つまたは複数のコアを含むことができる。1つまたは複数のクロック508が、日付、時刻、ティックなどを示す情報を提供することができる。たとえば、プロセッサ(1つまたは複数)506は、クロック508からのデータを使用して、タイムスタンプを生成し、事前にプログラムされたアクションをトリガするなどを行うことができる。コンピューティング・デバイス502は、コンピューティング・デバイス502のさまざまなモジュールおよび構成要素の間のデータの転送を可能にする、1つもしくは複数のバスまたは他の内部通信ハードウェアもしくは内部通信ソフトウェアを含むことができる。
【0093】
コンピューティング・デバイス502は、入出力インターフェース512、ネットワーク・インターフェース514、その他などの1つまたは複数の通信インターフェース510を含むことができる。通信インターフェース510は、コンピューティング・デバイス502またはコンピューティング・デバイス502の構成要素が、他のデバイスまたはコンピューティング・デバイス502の構成要素と通信することを可能にすることができる。入出力インターフェース512は、Inter−Integrated Circuit(I2C)、Serial Peripheral Interfaceバス(SPI)、Universal Serial Bus(USB)Implementers Forumによって公布されるUSB、RS−232、その他などのインターフェースを含むことができる。
【0094】
入出力インターフェース(1つまたは複数)512は、1つまたは複数の入出力デバイス516に結合することができる。入出力デバイス516は、コンピューティング・デバイス502に関連する任意の形の入力デバイスまたは出力デバイスを含むことができる。たとえば、入出力デバイス516は、タッチ・センサ、キーボード、マウス・デバイス、マイクロホン、イメージ・センサ(たとえば、カメラ)、スキャナ、ディスプレイ、スピーカ、触覚デバイス、プリンタ、測位デバイスなどを含むことができる。測位デバイスは、衛星無線航法システム、慣性航法システム、地上無線航法システム、またはジオロケーション310を示すデータを生成するように構成された他のデバイスのうちの1つまたは複数を含むことができる。たとえば、衛星無線航法システムは、全地球測位システム(GPS)受信器を含むことができ、地上無線航法システムは、ネットワーク・アクセス・ポイント326からの情報を利用することができるなどである。いくつかの実施態様では、入出力デバイス516を、コンピューティング・デバイス502と共に物理的に組み込むことができ、あるいは、外部に配置することができる。
【0095】
ネットワーク・インターフェース514を、コンピューティング・デバイス502と、入出力デバイス516、ルータ、アクセス・ポイント、その他などの他のデバイスとの間の通信を提供するように構成することができる。ネットワーク・インターフェース514は、ローカル・エリア・ネットワーク(LAN)、WLAN、広域ネットワーク(WAN)、WWANなどを含む1つまたは複数のネットワーク312に結合するように構成されたデバイスを含むことができる。たとえば、ネットワーク・インターフェース514は、イーサネット、Wi−Fi、Bluetooth、ZigBee、Z−Wave、3G、4G、LTEなどと互換のデバイスを含むことができる。
【0096】
コンピューティング・デバイス502は、subscriber identity module(SIM)518を含むことができる。たとえば、TD 102および展開されたデバイス336は、SIM 518を含むことができる。SIM 518は、international mobile subscriber identity(IMSI)番号、暗号鍵、integrated circuit card identifier(ICCID)、連絡先情報、または他のデータなどの情報を記憶できる非一時的コンピュータ可読記憶媒体を含むことができる。SIM 518は、ネットワーク312のうちの1つまたは複数との通信に、ネットワーク・インターフェース514によって使用され得る。たとえば、SIM 518に記憶されたIMSIおよび暗号鍵を取り出し、WCDNとの通信を確立するのに使用することができる。
【0097】
図5に示されているように、コンピューティング・デバイス502は、1つまたは複数のメモリ520を含むことができる。メモリ520は、1つまたは複数の非一時的コンピュータ可読記憶媒体(CRSM)を含むことができる。CRSMは、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、量子記憶デバイス、機械コンピュータ記憶デバイス、ソリッド・ステート・メモリ・デバイスなどのうちの任意の1つまたは複数とすることができる。メモリ520は、コンピュータ可読命令、データ構造、プログラム・モジュール、およびコンピューティング・デバイス502の動作に関する他のデータの記憶を提供することができる。メモリ520に記憶されている、少数の例のモジュールが図示されているが、同一の機能性を、その代わりにハードウェア内で、ファームウェア内で、またはシステム・オン・ア・チップ(SoC)として実施することができる。
【0098】
メモリ520は、1つまたは複数のオペレーティング・システム(OS)522を含むことができる。OS 522を、入出力インターフェース512、ネットワーク・インターフェース514、入出力デバイス516などのハードウェア・リソース・デバイスを管理し、プロセッサ506上で実行するアプリケーションまたはモジュールにさまざまなサービスを提供するように構成することができる。OS 522は、FreeBSD Projectによって公布されるFreeBSDオペレーティング・システムの変形、UNIXもしくはUNIXライク・オペレーティング・システム、Linus Torvaldsによって公布されるLinuxオペレーティング・システムの変形、米国ワシントン州レッドモンドのMicrosoft CorporationからのWindowsオペレーティング・システム、米国カリフォルニア州カパティーノのApple Inc.によって公布されるMac OSもしくはiOS、または他のオペレーティング・システムを実施することができる。
【0099】
データ・ストア524および以下のモジュールのうちの1つまたは複数を、メモリ520に記憶することもできる。モジュールを、フォアグラウンド・アプリケーション、バックグラウンド・タスク、デーモンなどとして実行することができる。データ・ストア524は、フラット・ファイル、データベース、リンク・リスト、ツリー、実行可能コード、スクリプト、または情報を記憶する他のデータ構造を使用することができる。いくつかの実施態様では、データ・ストア524またはデータ・ストア524の一部を、他のコンピューティング・デバイス502、ネットワーク・アタッチト・ストレージ・デバイスなどを含む1つまたは複数の他のデバイスにまたがって分散させることができる。
【0100】
通信モジュール526を、通信インターフェース510のうちの1つまたは複数を使用して1つまたは複数の他のデバイスとの通信を確立するように構成することができる。通信を、認証し、暗号化し、その他を行うことができる。たとえば、通信モジュール526は、通信に用いられるデバイスのアイデンティティを認証するのにデジタル証明書を利用することができる。たとえば、通信モジュール526を、プロキシ・ホスト・デバイス322との仮想プライベート・ネットワーク(VPN)接続またはトンネルを確立するように構成することができる。
【0101】
メモリ520は、AUT 112を記憶することができる。上で説明したように、いくつかの実施態様では、AUT 112は、ソフトウェア開発キット(SDK)の少なくとも一部を組み込むことができる。SDKの要素を、1つまたは複数のハードウェア・プロセッサ506上で実行するように構成することができる。これらの要素は、コンピューティング・デバイス502上で実行するオペレーティング・システム522の、カーネル空間ではなくユーザ空間内で実行することができる。たとえば、AUT 112およびSDKの要素は、ユーザ・アカウントの特権で実行することができ、第1のユーザ・アカウントは、ルート・アカウント、スーパーユーザ、管理者、または他のタイプの高められたアカウントより低い、OS 522内の特権を有する。
【0102】
いくつかの実施形態では、SDKを、特定のネットワーク・アドレスとの間でAUTトラフィック314を向けるように構成することができる。たとえば、SDKが、アウトバウンド・アプリケーション・トラフィックをインターセプトし、そのトラフィックを選択されたプロキシ・ホスト・デバイス322に向けるように構成可能である場合がある。一実施態様では、SDKは、通信モジュール526によって提供されるものなどのVPN機能性を実施しまたは要求することができる。たとえば、SDKは、プロキシ・ホスト・デバイス322への暗号化されたトンネルを確立するために、通信モジュール526に要求を発行することができる。確立された後に、AUTトラフィック314を、VPNを介してプロキシ・ホスト・デバイス322に向けることができる。
【0103】
メモリ520内の性能モジュール114は、AUT 112の動作を監視することができる。性能モジュール114は、複数のデータ項目の選択されたデータ項目内のデータ値の分布を示すエントロピ値138を判定することができる。性能モジュール114は、エントロピ値138に基づいて、AUT 112、コンピューティング・デバイス502、ネットワーク・スループット、またはその任意の組合せの性能を示すデータを判定することができる。いくつかの場合に、性能を示すデータを、ウェブサーバ応答の遅延など、何らかの他のシステムの性能に基づくものとすることができる。
【0104】
一例では、性能モジュール114は、画像のシーケンスの第1の画像の第1のエントロピ値138および画像のシーケンスの第2の画像の第2のエントロピ値138を判定することができる。性能モジュール114は、第1のエントロピ値138および第2のエントロピ値138に基づいて、コンピューティング・デバイス502またはAUT 112の性能を示すデータを判定することができる。性能モジュール114は、画像データ116を処理して、エントロピ値138を判定することができる。さらに、性能モジュール114は、エントロピ・データ120およびネットワーク・データ122をデータ・ログ108に記憶することができる。さらに、性能モジュール114は、レポート・データ532を生成することができ、レポート・データ532は、データ・ストア524に記憶され、オプションでレビューのために別のコンピューティング・デバイスに送出され得る。
【0105】
一例では、画像のシーケンスのエントロピ値138が、事前に決定された期間にわたって変化しない時に、待ち時間インターバル144を識別することができる。いくつかの場合に、待ち時間インターバル144内のエントロピ値のシヌソイド変動または繰り返す変動は、ローディング・インジケータ106に対応する場合がある。
【0106】
別の例では、画像のシーケンスのサブセットのエントロピ値138が、時系列にわたって繰り返すパターンを表す時に、入力を示すシグネチャを検出するために、そのパターンを入力データ、アプリケーション・コード、または他の動作パラメータに相関させることができる。たとえば、第1のサブセットを、第1のエントロピ値を判定するために処理することができ、第2のサブセットを、第2のエントロピ値を判定するために処理することができる。パターンを、時系列にわたるエントロピ値の繰り返すサブセットに基づいて判定することができる。代替案では、パターンを、ヒストリカル・データから判定することができる。他の実施形態も可能である。
【0107】
開発者モジュール528をメモリ520に記憶することができる。開発者モジュール528は、統合開発環境、ビルド・システムなどのうちの1つまたは複数を含むことができる。たとえば、開発者モジュール528は、Apple Inc.からのXcode、Google Inc.からのAndroid Studio、www.gradle.orgで公布されるGradle、www.jenkins−ci.orgで公布されるJenkins、www.travis−ci.orgで公布されるTravis CI、Perforce Software,Inc.からのPerforceなどを含むことができる。
【0108】
他のモジュール530も、メモリ520内に存在することができる。いくつかの実施態様では、モジュールのうちの1つまたは複数を、少なくとも部分的に他のデバイスのメモリ520内に記憶することができ、少なくとも部分的に他のデバイス上で実行することなどができる。たとえば、開発者モジュール528に関連する1つまたは複数の機能を、サーバ上で実行することができる。
【0109】
コンピューティング・デバイス502によって使用されるさまざまな情報を、データ・ストア524に記憶することができる。たとえば、アプリケーション・データ534は、データ・ストア524に記憶され得、AUT 112、開発者モジュール528、その他などのモジュールの動作に関連する情報を含むことができる。他のデータ536をも、データ・ストア524に記憶することができる。他のデータ536は、デバイスのテストに関連する情報を含むテスト構成データを含むことができる。たとえば、テスト構成データは、ネットワーク・テストに使用される開発者302によって選択された第2のジオロケーション310(2)、プロキシ・ホスト・デバイス322のネットワーク・アドレス、プロキシ・ホスト・デバイス322にアクセスするための証明書、プロキシ・アクセス・デバイス324へのアクセスに関連するコスト、プロキシ・ホスト・デバイス322、プロキシ・アクセス・デバイス324に関する管理サーバ318からの情報、その他を指定することができる。さらに、他のデータ536は、1つまたは複数のしきい値を含むことができる。たとえば、しきい値は、それを超える時にレポート・データ532内のアラートをもたらす待ち時間を含むことができる。しきい値は、最大値、最小値、値の範囲などをも含むことができる。
【0110】
異なる実施態様では、異なるコンピューティング・デバイス502が、異なる能力または容量を有する場合がある。たとえば、ワークステーション308は、TD 102または展開されたデバイス336のプロセッサ506能力およびメモリ520容量と比較して、大幅により多いプロセッサ506能力およびメモリ520容量を有する場合がある。
【0111】
図6は、一実施態様による、本開示の範囲内の、管理サーバ318として働くコンピューティング・デバイスのブロック
図600である。管理サーバ318は、AUT 112とプロキシ・ホスト・デバイス322に接続されたプロキシ・アクセス・デバイス324との間の通信の調整などの機能性を提供することができる。
【0112】
上で
図4に関して説明した分析システム108と同様に、管理サーバ318は、電源602、ハードウェア・プロセッサ(1つまたは複数)604(プロセッサ)、クロック606、または通信インターフェース608のうちの1つまたは複数を含むことができる。通信インターフェース608は、入出力インターフェース610、ネットワーク・インターフェース612などを含むことができる。
【0113】
入出力インターフェース(1つまたは複数)610は、1つまたは複数の入出力デバイス614に結合することができる。入出力デバイス614は、上で
図4に関して説明したものなど、任意の形の入力デバイスまたは出力デバイスを含むことができる。いくつかの実施態様では、入出力デバイス614を、管理サーバ318と共に物理的に組み込むことができ、あるいは、外部に配置することができる。
【0114】
ネットワーク・インターフェース612を、管理サーバ318と他のデバイスとの間の通信を提供するように構成することができる。上で
図4に関して説明したように、ネットワーク・インターフェース612は、1つまたは複数のネットワーク312に結合するように構成されたデバイスを含むことができる。
【0115】
管理サーバ318は、管理サーバ318のさまざまなモジュールおよび構成要素の間のデータの転送を可能にする、1つもしくは複数のバスまたは他の内部通信ハードウェアもしくは内部通信ソフトウェアを含むことができる。
【0116】
図6に示されているように、管理サーバ318は、上で
図4に関して説明したものなど、1つまたは複数のメモリ616を含むことができる。メモリ616は、1つまたは複数の非一時的CRSMを含むことができる。メモリ616は、コンピュータ可読命令、データ構造、プログラム・モジュール、または管理サーバ318の動作に関する他のデータの記憶を提供することができる。少数の例のモジュールが、メモリ616に記憶されて図示されているが、同一の機能性を、その代わりにハードウェア内で、ファーウウェア内で、またはSoCとして実施することができる。
【0117】
メモリ616は、上で
図4に関して説明したものなどのOS 618を含むことができる。
【0118】
データ・ストア620および以下のモジュールのうちの1つまたは複数を、メモリ616に記憶することもできる。モジュールを、フォアグラウンド・アプリケーション、バックグラウンド・タスク、デーモンなどとして実行することができる。データ・ストア620は、フラット・ファイル、データベース、リンク・リスト、ツリー、実行可能コード、スクリプト、または情報を記憶する他のデータ構造を使用することができる。いくつかの実施態様では、データ・ストア620またはデータ・ストア620の一部を、他のコンピューティング・デバイス、ネットワーク・アタッチト・ストレージ・デバイスなどを含む1つまたは複数の他のデバイスにまたがって分散させることができる。
【0119】
通信モジュール622を、通信インターフェース608のうちの1つまたは複数を使用して1つまたは複数の他のデバイスとの通信を確立するように構成することができる。通信を、認証し、暗号化し、その他を行うことができる。たとえば、通信モジュール622は、通信に用いられるデバイスのアイデンティティを認証するためにデジタル証明書を利用することができる。
【0120】
メモリ616は、管理モジュール320を記憶することができる。管理モジュール320は、開発者インターフェース・モジュール624、調整モジュール626、展開されたデバイス・データ収集モジュール628などのうちの1つまたは複数を含むことができる。分析モジュール340、アカウンティング・モジュール630、または他のモジュール632も、メモリ316内に存在することができる。
【0121】
開発者インターフェース・モジュール624は、開発者302または開発者302によって使用されるアプリケーションにインターフェース機能性を提供する。たとえば、開発者インターフェース・モジュール624は、開発者302が特定のプロキシ・アクセス・デバイス324を選択するためのユーザ・インターフェースを提示することができ、あるいは、SDKが管理サーバ318の機能のうちの1つまたは複数にアクセスするのに使用できるアプリケーション・プログラミング・インターフェース(API)を含むことができる。いくつかの実施態様では、開発者インターフェース・モジュール624の少なくとも一部を、SDKの一部として提供することができ、あるいは、AUT 112内に一体化することができる。
【0122】
調整モジュール626は、システム300のさまざまな機能を調整するように構成される。調整モジュール626を、システム300の動作を指示するためにデータ・ストア620に記憶されたシステム管理データ634にアクセスするように構成することができる。システム管理データ634は、プロキシ・ホスト・デバイス(PHD)状況データ638、プロキシ・アクセス・デバイス(PAD)状況データ640、その他などの状況データ636を含むことができる。PHD状況データ638は、ネットワーク・アドレス、動作状況、インストールされたソフトウェアを示す情報、インストールされたソフトウェアのバージョン、現在の利用、その他などの情報を含むことができる。PAD状況データ640は、プロキシ・アクセス・デバイス324のメーカーおよびモデル、プロキシ・アクセス・デバイス324のOSバージョン、第2のネットワーク312(2)への接続状況、プロキシ・アクセス・デバイス324が現在AUT 112によって使用中であるかどうか、その他などの情報を含むことができる。
【0123】
システム管理データ634は、開発者アカウント・データ642をも含むことができる。開発者アカウント・データ642は、個々のアカウントのログインおよびパスワード、請求情報、使用情報、その他などの情報を含むことができる。
【0124】
システム管理データ634は、デバイス構成データ644をも含むことができる。デバイス構成データ644は、プロキシ・ホスト・デバイス322またはプロキシ・アクセス・デバイス324のうちの1つまたは複数を構成するのに使用できる命令、アプリケーション、モジュールなどを含むことができる。たとえば、デバイス構成データ644は、プロキシ・アクセス・デバイス324に命令を送るためにプロキシ・ホスト・デバイス322によって実行され得る1つまたは複数のスクリプトを含むことができる。これらの命令は、プロキシ・ホスト・デバイス322と第2のネットワーク312(2)との間でデータを転送するようにプロキシ・アクセス・デバイス324を構成することができる。
【0125】
データ・ストア620は、上で説明したものなどのテスト構成データ646をも記憶することができる。いくつかの実施態様では、管理サーバ318は、テスト構成データ646の少なくとも一部を生成することができる。テスト構成データ636の生成を、開発者302によって供給される情報に少なくとも部分的に基づくものとすることができる。たとえば、開発者302は、開発者インターフェース・モジュール624を使用して、異なるタイプのテスト・パラメータ、アラーム限度、テストしきい値、その他などのパラメータを指定することができる。これらのパラメータに基づいて、管理モジュール320は、テスト構成データ646を生成することができる。いくつかの実施態様では、テスト構成データ646を、開発者302によって変更することができ、あるいは、完全に開発者302または別のデバイスもしくはエンティティによって生成することができる。
【0126】
調整モジュール626に戻って、システム管理データ634およびテスト構成データ646を使用して、開発者302にテスト機能性を提供することができる。たとえば、開発者302は、開発者インターフェース・モジュール624を使用して、AUT 112に関するテスト・サービスを要求することができる。調整モジュール626は、状況データ636を査定して、使用可能な、ジオロケーション310、ネットワークのタイプ、その他などの情報を判定することができる。この判定に基づいて、調整モジュール626は、開発者インターフェース・モジュール624によって開発者302に情報を提示することができる。たとえば、この情報は、テストに使用可能なジオロケーション310およびプロキシ・アクセス・デバイス324、これらのリソースの使用に関連するコストなどを示すことができる。
【0127】
開発者302による選択または事前定義のデフォルトに応答して、調整モジュール626は、AUT 112からのAUTトラフィック314が、宛先デバイスに達するようにプロキシ・アクセス・デバイス324および第2のネットワーク312(2)を介して向けられるように、TD 102とプロキシ・アクセス・デバイス324との間の接続の確立を調整することができる。たとえば、開発者302によるユーザ・インターフェース内での選択に応答して、AUT 112は、選択された第2のジオロケーション310(2)にあるプロキシ・ホスト・デバイス322に関連するネットワーク・アドレスおよび証明書を受信することができる。AUT 112は、このネットワーク・アドレスおよび証明書を使用して、プロキシ・ホスト・デバイス322との接続を確立することができる。したがって、AUTトラフィック314を、TD 102またはワークステーション308上で実行しているAUT 112とプロキシ・ホスト・デバイス322との間で直接に交換することができる。別の実施態様では、管理サーバ318が、AUT 112とプロキシ・ホスト・デバイス322との間でAUTトラフィック314を中継する媒介物として働くことができる。
【0128】
調整モジュール626を、ログ・データ332を獲得するように構成することができる。たとえば、調整モジュール626は、TDログ・データ650を受信するために、TD 102または分析システム108との接続を確立することができる。調整モジュール626は、プロキシ・セッション・データ334の進行中のストリームを受信するために、プロキシ・ホスト・デバイス322との接続を確立することができる。プロキシ・セッション・データ334のストリームを、開発者302がAUT 112をテストしている間にリアル・タイムまたは近リアル・タイムで受信することができる。たとえば、プロキシ・セッション・データ334を、5秒おきに管理サーバ118に送ることができる。
【0129】
いくつかの実施態様では、ログ・データ332は、TDログ・データ650を含むことができる。たとえば、SDKまたはAUT 112に埋め込まれたコーディングされたものの行が、TDログ・データ650を管理サーバ318に送ることができる。
【0130】
展開されたデバイス・データ収集モジュール628を、展開されたデバイス336と通信し、展開されたログ・データ338を入手するように構成することができる。展開されたデバイス・データ収集モジュール628を、AUT 112の使用中にリアル・タイムまたは近リアル・タイムで展開されたログ・データ338を受信するように構成することができる。たとえば、展開されたデバイス336上で実行するAUT 112が、特定のジオロケーション310の特定のネットワーク312によって宛先デバイスとAUTトラフィック314を交換している間に、展開されたログ・データ338を生成することができる。展開されたログ・データ338は、AUT 112が、特定のネットワーク312上で、特定のジオロケーション310で、などで問題を経験しているかどうかを判定するのに、管理サーバ318によって使用され得る。
【0131】
ログ・データ332は、TD 102のうちの1つまたは複数、プロキシ・アクセス・デバイス324のうちの1つまたは複数、および1つまたは複数の展開されたデバイス336からのエントロピ値138に対応するエントロピ・データ656をも含むことができる。
【0132】
上で説明したように、分析モジュール340を、レポート・データ658を生成するためにデータ・ストア620に記憶された情報を使用するように構成することができる。たとえば、分析モジュール340は、ログ・データ332を分析して、AUT 112が宛先デバイスのリソースを使用して問題を経験する、特定のWCDNまたは都市の部分があるかどうかを判定することができる。
【0133】
アカウンティング・モジュール630を、システム300の使用に関連する料金を判定し、査定し、プロキシ・アクセス・デバイス324のオペレータに報酬を提供し、その他を行うように構成することができる。たとえば、アカウンティング・モジュール630は、特定のジオロケーション310の特定のプロキシ・アクセス・デバイス324をある時間の長さだけ使用するコスト、転送されたデータの量などを開発者302に供給することができる。いくつかの実施態様では、ユーザは、彼らのモバイル・デバイスをシステムに参加させ、そのモバイル・デバイスにプロキシ・アクセス・デバイス324として働かせることができる。たとえば、ユーザが他の形でセル電話機を使用してない時間中に、ユーザは、彼らのセル電話機をプロキシ・ホスト・デバイス322にテザリングし、プロキシ・アクセス・デバイス324としてのそのセル電話機の使用を許すことができる。そのような使用中に、セル電話機に記憶されたユーザに関連するデータを保護することができ、セル電話機上で実行する他のアプリケーションを終了させることができ、その他を行うことができる。上記および他の手段は、ユーザのデータのセキュリティを安全保護するため、セル電話機上で実行するアプリケーションがテストの結果に影響するのを防ぐため、などのために講じられ得る。この使用を可能にすることの返礼として、ユーザは、報酬を受け取ることができる。たとえば、ユーザが開発者302である場合に、開発者302は、彼らのアカウントでクレジットを受け取ることができる。そのクレジットを使用して、別の開発者302に関連するプロキシ・アクセス・デバイス324を使用してテストを実行することができる。他の実施態様では、報酬は、通貨の形での支払いなど、資金転送を含むことができる。
【0134】
いくつかの実施態様では、モジュールのうちの1つまたは複数を、他のデバイスのメモリ内に少なくとも部分的に記憶することができ、他のデバイス上で少なくとも部分的に実行することができ、その他を行うことができる。たとえば、アカウンティング・モジュール630に関連する1つまたは複数の機能を、別のサーバ上で実行することができる。
【0135】
データ・ストア620内の他のデータ660は、管理サーバ318またはそのモジュールに関連する構成およびセッティングなどの情報を含むことができる。
【0136】
図7は、一実施態様による、本開示の範囲内のプロキシ・ホスト・デバイス322として働くコンピューティング・デバイスのブロック
図700である。プロキシ・ホスト・デバイス322を、さまざまな異なるタイプのコンピューティング・デバイスを使用して実施することができる。たとえば、プロキシ・ホスト・デバイス322は、ミニ・デスクトップ・コンピュータ、タブレット・コンピュータ、サーバなどを含むことができる。
【0137】
上で
図4および
図6に関して説明したものと同様に、プロキシ・ホスト・デバイス322は、電源702、ハードウェア・プロセッサ(1つまたは複数)704(プロセッサ)、クロック706、または通信インターフェース708のうちの1つまたは複数を含むことができる。通信インターフェース708は、入出力インターフェース710、ネットワーク・インターフェース712などを含むことができる。
【0138】
入出力インターフェース(1つまたは複数)710は、1つまたは複数の入出力デバイス714に結合することができる。入出力デバイス714は、上で
図4および
図6に関して説明したものなど、任意の形の入力デバイスまたは出力デバイスを含むことができる。いくつかの実施態様では、入出力デバイス714を、プロキシ・ホスト・デバイス322と共に物理的に組み込むことができ、あるいは外部に配置することができる。
【0139】
ネットワーク・インターフェース712を、プロキシ・ホスト・デバイス322と他のデバイスとの間の通信を提供するように構成することができる。上で
図4および
図6に関して説明したように、ネットワーク・インターフェース712は、1つまたは複数のネットワーク312に結合するように構成されたデバイスを含むことができる。
【0140】
プロキシ・ホスト・デバイス322は、プロキシ・ホスト・デバイス322のさまざまなモジュールおよび構成要素の間でのデータの転送を可能にする、1つもしくは複数のバスまたは他の内部通信ハードウェアもしくは内部通信ソフトウェアを含むことができる。
【0141】
図7に示されているように、プロキシ・ホスト・デバイス322は、上で
図4に関して説明したものなどの1つまたは複数のメモリ716を含むことができる。メモリ716は、1つまたは複数の非一時的CRSMを含むことができる。メモリ716は、コンピュータ可読命令、データ構造、プログラム・モジュール、およびプロキシ・ホスト・デバイス322の動作に関する他のデータの記憶を提供することができる。少数の例のモジュールが、メモリ716に記憶されて図示されているが、同一の機能性を、その代わりにハードウェア内で、ファームウェア内で、またはSoCとして実施することができる。
【0142】
メモリ716は、上で
図4に関して説明したものなどのOS 718を含むことができる。
【0143】
データ・ストア720および以下のモジュールのうちの1つまたは複数を、メモリ716に記憶することもできる。モジュールを、フォアグラウンド・アプリケーション、バックグラウンド・タスク、デーモンなどとして実行することができる。データ・ストア720は、フラット・ファイル、データベース、リンク・リスト、ツリー、実行可能コード、スクリプト、または情報を記憶する他のデータ構造を使用することができる。いくつかの実施態様では、データ・ストア720またはデータ・ストア720の一部を、他のコンピューティング・デバイス、ネットワーク・アタッチト・ストレージ・デバイスなどを含む1つまたは複数の他のデバイスにまたがって分散させることができる。
【0144】
通信モジュール722を、通信インターフェース708のうちの1つまたは複数を使用して1つまたは複数の他のデバイスとの通信を確立するように構成することができる。通信を、認証し、暗号化し、その他を行うことができる。たとえば、通信モジュール722は、通信に用いられるデバイスのアイデンティティを認証するためにデジタル証明書を利用することができる。たとえば、通信モジュール722を、TD 102、ワークステーション308、または管理サーバ318のうちの1つまたは複数とのVPN接続またはトンネルを確立するように構成することができる。
【0145】
メモリ716は、プロキシ・アクセス・デバイス(PAD)構成モジュール724、トラフィック・プロキシ・モジュール726、データ収集モジュール728、性能モジュール730、または他のモジュール732のうちの1つまたは複数を記憶することができる。
【0146】
PAD構成モジュール724は、プロキシ・ホスト・デバイス322に接続されたプロキシ・アクセス・デバイス324に1つまたは複数の命令またはコマンドを送るように構成される。これらの命令を、管理サーバ318から受信されるデバイス構成データ738の一部として供給することができる。これらの命令は、プロキシ・アクセス・デバイス324が、第2のネットワーク312(2)上でトラフィックを送り、受信し、PAD状況データ736などの情報を供給し、その他を行うことを可能にするように設計され得る。たとえば、PAD構成モジュール724は、ローカル・トラフィック・モジュールおよびローカル状況モジュールをプロキシ・アクセス・デバイス324に送り、実行することができる。たとえば、PAD構成モジュール724は、Michael DeHaanによって開発され、www.ansible.comで公布されるAnsibleソフトウェア・プラットフォームを利用することができる。
【0147】
トラフィック・プロキシ・モジュール726は、AUT 112を実行しているTD 102とプロキシ・アクセス・デバイス324との間でAUTトラフィック314を渡すように構成される。たとえば、プロキシ・ホスト・デバイス322がLinux OSを利用する場合には、Linuxプロキシ・サービスを使用することができる。トラフィック・プロキシ・モジュール726を、他の点で異なるタイプのインターフェースを接続するように構成することができる。たとえば、プロキシ・ホスト・デバイス322は、第1のネットワーク312(1)に接続するのにネットワーク・インターフェース712を、プロキシ・アクセス・デバイス324に接続する(またはテザリングする)のにUSB入出力インターフェース710を使用することができる。接続された後に、プロキシ・アクセス・デバイス324へのUSB接続を、トラフィックがそれを介してルーティングされ得るネットワーク・インターフェース712としてOSモジュール718内で提示することができる。
【0148】
プロキシ・ホスト・デバイス322とプロキシ・アクセス・デバイス324との間の接続またはテザリングは、いくつかの実施態様で無線とすることができる。たとえば、プロキシ・ホスト・デバイス322およびプロキシ・アクセス・デバイス324が、Bluetooth無線インターフェースを使用してお互いと通信しているものとすることができる。
【0149】
データ収集モジュール728を、PHD状況データ734、PAD状況データ736、デバイス構成データ738、プロキシ・セッション・データ740、エントロピ・データ742、他のデータ744、またはその任意の組合せのうちの1つまたは複数を入手するように構成することができる。複数のPHD 322からのPHD状況データ734を管理サーバ318によって集約して、PHD状況データ638を形成できることを了解されたい。複数のPHD 322からのPAD状況データ736を、管理サーバ318によって集約して、PAD状況データ640を形成することができる。さらに、複数のPHD 322からのデバイス構成データ738、プロキシ・セッション・データ740、エントロピ・データ742、および他のデータ744を管理サーバ318によって集約して、それぞれ、デバイス構成データ646、プロキシ・セッション・データ334、エントロピ・データ656、および他のデータ660の一部を形成することができる。たとえば、データ収集モジュール728は、プロキシ・ホスト・デバイス322とプロキシ・アクセス・デバイス324との間で転送されているAUTトラフィック314のパケット・キャプチャを入手することができる。パケット・キャプチャを、プロキシ・セッション・データ334に含めることができる。たとえば、www.tcpdump.orgによって公布されるTCPDUMPライブラリを使用して、パケット・キャプチャを獲得することができる。上で説明したように、プロキシ・セッション・データ334を、管理サーバ318、TD 102、ワークステーション308、または他のデバイスのうちの1つまたは複数に送ることができる。
【0150】
モジュールのうちの1つまたは複数が、OSモジュール718のユーザ空間内で実行することができる。たとえば、プロキシ・アクセス・デバイス構成モジュール724、トラフィック・プロキシ・モジュール726、またはデータ収集モジュール728のうちの1つまたは複数が、OSモジュール718のユーザ空間に関連するアカウント特権を使用して実行することができる。比較して、OSモジュール718は、ルート・アカウント、スーパーユーザ、管理者、その他など、アクセスの追加の特権またはレベルを提供するアカウントを提供することができる。
【0151】
いくつかの実施態様では、モジュールのうちの1つまたは複数を、他のデバイスのメモリ716に少なくとも部分的に記憶することができ、他のデバイス上で少なくとも部分的に実行することができ、その他を行うことができる。
【0152】
データ・ストア720内の他のデータ744は、プロキシ・ホスト・デバイス322またはそのモジュールに関連する構成およびセッティングなどの情報を含むことができる。
【0153】
データ・ストア720内のエントロピ・データ742は、1つまたは複数のPAD 324から受信された時系列エントロピ情報を含むことができる。PHD 322は、エントロピ・データ742を処理して、エントロピ値138に基づいてPAD 324のうちの1つまたは複数の性能を示すデータを判定することができる。性能を示すデータを、ウェブサーバ応答の遅延など、何らかの他のシステムの性能に基づくものとすることができることを了解されたい。PHD 322は、性能を示すデータを管理サーバ318、分析システム108、またはその両方に通信することができる。
【0154】
低ページ・コンテンツをどのように検出するのか
エントロピ時系列は、ビデオ・データ、オーディオ・データ、またはマルチメディア・データ(すなわち、ビデオ、オーディオ、テキスト、またはその任意の組合せ)内のページ遷移を分析する便利な定性的ツールを提供する。この曲線の特性を定量的に記述することも望ましい。たとえば、Googleで行われた研究は、1秒を超えてコンテンツを待つユーザが、彼らが焦点を合わせている作業から精神的に切り離されることを示す。モバイル・アプリケーションでのこの一般的な性能問題を、記録されたアプリケーション・セッションのエントロピ時系列から取り込むことができる。最も単純な手法は、エントロピおよび時間にしきい値をセットすることを含むことができる。たとえば、1秒以上などの時間しきい値より長い時間期間にわたる0.45未満の正規化されたエントロピ値が、多数のアプリケーションに関して悪いユーザ経験を示す可能性があるデータの頑健なインジケータである可能性がある。他の例では、固定されたしきい値または動的なしきい値を、最適化技法または機械学習を使用して構成することができる。他の所望のビデオ遷移挙動を、同様に取り込むことができる。たとえば、ある種のスピナは、固定された周期を伴って、サイズ、形状、または他の特性を変化させる。エントロピ時系列は、小さい周期的変動としてこれらの変化を反映することができ、この小さい周期的変動は、分析技法を使用して分析され、識別され得る。
【0155】
ネットワーク・アクティビティをどのようにしてエントロピに併合するのか
ネットワーク・トラフィックおよびアプリケーションまたはウェブページに表示されるコンテンツは、基本的に連続している。ユーザ・インターフェースは、それが有しない情報を表示することができず、ネットワーク接続は、アプリケーションによって要求された情報を取り出す手段を提供する。エントロピ時系列を、共通のタイムラインを介してビデオ再生、ネットワーク・トラフィック、および他のデータ・ソースと一体化することができる。このタイムラインは、すべてのデータを含むか、データ・ソースごとにデータの選択されたサブセットを示すようにフィルタリングされ得る。たとえば、単一の要求の性能を理解することが望ましい場合がある。タイムラインを、要求の関連する時間枠にフィルタリングすることができ、データ・ソースを、関連するデータを選択するために明示的にまたは暗黙のうちに定義された特徴によってフィルタリングすることができる。
【0156】
性能問題を検出するゲートウェイとしてのエントロピ時系列
ネットワーク・トラフィックおよび他のデータ・ソースをエントロピ時系列のタイムラインに併合することは、ユーザに可視の性能問題の根本原因への深い洞察を可能にする。たとえば、少ページ・コンテンツ性能問題は、コンテンツが長い時間期間にわたってスクリーンに表示されそこなうタイムラインの領域を強調することができる。ネットワーク・トラフィックは、しばしば、タイムラインの強調された領域の前およびその中に、遅いサーバ接続および遅いコンテンツ・ダウンロードを示す。分散デバイス・クラウド内の同一のデバイスおよび他のデバイスに対するテストの複数の反復は、遅いサーバ接続が、ネットワーク問題、単一のサーバ構成、またはコンテンツ配送のより幅広い問題のどれに起因するのかを明らかにすることができる。したがって、エントロピ時系列は、単一のテスト・セッション内と別個のテスト環境の間の集約比較との両方でのユーザに可視のコンテンツ問題を比較し、診断する貴重なツールである可能性がある。
【0157】
エントロピ値138とネットワーク・スループット値とを併合したタイムラインの1つの可能な例を、下で
図8に関して説明する。
【0158】
図8は、一実施態様による、時刻140に対するエントロピ値138およびネットワーク・スループット値802のグラフ800を示す。このグラフでは、エントロピ値138は、実線によって表され、ネットワーク・スループット値802は、点線によって表される。この例では、ネットワーク・スループット値802およびエントロピ値138が、共通のタイムライン上で提示される。
【0159】
グラフ800では、第1のインターバル804(1)は、ネットワーク・スループットの減少に対応し得る。同様に、第2のインターバル804(2)は、ネットワーク・スループットの減少に対応し得る。たとえば、ネットワーク・スループットは、ネットワーク輻輳、故障、または何らかの他の要因に起因して減少した可能性がある。ネットワーク・スループット値802を、TD 102、PAD 324、または展開されたデバイス336のネットワーク・トランシーバから判定することができる。
【0160】
グラフ800では、時系列データは、エントロピ・パターン806(1)およびエントロピ・パターン806(2)など、エントロピ値138の繰り返すシーケンスを含む場合がある。エントロピ・パターン806が、時系列の異なる点で異なる振幅を有する場合があるが、同様の傾きなど、同様の形状を共有することができることを了解されたい。この例では、エントロピ・パターン806は、第1の時刻から第2の時刻までの直線的に減少するエントロピ値と、それに続く、第3の時刻から第4の時刻までのエントロピ値のインパルスまたは急激な増加とによって特徴を表され得る。一実施態様では、第1の時刻と第2の時刻との間の時間が、第3の時刻と第4の時刻との間の時間より長いものとすることができる。1つの可能な例では、エントロピ・パターン806は、「右にスワイプ」入力など、特定の入力に応答するアプリケーションの挙動を表すことができる。画像が、ユーザ対話によってディスプレイ104から「スワイプ」される時に、ディスプレイ104に関連するエントロピ・データ120は、入力に関連して減少する可能性があり、その後、新しい画像がロードされる時に急速に増加する可能性がある。別の例では、そのようなパターンが、アプリケーションが特定の機能を呼び出すたびに現れる可能性があり、そのパターンは、レビューされる必要があるかアプリケーションの期待される動作に対応する可能性があるコードを示す可能性がある。他の実施形態も可能である。
【0161】
グラフ800は、ネットワーク・スループット値802が相対的に高いタイム・インターバル中のアプリケーション・アクティビティに対応する第3のインターバル808(1)をも含むことができる。グラフ800は、ネットワーク・スループット値802が相対的に高い(第3のインターバル808(1)中のネットワーク・スループット値802より低いが)タイム・インターバル中のアプリケーション・アクティビティに対応する第4のインターバル808(2)をも含むことができる。第4のインターバル808(2)間中、エントロピ値138の変動810は、スクリーンまたはディスプレイ104上のローディング・インジケータの存在に起因する可能性がある。
【0162】
1つの可能な実施態様では、画像のシーケンスのサブセットのエントロピ値138の間の差を判定することができる。たとえば、第1の画像と第2の画像との間のエントロピ値138の差、第2の画像と第3の画像との間のエントロピ値138の差などを判定することができる。画像のシーケンスのサブセットは、シーケンスの選択された画像を含むことができる。この例では、差は、画像から画像へのエントロピ値183の変化を反映することができる。コンピューティング・デバイスの悪い性能を示す相対的に長い待ち時間を、差が差しきい値未満である時に判定することができる。たとえば、画像から画像へおよび画像のサブセットを介するエントロピ値138のわずかな変化または無変化は、ディスプレイ上の情報コンテンツが変化しておらず、凍結している可能性があることを示すことがある。いくつかの実施態様では、差しきい値を、ディスプレイに供給される情報コンテンツが少ないかない期間に対応するデータ・パターンから判定することができる。他の実施態様も可能である。
【0163】
時系列エントロピ値138およびネットワーク・スループット値802の分析が、プログラム問題、ネットワーク問題、またはその両方を明らかにする場合があることを理解されたい。さらに、ネットワーク・スループット値802に関連するエントロピ値138の分析が、アプリケーション挙動に帰する、入力データに帰する、または他のソースに帰するデータ・パターンを明らかにする場合がある。識別されたパターンは、性能を改善するためおよびオプションで経験される性能を検証するためにアプリケーション・コードを洗練するのに、開発者302によって使用され得る。他の実施態様も可能である。
【0164】
次のコード・サンプルは、ビデオの画像またはフレームごとにエントロピ値138を計算する方法を示す。他の実施態様は、ビデオの1つまたは複数の画像またはフレームについてエントロピ値138を計算することができる。
【0165】
ビデオ・エントロピの例のコード
"""
ビデオ分析
"""
from __future__ import division
import numpy as np
import cv2
DEFAULT_ENTROPY_PRECISION = 4
# ビデオ・エントロピ・メトリック分析
def entropy(array, nbins=256):
"""グレイスケール画像配列のエントロピを計算する
パラメータ
----------
array : array-like
グレイスケール画像配列。
nbins : int, optional (default: 256)
データ型によってサポートされる可能な値の個数。
グレイスケールuint8画像は、1画素あたり256個の可能な値をサポートする。
リターン
--------
entropy : float
配列エントロピ。
"""
n = array.size
if n < 2:
return 0
# 注:np.bincountは、非負の配列の頻度カウントを返す
# 長さを返したintsはmaxint(array) + 1になる。
counts = np.bincount(array.ravel())
probs = counts / n
# 0*log(0)に起因するnanまたは無限大を回避する
probs = probs[probs > 0]
# 短い配列のエントロピを調整する
base = min(n, nbins)
# 注: log_base<256>(array) = log_base<x>(array)/log_base<x>(256)
return np.sum(-probs * np.log(probs)/np.log(base))
def calculate_video_entropy(frame_generator):
"""ビデオ内の各フレームのエントロピを計算する。
パラメータ
----------
frame_generator: generatorまたはiterator
このオブジェクトは、NumPy uint8配列としてビデオ・フレームを作らなければならない。
リターン
--------
entropy_values: array
ビデオ・フレームあたりのエントロピ・メトリック。
"""
entropy_values = np.zeros(len(frame_generator))
for idx, frame in enumerate(frame_generator):
# フレームをグレイスケールに変換する
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
# フレーム・エントロピを計算する
entropy_values[idx] = round(entropy(frame), DEFAULT_ENTROPY_PRECISION)
return entropy_values
【0166】
したがって、このシステムは、デバイスによる提示に関連するデータのエントロピに少なくとも部分的に基づいて、デバイスの動作を示す情報を判定する方法を提供する。このデータを使用して、特定のアプリケーション、オペレーティング・システムなどの動作を査定することができる。当業者が認めるとおり、エントロピ・データ120を他の形で使用することもできる。
【0167】
図9は、一実施態様による、本開示の範囲内の、エントロピ値138に基づくテスト・デバイスの動作を示すデータを判定する方法の流れ
図900を示す。この方法を、TD 102、分析システム108、ワークステーション308、管理サーバ318、PHD 322、PAD 324、展開されたデバイス336、別のデバイス、またはその任意の組合せによって実行することができる。
【0168】
902では、TD 102のディスプレイ104デバイス上での提示のために記憶された第1の画像および第2の画像を含む画像のシーケンスを判定する。たとえば、画像のシーケンスを、モバイル・コンピューティング・デバイスのディスプレイ・バッファまたはキャッシュ・メモリから取り出すことができる。ディスプレイ・デバイス上での提示のために記憶された第1の画像および第2の画像を判定すること。
【0169】
904では、第1の画像内のデータ値の分布を示すことのできる第1のエントロピ値138を判定する。いくつかの実施形態では、第1のエントロピ値138は、第1の画像を構成するデータ値ごとに確率を計算することと、第1のエントロピ値138を計算するために判定された確率を合計することとによって判定され得る。
【0170】
906では、第2の画像内のデータ値の分布を示すことのできる第2のエントロピ値138を判定する。いくつかの実施形態では、第2のエントロピ値138は、第1のエントロピ値138を判定するのに使用されたものと同一の形で判定され得る。
【0171】
908では、第1のエントロピ値138および第2のエントロピ値138に基づいて、TD 102の性能を示すデータを判定する。実施態様に応じて、TD 102または分析システム108が、性能を示すデータを判定することができる。性能を示すデータは、画像のサブセットに関連し、画像のシーケンス内で経時的に繰り返すエントロピ値138のパターンを含むことができる。他の実施態様では、性能を示すデータは、時間期間にわたる実質的に静的な平均エントロピ値138を含むことができ、この平均エントロピ値138は、その間に少ない情報がTD 102のディスプレイ104に供給される待ち時間インターバル144を定義することができる。いくつかの例では、ローディング・インジケータ106が、ディスプレイ104に提示される場合がある。1つの可能な実施態様では、待ち時間インターバル144は、時間期間が時間しきい値を超える時に判定され得る。エントロピ値138は、周期的に変動する場合があり、これは、スピナなど、ディスプレイ104に提示されるローディング・インジケータ106のループしたアニメーションを示す可能性がある。他の実施態様では、エントロピ値138が、非周期的に変化する場合がある。いくつかの実施態様では、ローディング・インジケータ106が、非対称である場合があり、非周期的に変化する場合があり、これは、エントロピ値138の非周期的変動として反映される可能性がある。
【0172】
910では、テスト・デバイスの性能を示すデータを送ることができる。このデータを、データ・ストアに送ることができる。このデータは、テスト・デバイスの悪い性能を、またはアプリケーションがテスト・デバイスのプロセッサ上で実行しているかどうかを示すことができる。その代わりにまたはそれに加えて、このデータを、有線のまたは無線の通信リンクを介してコンピューティング・デバイスに送ることができる。一例では、このデータを、ネットワーク312を介してコンピューティング・デバイスに送ることができる。
【0173】
図10は、一実施態様による、本開示の範囲内の、エントロピ値138に基づくテスト・デバイス102の動作を示すデータを判定する方法の流れ
図1000を示す。この方法を、TD 102、分析システム108、ワークステーション308、管理サーバ318、PHD 322、PAD 324、展開されたデバイス336、別のデバイス、またはその任意の組合せによって実行することができる。
【0174】
1002では、テスト・デバイス102のディスプレイ104デバイスでの提示のために記憶された、第1のデータ項目および第2のデータ項目を含むデータ項目のシーケンスを判定することができる。たとえば、第1のデータ項目および第2のデータ項目を、画像データ、オーディオ・データ、触覚データなどとすることができる。
【0175】
1004では、第1のデータ項目の第1のエントロピ値138を判定する。いくつかの実施形態では、第1のエントロピ値138は、第1の画像を含む複数のデータ値のそれぞれの確率を判定することと、第1のエントロピ値138を作るために確率を合計することとによって判定され得る。いくつかの実施態様では、TD 102が、第1のエントロピ値138を判定することができる。
【0176】
1006では、第2のデータ項目の第2のエントロピ値138を判定する。TD 102が、第2のエントロピ値138を判定することができる。いくつかの実施形態では、第2のエントロピ値138を、第1のエントロピ値が計算されるのと同一の形で判定することができる。
【0177】
1008では、第1および第2のエントロピ値に基づいて、第1のデータ項目と第2のデータ項目との間の関係を判定する。たとえば、この関係は、データ項目のシーケンスのサブセットのデータ項目の間のデルタまたは差を含むことができる。この関係を、TD 102または分析システム108によって判定することができる。ディスプレイ104に静的情報または少ない情報が提示される待ち時間インターバル144中に、エントロピ値138は、TD 102、PAD 324、または展開されたデバイス336がデータをロードすることを表す、実質的に一定の平均エントロピ値138を有する可能性がある。この例では、関係は、同様のエントロピ値138を示すことができる。他の実施形態も可能である。
【0178】
エントロピ値138の繰り返すサブセットに対応するパターンを含む代替実施形態では、画像のシーケンス内の隣接する画像の間(または隣接するデータ項目の間)の差が、時系列内でパターンを検出するのに使用できる傾きを定義する場合がある。この例での用語「隣接する」は、シーケンス内でお互いに続く、画像のシーケンスの画像を指す。隣接する画像は、必ずしも大きい画像の一部ではない。画像が、参照のために順次番号を付けられる場合に、第5の画像は、シーケンス内で第4の画像と第6の画像との両方に隣接する。他の実施形態も可能である。
【0179】
1010では、第1および第2のエントロピ値138と関係とに基づいて、デバイスの性能を示すデータを生成する。このデータを、TD 102または分析システム108によって生成することができる。たとえば、性能を示すデータは、デバイスの動作またはデバイスのプロセッサ上で実行するソフトウェアの動作を示すことができる。
【0180】
1012では、デバイスの性能を示すデータを送る。このデータを、データ・ストアに送ることができる。その代わりにまたはそれに加えて、このデータを、有線または無線の通信リンクを介してコンピューティング・デバイスに送ることができる。一例では、このデータを、ネットワーク312を介してコンピューティング・デバイスに送ることができる。
【0181】
図11は、一実施態様による、本開示の範囲内の、エントロピ値138の繰り返すパターンを示すデータを判定する方法の流れ
図1100を示す。いくつかの実施態様で、この方法を、分析システム108または管理サーバ318によって実行することができる。他の実施態様では、TD 102の性能モジュール114が、アイドル期間中にバックグラウンドでエントロピ値138を処理することによって、繰り返すパターンを判定することができる。
【0182】
1102では、第1のサブセット、第2のサブセット、および第3のサブセットを含むデータ項目のシーケンスを判定する。たとえば、ディスプレイ・デバイスでの提示のために記憶された複数の画像を、ディスプレイ・バッファから取り出すことができる。データ項目は、画像、数値(1および0、0と255との間のグレイスケール値、または値の他の範囲)のマトリックス、他のタイプのデータ、またはその任意の組み合わせとすることができる。たとえば、グレイスケール画像の各データ値は、画像内の特定の画素の輝度を表すことができ、データ値は、0から255の範囲内とすることができる。他のデータ値範囲も可能である。さらに、サブセットは、そのエントロピ値138の類似性またはサブセット内のエントロピ値138の間の変化の類似性を共有するデータ項目を含む場合がある。たとえば、線形に減少する傾きとそれに続く急激な増加(エントロピ値138のすばやい変化を表すインパルスまたは急峻な傾きなど)を定義するシーケンスなど、エントロピ値138の変化の特定のシーケンスが、繰り返す可能性があるパターンを表す場合がある。減少する傾きの前の初期エントロピ値138が、時系列にまたがって変化する場合がある。さらに、減少するエントロピ値138の傾きも、変化する可能性がある。しかし、独特の減少する傾きとそれに続く急激な増加が、さまざまな時に発生する可能性がある。
【0183】
1104では、データ項目のシーケンスの第1のサブセットから、第1のエントロピ値138を判定する。第1のエントロピ値138は、第1のサブセット内のデータ項目を構成するデータ値の分布を表す可能性がある。たとえば、第1の複数のエントロピ値を、複数の画像の少なくとも一部について判定することができる。その一部を、複数の画像のサブセットとすることができる。
【0184】
1106では、データ項目のシーケンスの第2のサブセットから、第2のエントロピ値138を判定する。たとえば、第2のエントロピ値138を、第1のエントロピ値138と同一の形で判定することができる。
【0185】
1108では、データ項目のシーケンスの第3のサブセットから、第3のエントロピ値138を判定する。第3のエントロピ値138を、第1および第2のエントロピ値138と同一の形で判定することができる。第1、第2、および第3のエントロピ値138を、実施態様に応じて、TD 102、分析システム108、または管理サーバ318によって判定することができる。
【0186】
1110では、第1のエントロピ値138、第2のエントロピ値138、および第3のエントロピ値138の間の類似性に基づいて、繰り返すパターンを判定する。たとえば、繰り返すパターンを、第1の複数のエントロピ値から判定することができる。このパターンは、入力データに応答する、特定の機能の実行に応答するなどのアプリケーションの動作を表すことができる。いくつかの実施形態で、繰り返すパターンは、ローディング・インジケータ106に対応することができる。
【0187】
1112では、コンピューティング・デバイスの性能を示すデータは、繰り返すパターンに少なくとも部分的に基づく。たとえば、コンピューティング・デバイスの性能は、ネットワーク・スループット遅延、ウェブサーバ応答の遅延、または別のシステムによって引き起こされる遅延など、何らかの他のシステムの性能に基づくものとすることができる。別の例では、コンピューティング・デバイスの性能は、コンピューティング・デバイス上で実行するアプリケーション・コードに基づくものとすることができる。他の例も可能である。
【0188】
一実施態様では、性能を示すデータは、ネットワーク・スループット問題、ユーザ入力、アプリケーション機能呼出し、その他など、コンピューティング・デバイスの性能の原因の識別を含むことができる。
【0189】
1114では、性能を示すデータを送ることができる。このデータを、データ・ストアに送ることができる。その代わりにまたはそれに加えて、このデータを、有線または無線の通信リンクを介してコンピューティング・デバイスに送ることができる。一例では、このデータを、ネットワーク312を介してコンピューティング・デバイスに送ることができる。
【0190】
上の技法は、デバイスによる提示に関連するビデオまたは他の画像ベースのデータの使用を説明するが、他のタイプのデータを同様に査定することができる。たとえば、オーディオ・データまたは触覚データのエントロピを査定することができる。
【0191】
図1〜
図11に関して上で説明したデバイス、システム、および方法に関連して、データ項目(画像など)のシーケンス内のデータ値の分布のエントロピを、静的情報または少ない情報がデバイスのディスプレイ104に提示される期間に対応することのできる待ち時間インターバル144を検出するために、時系列内で評価することができる。データ値の確率の分布の合計を表すエントロピ値138を、データ項目ごとに判定することができる。
【0192】
いくつかの実施態様では、1つまたは複数のデバイスからのエントロピ値138を、機械学習(ML)システムまたはニューラル・ネットワーク(NN)システムに供給して、データを分析することができる。MLシステム、NNシステム、またはその両方は、ネットワーク・スループット値および他のデータと一緒にエントロピ値138を処理することができる。経時的に、MLシステム、NNシステム、またはその両方は、データ内のパターンを識別することができ、パターンの少なくとも一部を分類することができる。いくつかの実施態様では、MLシステム、NNシステム、またはその両方は、特定の待ち時間問題の原因を判定でき、コーディング問題を訂正し、オプションでアプリケーションの全体的な性能を改善するために、開発者302に選択的に通知することができる。
【0193】
いくつかの実施態様では、コンピューティング・デバイス上で実施される方法は、ディスプレイ104デバイス上での提示のために記憶された第1の画像および第2の画像を含む画像のシーケンスから、第1の画像内のデータ値の分布を示す第1のエントロピ値138を判定することを含むことができる。この方法は、さらに、画像のシーケンスから、第2の画像内のデータ値の分布を示す第2のエントロピ値138を判定することを含むことができる。さらに、この方法は、第1のエントロピ値138および第2のエントロピ値138に基づいてコンピューティング・デバイスの性能を示すデータを生成することと、コンピューティング・デバイスの動作を示すデータを、通信ネットワーク312を介してコンピューティング・デバイスに供給することとを含むことができる。
【0194】
本開示の範囲内で使用できる実施態様を、以下の節によって示すことができる。
【0195】
節1 コンピューティング・デバイス上で実施される方法であって、ディスプレイ・デバイス上での提示のために記憶された第1の画像および第2の画像を判定することと、第1の画像に関連するデータ値の分布を示す第1のエントロピ値を判定することと、第2の画像に関連するデータ値の分布を示す第2のエントロピ値を判定することと、第1のエントロピ値および第2のエントロピ値に基づいてコンピューティング・デバイスの性能を示すデータを生成することと、通信ネットワークを使用してコンピューティング・デバイスの性能を示すデータを第2のコンピューティング・デバイスに提供することと、を含む方法。
【0196】
節2 しきい値に対する第1の画像および第2の画像を含む画像のシーケンスのエントロピ値の比較に基づいて、少ない情報コンテンツを判定することと、時間期間にわたる少ない情報コンテンツの判定に基づいて低い性能を判定することとをさらに含む、節1に記載の方法。
【0197】
節3 性能を示すデータの生成は、第1のエントロピ値がしきい値より小さいと判定することと、第2のエントロピ値がしきい値より小さいと判定することとをさらに含む、節1から2のいずれか1項に記載の方法。
【0198】
節4 性能を示す生成されたデータは、第1のエントロピ値と第2のエントロピ値との間の差を判定することと、差がしきい値より小さいと判定することとをさらに含む、節1から3のいずれか1項に記載の方法。
【0199】
節5 ディスプレイ・デバイス上での提示のために記憶された複数の画像を判定することであって、複数の画像は、第1の画像および第2の画像を含む、判定することと、複数の画像の少なくとも一部の第1の複数のエントロピ値を判定することと、第1の複数のエントロピ値内の繰り返すパターンを判定することとをさらに含み、コンピューティング・デバイスの性能を示すデータは、繰り返すパターンに少なくとも部分的に基づく節1から4のいずれか1項に記載の方法。
【0200】
節6 通信インターフェースと、ディスプレイ・デバイスと、コンピュータ実行可能命令を記憶するメモリと、ディスプレイ・デバイス上での提示のために記憶された複数の画像を判定し、複数の画像の少なくとも一部のエントロピ値であって、画像のデータ値の分布を表すエントロピ値の第1のセットを判定し、通信インターフェースを使用して、エントロピ値の第1のセットに少なくとも部分的に基づくデータを送るためにコンピュータ実行可能命令を実行するプロセッサとを含むコンピューティング・デバイス。
【0201】
節7 プロセッサに、第1の画像から第1のデータ値を選択させ、第1のデータ値の第1の確率値であって、第1のデータ値が第1の値を有する尤度を示す第1の確率値を判定させ、第1の画像から第2のデータ値を選択させ、第2のデータ値の第2の確率値であって、第2のデータ値が第2の値を有する尤度を示す第2の確率値を判定させ、第1の画像の第1のエントロピ値を判定するために第1の確率値および第2の確率値を合計させるコンピュータ実行可能命令をさらに含み、エントロピ値の第1のセットは、第1のエントロピ値を含む節6に記載のコンピューティング・デバイス。
【0202】
節8 プロセッサに、エントロピ値の第1のセットの少なくとも一部がしきい値より小さいと判定させ、少なくとも一部が時間しきい値より長い時間期間に対応すると判定させるコンピュータ実行可能命令をさらに含み、データは、悪い性能を示す節6から7のいずれか1項に記載のコンピューティング・デバイス。
【0203】
節9 プロセッサに、複数の画像の一部の第1の画像のデータ値のサブセットを判定させ、データ値のサブセットに基づいて第1の画像の第1のエントロピ値を判定させるコンピュータ実行可能命令をさらに含む、節6から8のいずれか1項に記載のコンピューティング・デバイス。
【0204】
節10 プロセッサに、複数の画像の第1のセットに関連するエントロピ値の第1のセットを判定させ、ヒストリカル・データに対応するエントロピ値の第1のセット内のパターンを判定させる命令をさらに含む、節6から9のいずれか1項に記載のコンピューティング・デバイス。
【0205】
節11 プロセッサに、複数の画像の第1のセットに関連するエントロピ値の第1のセットを判定させ、複数の画像の第2のセットに関連するエントロピ値の第2のセットを判定させ、エントロピ値の第1のセットおよびエントロピ値の第2のセットのうちの少なくとも1つ内のパターンを判定させる命令をさらに含む、節6から10のいずれか1項に記載のコンピューティング・デバイス。
【0206】
節12 プロセッサに、第1の時刻に第1の入力を判定させ、第1の入力に関連するパターンを判定させる命令をさらに含む、節6から11のいずれか1項に記載のコンピューティング・デバイス。
【0207】
節13 プロセッサに、複数の画像の第1の画像の第1のエントロピ値を判定させ、複数の画像の第2の画像の第2のエントロピ値を判定させ、第1のエントロピ値と第2のエントロピ値との間の差を判定させ、差がしきい値より小さいと判定させる命令をさらに含む、節6から12のいずれか1項に記載のコンピューティング・デバイス。
【0208】
節14 出力デバイスを介する提示のためのデータ項目のシーケンスであって、第1のデータ項目および第2のデータ項目を含むシーケンスを判定し、第1のデータ項目に関して、第1のデータ項目内のデータ値の分布を表す第1のエントロピ値を判定し、第2のデータ項目に関して、第2のデータ項目内のデータ値の分布を表す第2のエントロピ値を判定し、第1のエントロピ値および第2のエントロピ値に基づいてデータを生成するプロセッサを含むデバイス。
【0209】
節15 プロセッサが、第1のデータ項目の第1のデータ値に関して、第1のデータ値が第1の値を有する尤度を示す第1の確率値を判定し、第1のデータ項目の第2のデータ値に関して、第2のデータ値が第2の値を有する尤度を示す第2の確率値を判定するように構成されることをさらに含み、第1のエントロピ値は、第1の確率値および第2の確率値の合計を含む節14に記載のデバイス。
【0210】
節16 プロセッサが、しきい値より小さいエントロピ値を有するデータ項目のシーケンスのサブセットを判定し、サブセットが時間しきい値を超える時間期間に対応すると判定するように構成されることをさらに含む、節14から15のいずれか1項に記載のデバイス。
【0211】
節17 プロセッサが、データ項目のシーケンスの一部のエントロピ値を判定し、経時的なエントロピ値のパターンを判定し、エントロピ値のパターンに基づいてデータを生成するように構成されることをさらに含む、節14から16のいずれか1項に記載のデバイス。
【0212】
節18 プロセッサが、複数のデータ項目の第1のデータ項目の第1のエントロピ値を判定し、複数のデータ項目の第2のデータ項目の第2のエントロピ値を判定し、第1のエントロピ値と第2のエントロピ値との間の差を判定し、差がしきい値より小さいと判定するように構成されることをさらに含む、節14から17のいずれか1項に記載のデバイス。
【0213】
節19 デバイスは、入力データを受信する通信インターフェースをさらに含み、プロセッサが、入力データをデータ項目のシーケンスのデータ項目のサブセットの1つまたは複数のエントロピ値に関連付け、パターンが入力データに対応すると判定するように構成されることをさらに含む、節14から18のいずれか1項に記載のデバイス。
【0214】
節20 プロセッサが、第1のデータ項目のデータ値のサブセットを判定し、データ値のサブセットに基づいて第1のデータ項目の第1のエントロピ値を判定するように構成されることをさらに含む、節14から19のいずれか1項に記載のデバイス。
【0215】
本開示で議論されるプロセスを、ハードウェア、ソフトウェア、またはその組合せで実施することができる。ソフトウェアの文脈では、説明される動作は、1つまたは複数のハードウェア・プロセッサによって実行される時に列挙された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行するか特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、および類似物を含む。当業者は、図面に示されたある種のステップまたは動作を除去し、組み合わせ、または代替の順序で実行することができることをたやすく認めよう。すべてのステップまたは動作を、順次または並列に実行することができる。さらに、動作が説明される順序は、限定として解釈されることを意図されたものではない。
【0216】
実施形態を、本開示で説明されるプロセスまたは方法を実行するためにコンピュータ(または他の電子デバイス)をプログラムするのに使用できる命令をその上に記憶された(圧縮された形または非圧縮の形で)非一時的コンピュータ可読記憶媒体を含むソフトウェア・プログラムまたはコンピュータ・プログラム製品として提供することができる。コンピュータ可読記憶媒体は、電子記憶媒体、磁気記憶媒体、光学記憶媒体、量子記憶媒体、その他のうちの1つまたは複数とすることができる。たとえば、コンピュータ記憶媒体は、ハード・ドライブ、光ディスク、読取専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、磁気カード、光カード、ソリッド・ステート・メモリ・デバイス、または電子命令を記憶するのに適する他のタイプの物理媒体を含むことができるが、これに限定はされない。さらに、実施形態を、一時的機械可読信号(圧縮された形または非圧縮の形の)を含むコンピュータ・プログラム製品として提供することもできる。搬送波を使用して変調されたものであれ変調されないものであれ、一時的機械可読信号の例は、1つまたは複数のネットワークによって転送される信号を含む、コンピュータ・プログラムをホスティングするか実行するコンピュータ・システムまたは機械がアクセスするように構成され得る信号を含むが、これに限定はされない。たとえば、一時的機械可読信号は、インターネットによるソフトウェアの伝送を含むことができる。
【0217】
これらのプログラムの別々のインスタンスを、任意の個数の別々のコンピュータ・システムにまたがって実行しまたは分散させることができる。ある種のステップが、ある種のデバイス、ソフトウェア・プログラム、プロセス、またはエンティティによって実行されるものとして説明されたが、そうである必要はなく、さまざまな代替の実施態様が、当業者によって理解されよう。
【0218】
さらに、当業者は、上で説明された技法をさまざまなデバイス、環境、および状況で使用できることをたやすく認めよう。本主題が、構造的特徴または方法論的行為に固有の言葉で説明されたが、添付の特許請求の範囲で定義される主題が、必ずしも説明された特定の特徴または行為に限定されないことを理解されたい。そうではなく、特定の特徴および行為は、特許請求の範囲を実施する例示的な形として開示されるものである。