AWS Device Farm よくある質問

実際のモバイルデバイスでのテスト

AWS Device Farm は、開発者が AWS クラウドで実際の Android デバイスや iOS デバイスをテストして操作することによって、アプリケーション品質、市場投入までの時間、および顧客満足度を向上させることを可能にします。開発者は、アプリケーションとテストスクリプトをアップロードし、自動化されたテストを何百台もの実際のデバイスで同時に実行して、その結果、スクリーンショット、動画、およびパフォーマンスデータを数分で取得することができます。さらに、ウェブブラウザを介してデバイスをスワイプ、ジェスチャー、および操作することにより、お客様の問題をデバッグ、再現することができます。

AWS Device Farm は、モバイルアプリケーションの品質を高めるために、それらのアプリケーションの構築、テスト、サポートを行う開発者、QA チーム、顧客サポート担当者のために設計されています。アプリケーションの品質は、ますます重要になっていることに加えて、デバイスモデルの数、ファームウェアと OS のバージョンのばらつき、キャリアと製造元によるカスタマイズ、およびリモートサービスとその他アプリケーションへの依存性のためにより複雑になっています。AWS Device Farm は、複数のデバイスでテストを実行することによって開発プロセスを迅速化し、自動化されたテストを実行する機能、そして顧客の問題の再現、新機能の予備テスト、および手動テスト計画の実施などの手動タスクを実行する機能を開発者、QA、およびサポート担当者に提供します。また、AWS Device Farm を使用すれば、社内のデバイスラボ、ラボマネージャ、オートメーションインフラストラクチャの開発が不要になるため、コストを大幅に削減できます。

AWS Device Farm では、ネイティブおよびハイブリッドの Android、iOS、ウェブアプリ、クロスプラットフォームアプリ (PhoneGap、Titanium、Xamarin、Unity、およびその他のフレームワークで作成されたアプリケーションを含む) がサポートされています。

AWS Device Farm のテストは実際のデバイス上で実行されます。テストが実行されるデバイスには、OEM デバイスとキャリアブランドのデバイスがあります。

テストとリモートアクセスセッションの設定

AWS の使用開始ガイドを参照してください。

AWS Device Farm は、Internet Explorer 9 以降、および Chrome、Firefox、Safari の最新バージョンで動作します。

ウェブアプリケーションは、Android では Chrome、iOS では Safari でテストできます。

AWS Device Farm でサポートされている最大ファイルサイズは 4 GB です。

組み込まれているテストを設定するための設定やソースコードは必要ありません。Android アプリケーションはそのまま送信できます。iOS アプリケーションは、シミュレータではなく「iOS Device」をターゲットとして構築する必要があります。

アプリケーションとテストパッケージは 30 日後に自動的に削除されます。ログ、動画録画、その他のアーティファクトは、400 日間保存されます。さらに、AWS Device Farm コンソールまたは API 経由でファイルおよび結果をいつでも削除できます。

テストの実行が完了すると、アプリのアンインストールを含む一連のクリーンアップタスクが各デバイスで実行されます。アプリケーションのアンインストールまたは他のいずれかのクリーンアップステップが確認できない場合、デバイスは削除され、再び利用することはできなくなります。

AWS では、追加のクリーンアップステップを導入し、クリーンアッププロセスを向上させていますが、場合によっては (特に、アプリケーションのコンテキスト外でデバイスのシステムを使用する場合)、セッション間でデータが存続する可能性があります。この理由に加え、AWS Device Farm により各デバイスの使用中の動画とアクティビティーの実行のログがキャプチャされているため、自動化されたテストならびにリモートアクセスのセッションの間には、アカウント情報 (Google アカウント、Apple ID など)、個人情報、またその他のセキュリティに抵触する可能性のある詳細情報など、重要な情報を提供したり入力したりしないよう推奨されています。

iOS では、埋め込まれたプロビジョニングプロファイルをワイルドカードプロファイルに置き換え、アプリケーションに再署名します。補助データが提供される場合は、インストールの前にそれをアプリケーションパッケージに追加して、アプリケーションのサンドボックスにデータが存在するようにします。iOS アプリケーションの再署名により、特定のエンタイトルメントが削除されます。これには、App Group、Associated Domains、Game Center、HealthKit、HomeKit、Wireless Accessory Configuration、In-App Purchase、Inter-App Audio、Apple Pay、プッシュ通知および VPN 設定と管理が含まれます。

Android では、アプリケーションに再署名します。再署名によって、Google Maps Android API などのアプリケーション署名に依存する機能が動作しなくなる場合があります。また、DexGuard などの製品から利用できる著作権侵害および改ざんに対する検知機能がトリガーされる場合もあります。また、組み込みテストの場合、スクリーンショットの撮影と保存に必要な権限が与えられるようにマニフェストを変更する場合もあります。

デバイスの選択

AWS Device Farm では、多数の Android、iOS および Fire OS デバイスをサポートしており、サポート対象デバイスは今でも増え続けています。人気のある新しいデバイスが製造元からリリースされると同時に、それらを追加しています。また、OS の新規バージョンがリリースされると、新しいデバイスがサポート対象として追加されます。利用可能なデバイスのリストを参照してください。

現在、インドの国際市場向けデバイスが追加されています。デバイス群は、市場のデータとお客様からのフィードバックをもとに、今後も引き続き更新していく予定です。フリートに含まれていないデバイスをご希望の場合は、AWS までお知らせください

自動化されたテストでは、デバイスはデバイスプールと呼ばれるコレクションを介して選択されます。厳選されたデバイスプールがいくつか自動的に提供されますが、お客様が独自のプールを作成することも可能です。テストの実施中、テストは指定されたプール内に存在する、アプリケーションおよびテストとの互換性があるすべてのデバイスに対して実行されます。リモートアクセスについては、製造元、モデル、キャリア形式、およびオペレーティングシステムのバージョンに基づいて希望のデバイスを選択します。選択後は、アプリケーションとその他データのアップロード、およびデバイスのその他設定をオプションで実行できます。次に、Device Farm は要求に一致する利用可能なデバイスを見つけ、ブラウザにデバイスのディスプレイを表示します。その後、デバイスの操作や、スクリーンショットやビデオのキャプチャが可能になります。

はい。テストデバイスには、デバイスの製造元またはキャリアによって多数のアプリケーションが事前インストールされています。

はい。すべてのデバイスには、インターネットへのアクセスが可能な WiFi 接続が装備されています。お使いのシステムが社内にある (つまり、企業ファイアウォールの内側にある) 場合、54.244.50.32 から 54.244.50.63 の IP 範囲を許可できます。すべてのデバイストラフィックは、これらの IP から送信されます。

実際のキャリア接続をテストすることはできませんが、ネットワークシェーピング機能を使用して接続タイプと条件をシミュレートできます。実行をスケジュールするときは、「3G」または「Lossy LTE」などの厳選されたネットワークプロファイルを選択、または独自のプロファイルを作成して、スループット、ジッター、および損失などのパラメーターを制御できます。デバイスからのすべての WiFi トラフィックは、選択するプロファイルに応じてテスト期間中にシェーピングおよび操作されます。テストスクリプトからネットワークパラメーターを変更することで、動的な環境をシミュレートすることもできます。

いいえ。デバイスはキャリアと接続されていないため、電話をかけたり、SMS メッセージを送信したりすることはできません。

はい。デバイスのカメラは、フロントカメラとリアカメラのいずれも使用できます。デバイスのマウント方法によっては、画像や動画が暗くぼやけて見えることがあります。

アプリケーションのテスト

組み込みの互換性テストスイートでは、アプリケーションのインストール、アンインストール、起動、Fuzz を実行できます。

Fuzz では、起動直後に UI に対するファズテストを実行します。このテストは、アプリケーションに対してランダムなユーザー入力 (タッチ、スワイプ、キーボード入力) を高速にストリーミングします。ユーザーは、イベント数、イベント間の遅延、およびイベントのランダム化に使用されるシードを設定できます。複数のテスト実行に同じシードを使用すると、同じイベントシーケンスが生成されます。

AWS Device Farm は、Android および iOS プラットフォームのために、ネイティブ、ハイブリッド、およびウェブアプリケーションでのテストをサポートしています。デフォルトでは、次のフレームワークがサポートされています: Appium Java JUnit、Appium Java TestNG、Appium Python、Appium Ruby、Appium NodeJS、Instrumentation (JUnit、Espresso、およびほとんどのインストルメンテーションベースのテストを含む)、および XCTest (XCUI および KIF を含む)。詳細およびサポートされているフレームワークの詳細なリストについては、ドキュメントをご覧ください。

Appium Java JUnit、Appium Java TestNG、または Appium Python で記述されたテストを実行できます。

サポート対象のフレームワークについては常に評価を行っています。お問い合わせください。

サポートされている自動フレームワークを使用している場合は、スクリーンショットを撮るタイミングをお客様が自由に決めることができます。撮影されたスクリーンショットは自動的にレポートに含められます。

はい。Google Play Services は、同サービスをサポートするデバイスにインストールされています。このサービスは新しいバージョンが利用可能になるとアップデートされます。

いいえ。デバイスにはアクティブな Google アカウントは用意されていません。

AWS Device Farm では、録音および再生用のスクリプトツールを備えた Espresso や Robotium などのフレームワークをサポートしています。

いいえ。AWS Device Farm はプロビジョニングファイルを自動的に差し替えてアプリケーションが再署名され、デバイスでデプロイされます。

いいえ。しかし、ログをダウンロードし、スタックトレースをローカルでシンボリケートすることができます。

はい。ProGuard を使用すればテストできます。海賊版対策機能を備えた DexGuard を使用する場合は、アプリケーションを再署名できないためテストを実行できません。

デバイスはインターネットにアクセスできますが、広告が表示される保証はありません。AWS Device Farm でテストするビルドからは広告を削除しておくことをお勧めします。

はい。Calabash、Appium、UI Automation などのクライアント/サーバーフレームワークを使用している場合、ホストからインターネットにアクセスし、限られたシェルコマンドを実行することができます。

最大 4 GB の .zip アーカイブを利用できます。Android では、アーカイブが外部メモリのルートに解凍され、iOS ではアプリケーションのサンドボックスに解凍されます。Android の拡張ファイル (OBB) については、その OS のバージョンに対応する場所に自動的に配置されます。詳細については、デベロッパーガイドを参照してください。

はい。複数のアプリケーションとそのインストール順序を選択できます。依存関係のあるアプリケーションはテスト開始前にインストールされます。

はい。アップグレードフローをテストするには、古いバージョンのアプリケーションをアップロードおよびインストールしてから新しいバージョンをインストールしてテストします。

はい。緯度と経度を指定すれば、デバイスの GPS が上書きされます。

はい。デバイスのデフォルトのロケール設定を上書きするロケール(例えば、"en_US")を指定できます。

テストは即座に実行キューに登録され、通常は数分以内に開始されます。1 つ、または複数のデバイスが利用できない場合、これらのデバイスでのテスト実行は、デバイスが利用可能になるまでキューに登録されたままとなります。他のデバイスでのテストは続行されます。

許容される最長テスト時間は 150 分です。 

はい。Jenkins を用いた継続的インテグレーション環境用のプラグインと、Android Studio と互換性のある Gradle プラグインがあります。AWS Device Farm は、API 経由でのテストの設定、およびテスト結果のダウンロードを含む、すべてのコンソール機能に対するプログラム的なサポートも提供します。詳細については、AWS Device Farm の API リファレンスを参照してください。AWS Device Farm には、API だけでなく、AWS SDK からもアクセスできます。

結果の確認

AWS Device Farm テストレポートには、合否情報、クラッシュレポート、テストログ、デバイスログ、スクリーンショット、動画、およびパフォーマンスデータが含まれています。レポートには、詳細なデバイスごとのデータと、所定のエラーの発生回数といった高レベルの結果の両方が記載されています。リモートアクセスの結果には、セッションのログと動画が含まれています。

AWS Device Farm レポートには、完全な logcat (Android) およびデバイスログ (iOS) と、デバイスホストや特定のテストフレームワークのログが含まれます。

logcat (Android) またはデバイスログ (iOS) にデータを書き出すと、このログエントリがレポートに出力されます。AWS Device Farm では、デバイスまたはデバイスホストのインターネット接続を使用して、テストスクリプト経由でファイルを転送できますが、非標準のログやその他のアーティファクトは収集されません。

料金

料金は、「デバイス分」に基づいて算出されます。「デバイス分」は、選択された各デバイスにおけるテストの時間によって決まります。AWS Device Farm には、1000 デバイス分の無料トライアル期間があります。* その後は、1 デバイス分ごとに 0.17 USD が課金されます。テストのニーズが増大した場合、1 デバイスあたり 250 USD の固定月額で無制限のテストが実施できる、定額テストプランも利用できます。

最初の 1000 デバイス分が無料で提供されます。トライアルは 1 回だけ利用でき、更新はできません。トライアル割り当て分をすべて使用した後は、標準レートとして 1 デバイス分につき 0.17 USD が課金されます。

デバイス分は請求単位です。デバイス分は、テストの実施のために選択された各デバイスでのアプリケーションとテストのインストール、実行、およびアンインストールにかかる時間 (分単位) を測定した値です。この単価は、デバイス、テストまたはアプリケーションタイプにかかわらず、固定されています。デバイス分は、デバイスエラーまたはシステムエラーなしで完了したテストのみに対して課金されます。同様に、リモートアクセスセッションでは、デバイス分は、仕様を満たすデバイスを準備してから、デバイスに配置されているアプリケーションとデータを完全に削除するまでの時間です。

ビジネスニーズに応じて使用量を動的に拡大/縮小できます。上限はなく、初期費用は不要です。

最初の 1000 デバイス分は無料で提供されます。* これは一回限りのトライアルで、更新されません。トライアル割り当て分をすべて使用した後は、標準レートとして 1 デバイス分につき 0.17 USD が課金されます。

定額プランを利用すると、月額 250 USD からテストとリモートアクセスを無制限でご利用いただけます。定額料金は、各使用タイプ (自動テストまたはリモートアクセス) と各デバイスファミリー (Android または iOS) ごとに購入するデバイススロットの数に基づき、スロットにつき月額 250 USD です。デバイススロットは同時実行に対応しています。

例えば、自動化されたテスト用に Android デバイススロットを 10 個購入し、100 台の Android デバイスでのテストをスケジュールする場合、Device Farm は、選択したデバイスですべてのテストが完了するまで、1 度に最大 10 デバイスでテストを実行します。さらに多くのスロットを購入すると、より早く結果を得ることができます。1 か月間に実行するテストまたはリモートアクセスセッションの回数にかかわらず、デバイススロットにつき固定月額 250 USD が請求されます。1 つ以上のデバイススロットのサブスクリプションをいつでもキャンセルできます。キャンセルは次回の更新日 (最初のアクティブなデバイススロットを購入した月の日) に有効になります。スロットは、AWS Device Farm コンソール、AWS コマンドラインターフェイス (AWS CLI)、または AWS Device Farm API からご購入いただけます。詳細については、AWS のドキュメントを参照してください。

いつでもデバイススロットを追加して、すぐに利用可能な状態にできます。また、1 つ以上のデバイススロットのサブスクリプションをいつでもキャンセルできます。キャンセルは次回の更新日 (最初のアクティブなデバイススロットを購入した月の日) に有効になります。

はい。テストの作成時に、定額デバイススロットの使用、または従量制のデバイス分の使用を選択することができます。従量課金では同時実行に制限がないため、デバイススロットを使用する場合よりも高速にテストを実施できる柔軟性のメリットを享受できます。

プライベートデバイスは、お客様のアカウント専用の電話やタブレットなどの物理インスタンスです。プライベートデバイスにはカスタマイズされた静的構成を設定することができ、カスタム OS イメージを実行できます。各デバイスはお客様用にデプロイされ、サブスクリプション終了時に削除されます。

お客様のアカウントにある各プライベートデバイスは、プライベートデバイスのサブスクリプションと見なされます。毎月のサブスクリプション料金はデバイスのコストに基づいて階層化されており、200 USD/月からとなっています。最小サブスクリプション期間の経過後は、いつでもサブスクリプションをキャンセルすることができます。詳細については、AWS までお問い合わせください。

はい。テストの実行またはリモートアクセスセッション用にデバイスを選択するときは、プライベートデバイスとパブリックデバイスの両方が表示されます。プライベートデバイスとパブリックデバイスの両方で構成されるデバイスプールを作成することもできます。プライベートデバイスの詳細については、お問い合わせください。

デスクトップブラウザでのテスト

Selenium は、ウェブブラウザの対話を自動化するオープンソースフレームワークです。Selenium の詳細については、こちらをご覧ください。

Device Farm を使用すると、AWS クラウドでホストされているさまざまなデスクトップブラウザとブラウザバージョンで Selenium テストを実行できます。Device Farm は、Selenium テストのクライアント側の実行モデルに従います。つまり、テストはお客様のローカルマシンで実行されますが、Selenium API を通じて AWS Device Farm でホストされているブラウザとやり取りします。

開始するには、こちらの入門ガイドをご覧ください。

すべてのブラウザは、Microsoft Windows Server で実行される EC2 Windows インスタンスでホストされています。

デスクトップブラウザとサポートされているブラウザのバージョンの一覧は、こちらでご確認いただけます。

Device Farm がサポートする Selenium の必要な機能のリストは、こちらでご確認いただけます。

Device Farm は、テストエラーのトラブルシューティングに役立つように、テスト全体のコンソールログ、ウェブドライバーログ、アクションログ、ビデオ録画を生成します。

はい。Device Farm は、Appium を使用して実際のモバイルデバイスでのウェブアプリのテストをサポートしています。詳細については、Appium Web Testing の「開発者ガイド」をご覧ください。実際のモバイルデバイスでテストするには、Device Farm はサーバー側の実行モデルに従うため、テストをサービスにアップロードする必要があります。

この機能の制限の一覧については、こちらをご覧ください。

料金は、インスタンス分に基づいて計算されます。インスタンス分は、選択した各ブラウザインスタンスでのテストの期間によって決まります。ブラウザインスタンス 1 分あたり 0.005 USD が請求されます。

インスタンス分は、Device Farm で Desktop Browser Testing を実行したときにかかる請求単位です。インスタンス分は、テストの実行のために選択したすべてのブラウザインスタンスでテストを実行するのにかかる時間 (分単位) を測定したものです。0.005 USD の単価は、選択したブラウザまたはブラウザのバージョンに関係なく一定です。ブラウザをホストする EC2 インスタンスの起動、初期化、またはティアダウンにかかる時間については請求しません。