AWS Device Farm で自動化するモバイルアプリテスト - 実機テストと CI/CD 統合
iOS と Android の実機でテストを自動実行し、CI/CD パイプラインに統合する。テストフレームワークの選定基準とリモートアクセスによる手動テストも紹介します。
Device Farm の概要とモバイルテストの課題
モバイルアプリケーションの品質保証は、デバイスの多様性が最大の課題です。Android と iOS の異なる OS バージョン、画面サイズ、ハードウェア仕様の組み合わせは数千パターンに及び、すべてを手動でテストすることは現実的ではありません。オンプレミスでデバイスラボを構築する場合、デバイスの購入 / 管理、OS アップデートの適用、ネットワーク環境の整備に多大なコストがかかります。Device Farm は AWS がホストする実機デバイスでモバイルアプリケーションと Web アプリケーションをテストするサービスです。Samsung Galaxy、Google Pixel、iPhone、iPad など、AWS が 2,500 以上と案内するデバイス (2026 年 10 月時点) が利用可能で、OS バージョンも複数世代をカバーしています。テストは自動テスト (テストスクリプトの実行) とリモートアクセス (実機の手動操作) の 2 つのモードを提供し、開発チームはテストの設計と品質改善に集中できます。
テストフレームワークとデバイスプール管理
Device Farm は Android では Appium と Instrumentation (Espresso など)、iOS では Appium、XCTest、XCTest UI に対応し、Web アプリケーションは Appium でテストできます。クロスプラットフォームのテストには Appium が最適で、同一のテストコードで iOS と Android の両方をテストできます。ビルトインテストスイートはテストコードの記述なしで基本的なテストを実行します。Fuzz テストはランダムなユーザー操作を生成してクラッシュを検出します。デバイスプールは、テスト対象のデバイスをグループ化する仕組みで、OS バージョン、画面サイズ、メーカーなどの条件でフィルタリングできます。トップデバイスプール機能は市場シェアの高いデバイスを自動的に選定します。テスト結果にはログ、スクリーンショット、動画が含まれ、問題の再現と原因特定に活用できます。以下は AWS CLI でテスト実行をスケジュールする例です。
aws devicefarm schedule-run \
--project-arn arn:aws:devicefarm:us-west-2:123456789012:project:EXAMPLE \
--app-arn arn:aws:devicefarm:us-west-2:123456789012:upload:EXAMPLE \
--device-pool-arn arn:aws:devicefarm:us-west-2:123456789012:devicepool:EXAMPLE \
--test type=APPIUM_JAVA_JUNIT,testPackageArn=arn:aws:devicefarm:...CI/CD パイプラインへの統合
CodePipeline のテストステージに Device Farm アクションを追加することで、ビルド後に自動的にデバイステストを実行できます。テスト失敗時にパイプラインが停止し、不具合のあるビルドが本番にデプロイされることを防止します。Jenkins や GitHub Actions からも AWS CLI または SDK 経由で Device Farm のテストランを作成できます。Amplify のビルドパイプラインにテストフェーズを追加し、ビルド成功後に自動的に Device Farm でのテストを実行する構成も可能です。全デバイスでテストすると時間とコストがかかるため、市場シェアの高いデバイスを優先的に選定し、リリース前のフルテストと日次のスモークテストで対象デバイス数を使い分ける戦略が有効です。リモートアクセス機能を使えば、クラウド上の実機デバイスにリアルタイムで接続し、手動での探索的テストやデバッグを実行できます。
パフォーマンステストとネットワークシミュレーション
ネットワークシミュレーション機能により、3G、4G、Wi-Fi、低帯域幅、高レイテンシなど様々なネットワーク条件下でのアプリケーション動作をテストできます。新興国市場向けのアプリケーションでは、低速ネットワーク環境での動作検証が品質保証に不可欠です。GPS シミュレーション機能は、位置情報を使用するアプリケーションのテストに活用でき、世界中の任意の座標でのテストが可能です。
テスト結果の管理と品質モニタリング
テスト実行中のスクリーンショット、ビデオ録画、ログ出力は、サービス側が管理する S3 バケットに自動的に保存されます。テスト結果は CodePipeline のコンソールから直接確認でき、失敗したテストケースの詳細、スクリーンショット、デバイスログにアクセスできます。多くの実機デバイスでの並列テスト実行により、デバイス互換性検証を手動テストより短い時間で行えます。
Device Farm の料金
Device Farm は 2 つの料金モデルを提供しています。従量課金はデバイス 1 台あたり 1 分約 0.17 ドルで、テスト時間に応じた課金です (2026 年 10 月時点)。定額プランは自動テストとリモートアクセス、Android と iOS のそれぞれで、デバイススロット 1 つ (同時に使える 1 台分) あたり月額 250 ドルで、無制限に使用できます。複数デバイスの定額プランも用意されています。CI/CD パイプラインで毎日テストを実行する場合、月間のテスト時間が約 25 時間を超えると定額プランの方が安価になります。リモートアクセス (手動テスト) は 1 分あたり約 0.17 ドルです。初回は 1 回限りの無料トライアルがあります。オンプレミスのデバイスラボ構築にはまとまった初期投資が必要ですが、Device Farm は初期費用ゼロでテスト基盤を構築できます。
まとめ
Device Farm は実機デバイスでのモバイルアプリテストを自動化するサービスです。多くのデバイスを購入 / 管理することなく、主要なテストフレームワークで自動テストを実行できます。CI/CD パイプラインに統合することで、デバイス固有の不具合を早期に検出し、品質の高いモバイルアプリケーションをリリースできます。ネットワークシミュレーションにより、ユーザーが実際に体験する環境に近い条件でのテストが可能になり、リリース後の不具合を減らすことにつながります。
参考資料 (AWS 公式)
本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。
本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。