AWS Device Farm で自動化するモバイルアプリテスト - 実機テストと CI/CD 統合
iOS・Android の実機でテストを自動実行し、CI/CD パイプラインに統合する。テストフレームワークの選定基準とリモートアクセスによる手動テストも紹介します。
Device Farm の概要
Device Farm は AWS がホストする実機デバイスでモバイルアプリケーションと Web アプリケーションをテストするサービスです。Samsung Galaxy、Google Pixel、iPhone、iPad など 2,500 種類以上のデバイス構成が利用可能で、OS バージョンも複数世代をカバーしています。テストは自動テスト (テストスクリプトの実行) とリモートアクセス (実機の手動操作) の 2 つのモードを提供します。料金はデバイス分単位の従量課金で、月額定額のアンリミテッドプランも選択できます。
テストフレームワークと自動テスト
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 バージョンの組み合わせをカバーします。全デバイスでテストすると時間とコストがかかるため、市場シェアの高いデバイスを優先的に選定し、リリース前のフルテストと日次のスモークテストで対象デバイス数を使い分ける戦略が有効です。 Device Farm について体系的に学びたい方は、関連書籍 (Amazon)も参考になります。
Device Farm の料金
Device Farm は 2 つの料金モデルを提供しています。従量課金はデバイス 1 台あたり 1 分約 0.17 ドルで、テスト時間に応じた課金です。定額プランは月額 250 ドルで、1 つのデバイスを無制限に使用できます。複数デバイスの定額プランも用意されています。CI/CD パイプラインで毎日テストを実行する場合、月間のテスト時間が約 25 時間を超えると定額プランの方が安価になります。リモートアクセス (手動テスト) は 1 分あたり約 0.17 ドルです。最初の 1,000 デバイス分は無料トライアルに含まれます。
まとめ
Device Farm は実機デバイスでのモバイルアプリテストを自動化するサービスです。数百種類のデバイスを購入・管理することなく、主要なテストフレームワークで自動テストを実行できます。CI/CD パイプラインに統合することで、デバイス固有の不具合を早期に検出し、品質の高いモバイルアプリケーションをリリースできます。