AndroidとiOSアプリをAWS Device Farmでテストしてみた

こんにちは。エンジニアのなかむらです。
先々月、AWS(Amazon Web Service)の新サービス「AWS Device Farm」がリリースされました。AWS Device Farmとは、モバイルのアプリケーションテストサービスです。

  • 作成した独自のテストスクリプトをアップロードして実行できる。
  • UI に対するランダムなユーザー入力(タッチ、スワイプ、キーボード入力)のテストができる。

リリース当時の対応プラットフォームはAndroid、Fire OSだったのですが、先月4日、iOSにも対応されました。
ということでAndroidアプリとiOSアプリでさっそく試してみました!

利用可能テスティングフレームワーク

以下が利用できます。

フレームワーク iOS Android 概要
Built-in: Fuzz テストコードが不要なUI に対するファズテスト(ランダムなユーザー入力が実行される)
イベント数や待機時間の設定が可能。
Appium Java JUnit Appiumによるユニットテストフレームワーク
Appium Java TestNG 高レベルなテストや統合テストもできるフレームワーク
Calabash BDD(Behavior-Driven Development)フレームワークである「Cucumber」のモバイル用ラッパー
Ui Automation UIシナリオテストの自動化フレームワーク
XCTest Xcodeのテストフレームワーク
Instrumentation Androidコンポーネントのライフサイクルが制御できるテストフレームワーク
ui automator Android SDKに標準で含まれているテスト自動化ツール

用意するもの

アプリケーションファイルのみです。
Androidアプリならapkファイル、iOSアプリならipaファイルです。
テストコードも不要です。

Device Farmでやってみた

アプリケーションのアップロード

用意したアプリケーションファイルをアップロードします。
アプリケーションのアップロード

テストの設定

今回はテスティングフレームワークに「Built-in: Fuzz」 を選択しました。ランダムにアプリを動かしてテストしてくれます。
テストの設定

デバイスの選択

Androidのデバイスを選択する画面です。用意されていた「TopDevices」だとAndorid 4.4.2 ~ 5.0.2の端末が表示されました。
デバイスの選択

詳細設定

データの追加や他のアプリインストールができます。
また、Wi-Fi、Bluetooth、GPS や NFCの各機能の有効・無効設定や、デバイスロケールが設定できます。
詳細設定

確認画面

設定を確認して、「Confirm and start run」をクリックするとテストがはじまります。
確認画面

実行中

この画面で、テストの進捗具合や結果を見ることができます。
実行中

テスト完了

終わるとこのような画面が表示されます。オールグリーン!異常なしです。
テスト結果

結果の確認

複数のデバイスでテストを実施したので、そのなかからひとつのデバイスを選択すると以下のような画面が見れます。
Detailsタブでは実施されたテストのログが確認できます。
結果の確認
パフォーマンスタブでは以下のように表示されます。
パフォーマンス結果
iOSアプリはスクリーンショットもとれていました。
iOSアプリスクリーンショット
Filesタブでは、ログファイルがダウンロードできるので、ログをみればどんなテストされたかがわかります。
ログファイル

まとめ

とても簡単に端末のテストができました!!
一度に複数の端末で試験を実施してくれます。Androidは端末の種類も多いので、手元に端末がなくてもテストができるのはとてもありがたいです。
Fuzzテストならテストコードがなくてもテストできるのも便利です。
AWS Device Farmには無料枠があるので、気軽に試すことができました。
テスト時間もAndroid, iOSどちらも5分くらいでしたし、まだまだ無料枠で利用できそうなので、アプリのバージョンアップなどのタイミングには継続して実施していきたいと思いました。