AWS Device Farmを初めて触ってみた

記事タイトルとURLをコピーする

はじめに

こんにちは、アプリケーションサービス本部ディベロップメントサービス3課の北出です。 AWS Device Farmを案件で使いそうな話になり、自分は使ったことがなかったので、実際にマネジメントコンソールから触ってみた体験記です。

自分はアプリもテストスクリプトも持っていない状態でしたが、AWSが用意しているサンプルアプリとビルトインテストのおかげで、約25分で自動テストとリモートアクセスの両方を体験できました。

「Device Farmが気になるけど触ったことがない」という方の参考になれば幸いです。

AWS Device Farmとは

ざっくり言うと、AWSのデータセンターにある実機(スマホ・タブレット)を使って、モバイルアプリやWebアプリをテストできるサービスです。エミュレータではなく物理デバイスを使うのがポイント。

大きく2つの使い方があります。

  • Automated tests(自動テスト): テストスクリプトやビルトインテストを使い、複数デバイスで並列にテストを実行
  • Remote access(リモートアクセス): ブラウザ越しに実機を直接操作

注意点として、Device Farmはus-west-2(Oregon)リージョンでのみ提供されています。東京リージョンでは使えないので、注意しましょう。

やったこと

1. プロジェクトを作成する

Device Farmコンソールを開くと、右側に「Tutorials」パネルが表示されました。チュートリアルに沿って進めていきます。

まずはプロジェクトの作成。プロジェクト名を入力して「Create」を押すだけです。Execution roleやEnvironment variablesはオプションなので、今回は空のまま進めました。

2. サンプルアプリで自動テスト(Fuzzテスト)を実行する

プロジェクト作成後、「Create run with tutorial」ボタンが表示されるので、これをクリック。

Run settingsでは以下を選択しました。

  • Run type: Android app
  • App selection: 「Select sample app provided by Device Farm」

自分のアプリを持っていなくても、AWSが用意しているDefaultAndroidApplicationForDeviceFarm.apkというサンプルアプリで試せます。

次にテストフレームワークの選択。今回はBuilt-in: Fuzzを選びました。

Fuzzテストは、アプリに対してランダムなUI操作(タップ、スワイプ等)を大量に送りつけて、クラッシュしないかを確認するテストです。テストコードを一切書かなくていいので、初めて触る人にはうってつけ。いわば「お猿さんがスマホをデタラメに触りまくるテスト」(業界ではMonkey Testingとも呼ばれます)です。 他にもAppiumのようなテストコードに従ってテストする方法もサポートされていました。

設定パラメータは以下の3つだけでした。

  • Event count: 6000(ランダム操作の回数)
  • Event throttle: 50ms(操作間の待ち時間)
  • Randomizer seed: 空欄(デフォルトのランダム)

デバイスプールは「Top Devices」を選択。Google Pixel 9、Samsung Galaxy A36、Galaxy Tab S9など5台の実機が自動で選ばれました。

3. テスト結果を確認する

「Create run」を押すと、5台のデバイスで並列にテストが開始されました。各デバイスのステータスがRunning → Passedと変わっていくのをリアルタイムで見られます。

約2分ほどで全デバイスのテストが完了。 結果は5台すべてPassedでした。

結果画面では「Screenshots」タブを開くと、テスト中にデバイスが自動でキャプチャしたスクリーンショットが確認できます。Fuzzテストがサンプルアプリのどの画面を触っていたのかが視覚的にわかるのは面白いですね。

4. リモートアクセスで実機を操作する

次はRemote accessを試します。プロジェクトの「Remote access」タブから「Start a new session」をクリック。

利用可能なデバイス一覧が表示されるので、今回はGoogle Pixel 10 Pro(Android 16)を選択しました。Samsung GalaxyやXiaomi Redmiなど、かなり豊富なラインナップです。

セッションが始まると、ブラウザ上に実機の画面がそのまま表示されます。

ブラウザの中で本物のAndroid端末が動いていて、タップもスワイプも普通にできます。左のパネルにはHome、Back、Rotate、Screenshot等の操作ボタンに加えて、Install app(ローカルからアプリをインストール)やSet location(GPS位置の設定)、Network settingsなども用意されていました。

「このデバイスで表示が崩れるか確認したい」といった手動テストには非常に便利だと思います。

料金について

参考までに料金体系をまとめておきます。

プラン 料金 内容
無料枠 0円 初回1,000デバイス分
従量課金 $0.17/デバイス分 デバイス数 × テスト時間で計算
定額 $250/スロット/月 ~ 無制限テスト。並列数=スロット数
デスクトップブラウザ $0.005/インスタンス分 Chrome/Firefox等でWebテスト

今回のFuzzテストは5台 × 約2分 ≒ 10デバイス分の消費でした。 例えば、5台 × 60分 = $51.0 なので、使う際には料金に注意が必要そうです。

やってみた感想

良かった点

  • サンプルアプリ+ビルトインFuzzテストの組み合わせで、テストコードなしでも自動テストを体験できる
  • リモートアクセスが想像以上に快適。ブラウザだけで実機を操作できるのは便利
  • テスト結果にスクリーンショットやログが自動で残るのは、不具合調査に重宝しそう
  • Pixel 10 ProやGalaxy S25 Ultraなど最新デバイスも揃っている

気になった点

  • Oregonリージョン限定なので、東京リージョンのリソースとプライベート接続したい場合はVPC PeeringやTransit Gatewayの構成が必要
  • Fuzzテストはあくまで「壊れないか」のテスト。「ログインが正しく動くか」といった機能テストにはAppium等のフレームワークでテストコードを書く必要がある

まとめ

AWS Device Farmは「名前は聞いたことあるけど触ったことがない」という人が多いサービスだと思います。実際に触ってみると、プロジェクト作成からテスト実行まで数分で完了しました。

モバイルアプリの品質担保やクロスデバイステストが必要な場面では、実機を大量に購入・管理するコストを考えると十分に検討の価値があるサービスだと感じました。

まずはサンプルアプリでFuzzテスト → リモートアクセスで実機操作、という流れで体験してみることをおすすめします。

北出 宏紀(執筆記事の一覧)

アプリケーションサービス本部ディベロップメントサービス3課

2024年9月中途入社です。