AWS Device Farm で自動化するモバイルアプリテスト - 実機テストと CI/CD 統合
Device Farm による iOS・Android 実機でのテスト自動化、テストフレームワークの選定、CI/CD パイプラインへの統合を解説します。
Device Farm の概要
この記事は約 3 分で読めます。 Device Farm は AWS がホストする実機デバイスでモバイルアプリケーションと Web アプリケーションをテストするサービスです。Samsung Galaxy、Google Pixel、iPhone、iPad など数百種類のデバイスが利用可能で、OS バージョンも複数世代をカバーしています。テストは自動テスト (テストスクリプトの実行) とリモートアクセス (実機の手動操作) の 2 つのモードを提供します。料金はデバイス分単位の従量課金で、月額定額のアンリミテッドプランも選択できます。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
テストフレームワークと自動テスト
Device Farm は Appium (Java、Python、Node.js、Ruby)、Espresso (Android)、XCTest / XCUITest (iOS)、Calabash に対応しています。クロスプラットフォームのテストには Appium が最適で、同一のテストコードで iOS と Android の両方をテストできます。ビルトインテストスイートはテストコードの記述なしで基本的なテストを実行します。Fuzz テストはランダムなユーザー操作を生成してクラッシュを検出し、Explorer テストはアプリの画面を自動的に探索してスクリーンショットを取得します。テスト結果にはログ、スクリーンショット、動画、パフォーマンスデータ (CPU、メモリ、ネットワーク) が含まれ、問題の再現と原因特定に活用できます。
CI/CD パイプラインへの統合
CodePipeline のテストステージに Device Farm アクションを追加することで、ビルド後に自動的にデバイステストを実行できます。テスト失敗時にパイプラインが停止し、不具合のあるビルドが本番にデプロイされることを防止します。Jenkins や GitHub Actions からも AWS CLI または SDK 経由で Device Farm のテストランを作成できます。デバイスプールでテスト対象のデバイスを定義し、主要なデバイスと OS バージョンの組み合わせをカバーします。全デバイスでテストすると時間とコストがかかるため、市場シェアの高いデバイスを優先的に選定し、リリース前のフルテストと日次のスモークテストで対象デバイス数を使い分ける戦略が有効です。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
Device Farm は実機デバイスでのモバイルアプリテストを自動化するサービスです。数百種類のデバイスを購入・管理することなく、主要なテストフレームワークで自動テストを実行できます。CI/CD パイプラインに統合することで、デバイス固有の不具合を早期に検出し、品質の高いモバイルアプリケーションをリリースできます。
AWS の優位点
- 数百種類の iOS・Android 実機でアプリケーションをテストでき、デバイスの購入・管理が不要
- Appium、Espresso、XCTest、Calabash など主要なテストフレームワークに対応し、既存のテストスイートをそのまま実行できる
- ビルトインテストスイートでクラッシュ、パフォーマンス、スクリーンショット比較を自動実行でき、テストコードの記述が不要
- CodePipeline との統合でビルド後に自動的にデバイステストを実行し、テスト失敗時にデプロイをブロックできる
- リモートアクセスセッションで実機をブラウザから直接操作し、手動での探索的テストやデバッグが可能