AWS Device Farm の リモートアクセス機能をためしてみた

2021.06.15

いわさです。

AWS Device Farm をご存知でしょうか。
クラウド上でモバイルデバイスの実機をホストし、テストフレームワークを使った実機テストを行うことが可能です。

上述のように自動テストで使うシーンが多いと思いますが、Device Farmには実はリモートアクセス機能が用意されています。
リモートアクセス機能はクラウド上へホストした物理デバイスに対してブラウザからリモートで操作を行うもので、テストコードも不要ですぐに始めることが出来ます。

どのような操作感でしょうか。どういった機能があるのかも気になります。
早速ためしてみましょう。

リモートアクセスの開始から終了まで

まずはマネジメントコンソールからプロジェクトを作成します。

次にリモートセッションを開始するデバイスを選択します。

iOSとAndroidで様々なデバイスが用意されています。
デバイス一覧は以下のページを参考にしてください。

デバイスを選択すると、デバイスのセットアップが行われます。
iPhone5s で 45秒〜1分ほどかかりました。

この画面から起動されたiOSを操作することが可能です。

なお、iOSの場合、AppStoreのアクセスおよびAppleIDの設定は出来ません。
開発中アプリをテストする場合は、ipaファイル(apkファイル)をこの画面からアップロードする必要があります。
試してみたかったですが Archiveファイルを作成するための Apple Developer Program アカウントが無かったので試せませんでした。

今回は、Safariでクラスメソッドのコーポレートサイトへアクセスしてみました。

レスポンシブデザインの確認などが出来ますね。
iOSシミュレーターではなく実機で確認したいケースは多いと思います。
そういったシーンでも使えそうです。

リモートアクセスセッションには最大150分の制限があります。
上限で終了、あるいは手動でセッションを終了することリモートセッションが失われます。

リモートセッションが失われるとテストデータのダウンロードが可能になります。

終了処理には数分の時間がかかります。
セッション時間は5分ほどだったと思いますが、終了処理も同じくらいかかりました。

終了処理が完了すると、ログファイルや、キャプチャビデオなどのリンクが表示されます。

[
    {
        "attachment_id": null,
        "parent_id": null,
        "timestamp": "2021-06-14T16:12:35.031052Z",
        "level": "Info",
        "pid": 388,
        "data": "Starting 00000 with device 67074192ab7a6fb512de722692cbcd144b2b3383",
        "source": "Harness",
        "tag": null,
        "subtype": "Text",
        "tid": -1,
        "type": "Message",
        "id": 3
    },
    {
        "attachment_id": null,
        "parent_id": null,
        "timestamp": "2021-06-14T16:12:35.031408Z",
        "level": "Info",
        "pid": 388,
        "data": "Using test content version 0.1.0",
        "source": "Harness",
        "tag": null,
        "subtype": "Text",
        "tid": -1,
        "type": "Message",
        "id": 4
    }
]

ビデオファイルはmp4形式です。

注意点

AWS Device Farm captures video and logs of activity taking place during your Remote Access session. It is recommended that you avoid providing or entering sensitive information during your remote access session.

For security reasons, AWS Device Farm restricts the download of applications from the App Store. Please use the upload option in the widget below to upload your application to the device. Additionally, AWS Device Farm restricts you from adding your Apple ID to our devices or using the “Add to Home Screen” option in Safari.

画面にも注意書きがありますが、DeviceFarmは画面操作情報を保存するため、機密情報の入力や操作は避けるようにしましょう。

また、リージョンは us-west-2(オレゴン)のみ利用可能です。

パブリックデバイスとプライベートデバイス

ホストデバイスには、パブリックデバイスとプライベートデバイスの概念があります。  

パブリックデバイス

パブリックデバイスは複数ユーザーで共有されます。
ただし、テスト実行が完了するとクリーンアップタスク (アプリのアンインストールなど) を実行します。
アプリのアンインストールまたは他のいずれかのクリーンアップステップを確認できない場合、デバイスが再利用される前にファクトリリセットが実行されます。
よって、テスト中のアプリが別のユーザーに表示されてしまう、ということはありません。

プライベートデバイス

プライベートデバイスへアクセス出来るのは許可されたAWSアカウントのみで、他のデバイスとはネットワーク上も分離されます。
また、プライベートデバイス契約の終了または解除後、デバイスは安全に破棄されます。

料金

今回はオンデマンドの従量課金のものを使いましたが、無制限アクセスでデバイススロットの購入も可能です。
どの程度の時間を使うか、どの程度並列実行するか、などでデバイススロットの購入も検討してください。

さいごに

テストコードの用意は若干敷居が高い中リモートアクセス機能はお手軽に試せそうです。
リモート操作であることと、モバイルデバイスということもあり操作性は高くはありませんが、デバイス調達に悩んでいるチームでは有効活用できそうです。
通話など一部利用できない機能もあるため全てのテストをカバー出来るわけではありませんので制限をよく理解した上で、どのシーンで活用するかよく検討しましょう。