AWS Device Farm
AWS クラウド上の実機モバイルデバイスとデスクトップブラウザでアプリケーションの自動テストとリモートアクセスを提供するサービス
概要
AWS Device Farm は、AWS がホストする実機のスマートフォン、タブレット、デスクトップブラウザ上でアプリケーションの自動テストおよび手動テストを実行できるクラウドテストサービスです。エミュレーターではなく物理デバイスを使用するため、実際のユーザー環境に近い条件でクラッシュ、パフォーマンス劣化、UI の崩れを検出できます。Android、iOS、Web アプリケーションに対応し、Appium、Espresso、XCTest、Calabash など主要なテストフレームワークをサポートしています。テスト結果にはスクリーンショット、動画、ログ、パフォーマンスデータが含まれ、問題の再現と原因特定を効率化します。
デバイスプールとテスト実行の仕組み
Device Farm のテスト実行は、デバイスプールの構成から始まります。デバイスプールは、テスト対象とする物理デバイスの集合を定義したもので、OS バージョン、メーカー、画面サイズなどの条件で絞り込みます。たとえば「Android 12 以上の Samsung 端末」「iOS 16 以上の iPhone」のようにプールを構成し、ターゲットユーザーの実環境を再現します。テスト実行 (Run) を作成すると、アップロードしたアプリバイナリ (.apk / .ipa) とテストパッケージがプール内の各デバイスに配布され、並列に実行されます。各デバイスでのテストは独立した環境で動作し、前回のテストデータが残ることはありません。実行中はリアルタイムでステータスを確認でき、完了後にはデバイスごとのスクリーンショット、動画録画、logcat / syslog、CPU・メモリ使用率のパフォーマンスデータが生成されます。料金体系はデバイス分単位の従量課金と、月額定額のアンリミテッドプランの 2 種類があり、テスト頻度に応じて選択します。
自動テストフレームワークとテストスイート
Device Farm は複数の自動テストフレームワークをネイティブにサポートしています。Android では Appium (Java / Python / Node.js)、Espresso、Calabash、UI Automator に対応し、iOS では Appium、XCTest (XCUITest)、Calabash を利用できます。Web アプリケーションのテストには Selenium WebDriver を使用し、Chrome、Firefox のデスクトップブラウザ上で実行します。テストスイートの構成では、テストスペックファイル (testspec.yml) でテスト実行前後のフック処理を定義できます。依存ライブラリのインストール、環境変数の設定、テスト前のデータセットアップ、テスト後のアーティファクト収集などをカスタマイズ可能です。ビルトインのファズテスト (Built-in Fuzz) を使えば、テストコードを書かずにランダムな UI 操作でクラッシュを検出することもできます。テスト結果はスイート単位、テストケース単位で集計され、失敗したテストのスクリーンショットとログから問題箇所を素早く特定できます。
CI/CD 統合とテスト結果の分析
Device Farm を CI/CD パイプラインに組み込むことで、コードの変更ごとに自動的に実機テストを実行できます。AWS CodePipeline との統合ではネイティブのアクションプロバイダーが用意されており、ビルドステージの後にテストステージとして Device Farm を追加するだけで構成できます。Jenkins、GitHub Actions、Bitrise などのサードパーティ CI ツールからは、AWS CLI または AWS SDK 経由で Device Farm API を呼び出します。テスト結果の分析では、Artifacts API でスクリーンショット、動画、ログを一括ダウンロードし、社内のテストレポートシステムに取り込むワークフローが実用的です。パフォーマンスデータ (CPU、メモリ、ネットワーク、FPS) の時系列推移を追跡すれば、リリースごとのパフォーマンス回帰を検出できます。テスト結果を S3 にエクスポートし、Athena で集計分析することで、デバイス別・OS バージョン別の障害傾向を可視化する運用も効果的です。