AWS DeviceFarm あらためて概要を調べました。#アドカレ2015

advent2015-17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

よしはらです。

モバイルアプリの現場に携わるようになり、直接AWSに触る機会こそないものの、AWSについて必然的に興味が出てきました。 今回は非エンジニア視点でのAWSモバイルアドベントカレンダー17日目の記事になります。

はじめに

2015年7月にAWS DeviceFarmがリリースされました。リリース直後に 新サービス「AWS Device Farm」を使って Android アプリをテストしてみた!弊社諏訪の記事が速攻で上がりましたが、当時はAndroidのみ対応でした。それから5ヶ月経った今。iOSも対応し、Android対応Deviceが増えてきており、Webアプリまでもテストできるようになりました。AWS Device Farm を使ってモバイル向け Web アプリをクラウドでテストする #アドカレ2015 上手く活用すればテスト工数を削減する事が可能です。まだあまり知られていないので、改めて概要をまとめてみました。

AWSDeviceFram_top

日本語ページもできています。

AWS DeviceFarmとは?

Device Farm はモバイルアプリまたはウェブアプリを、実際の電話やタブレットをクラウド上でテストできます。また、サービスプラグインと API を使用すれば、Jenkins やその他の開発ツールのような継続的インテグレーションシステムから、自動的にテストを開始できます。これらの機能を利用することで、今までは実機を用意して1台ずつ行っていたテストを、OSや端末の壁を超えて一気にテストできるのがAWSDeviceFarmの特徴です。開発者にとってはうまく活用すれば大幅な工数削減できるので、これらを活用しない手はないと思います。

サポートされているフレームワーク

For Android:

  • Appium Java JUnit
  • Appium Java TestNG
  • Calabash
  • Instrumentation (JUnit, Espresso, Robotium, or any instrumentation-based tests)
  • UI Automator
  • Explorer

For iOS:

  • Appium Java JUnit
  • Appium Java TestNG
  • Calabash
  • UI Automation
  • XCTest (including KIF)

For Web Apps:

  • Appium Java JUnit
  • Appium Java TestNG

対応端末

対応端末については公式サイトに記載されています。 テストデバイス一覧

テストデバイスは随時更新されていますが、公式サイトの情報が最新とは限りません。テストデバイスの最新情報を取得するには以下の方法があります。AWS Device Farm には、利用可能なデバイス一覧を取得できる API が用意されていますので、次のコマンドで取得してください。

$ aws devicefarm list-devices --region us-west-2

この方法で取得すると画面解像度やメモリ、CPUの情報も入手できますので、活用されてはいかがでしょうか。

2015年12月17日現在の対応端末は下記になります。

iOS os Android os
Apple iPad 2 7.1.1 Amazon Kindle Fire HD 7 (WiFi) 4.4.3
Apple iPad 2 7.1.2 Amazon Kindle Fire HDX 7 (WiFi) 4.2.2
Apple iPad 3rd Gen 7.1.2 Amazon Kindle Fire HDX 7 (WiFi) 4.4.3
Apple iPad 4th Gen 8.1 ASUS Memo Pad 7 5
Apple iPad 4th Gen 7.1.2 ASUS Memo Pad 8 4.4.2
Apple iPad 4th Gen 8.0.2 ASUS Nexus 7 - 1st Gen (WiFi) 4.2
Apple iPad Air 8 ASUS Nexus 7 - 1st Gen (WiFi) 4.3
Apple iPad Air 9 ASUS Nexus 7 - 1st Gen (WiFi) 4.2.1
Apple iPad Air 7.1.2 ASUS Nexus 7 - 1st Gen (WiFi) 4.4.2
Apple iPad Air 8.1.2 ASUS Nexus 7 - 2nd Gen 6
Apple iPad Air 8.1.3 ASUS Nexus 7 - 2nd Gen (WiFi) 5
Apple iPad Air 2 8.1 ASUS Nexus 7 - 2nd Gen (WiFi) 4.3.1
Apple iPad Air 2 8.3 ASUS Nexus 7 - 2nd Gen (WiFi) 4.4.2
Apple iPad Air 2 8.4 ASUS Nexus 7 - 2nd Gen (WiFi) 4.4.4
Apple iPad Air 2 9 ASUS Nexus 7 - 2nd Gen (WiFi) 5.0.1
Apple iPad Air 2 8.1.3 ASUS Nexus 7 - 2nd Gen (WiFi) 5.0.2
Apple iPad Mini 1st Gen 8.1 Dell Venue 8 7840 5.1
Apple iPad Mini 1st Gen 8.2 HTC One M7 (AT&T) 4.4.2
Apple iPad Mini 1st Gen 8.3 HTC One M8 (AT&T) 4.4.2
Apple iPad Mini 1st Gen 8.4 HTC One M8 (AT&T) 4.4.4
Apple iPad Mini 1st Gen 9 HTC One M8 (Sprint) 4.4.4
Apple iPad Mini 1st Gen 7.1.2 HTC One M8 (Verizon) 4.4.2
Apple iPad Mini 1st Gen 8.0.2 HTC One M8 (Verizon) 4.4.3
Apple iPad Mini 2 8.3 HTC One M8 (Verizon) 4.4.4
Apple iPad Mini 2 9 HTC One M9 (AT&T) 5.0.2
Apple iPad Mini 2 7.1.2 HTC One M9 (Verizon) 5.0.2
Apple iPad Mini 2 8.1.3 Huawei Nexus 6P 6
Apple iPad Mini 3 8.3 LG G Flex2 (Sprint) 5.0.1
Apple iPad Mini 3 8.4 LG G Pad 7.0 (AT&T) 4.4.2
Apple iPad Mini 3 9 LG G2 (AT&T) 4.4.2
Apple iPad Mini 3 8.1.1 LG G2 (Sprint) 4.2.2
Apple iPad Mini 4 9 LG G2 (T-Mobile) 4.4.2
Apple iPhone 4S 7.1 LG G3 (AT&T) 4.4.2
Apple iPhone 4S 6.1.3 LG G3 (AT&T) 5.0.1
Apple iPhone 4S 8.1.2 LG G3 (Sprint) 4.4.2
Apple iPhone 5 8 LG G3 (Sprint) 5.0.1
Apple iPhone 5 8.3 LG G3 (Verizon) 4.4.2
Apple iPhone 5 7.0.4 LG G4 (Verizon) 5.1
Apple iPhone 5 7.1.1 LG Nexus 4 4.4.3
Apple iPhone 5 7.1.2 LG Nexus 5 4.4
Apple iPhone 5 8.1.1 LG Nexus 5 6
Apple iPhone 5 8.1.2 LG Nexus 5 4.4.2
Apple iPhone 5c 8 LG Nexus 5 4.4.3
Apple iPhone 5c 8.1 LG Nexus 5 4.4.4
Apple iPhone 5c 8.3 LG Nexus 5 5.0.1
Apple iPhone 5c 8.4 LG Nexus 5 5.1.1
Apple iPhone 5c 7.1.1 LG Nexus 5X 6
Apple iPhone 5c 7.1.2 LG Optimus Fuel (TracFone) 4.4
Apple iPhone 5c 8.0.2 LG Optimus G Pro (AT&T) 4.1.2
Apple iPhone 5c 8.1.1 LG Optimus L70 (MetroPCS) 4.4.2
Apple iPhone 5c 8.1.3 LG Optimus L90 (T-Mobile) 4.4.2
Apple iPhone 5s 7.1 Motorola DROID RAZR HD (Verizon) 4.4.2
Apple iPhone 5s 8 Motorola DROID RAZR M (Verizon) 4.4.2
Apple iPhone 5s 8.2 Motorola DROID Turbo (Verizon) 5.1
Apple iPhone 5s 8.3 Motorola DROID Ultra (Verizon) 4.4.4
Apple iPhone 5s 8.4 Motorola Moto E - 2nd Gen 5.0.2
Apple iPhone 5s 9 Motorola Moto G - 2nd Gen 5.0.2
Apple iPhone 5s 7.1.1 Motorola Moto G (AT&T) 4.4.4
Apple iPhone 5s 7.1.2 Motorola Moto X (Verizon) 5
Apple iPhone 5s 8.0.2 Motorola Moto X (Verizon) 5.1
Apple iPhone 5s 8.1.1 Motorola Nexus 6 5
Apple iPhone 5s 8.1.3 Motorola Nexus 6 5.1
Apple iPhone 6 8.1 Motorola Nexus 6 6
Apple iPhone 6 8.2 Samsung Galaxy Grand Neo Plus 4.4.4
Apple iPhone 6 8.3 Samsung Galaxy J1 Duos 4.4.4
Apple iPhone 6 8.4 Samsung Galaxy Light (MetroPCS) 4.4.2
Apple iPhone 6 9 Samsung Galaxy Note (AT&T) 4.1.2
Apple iPhone 6 8.1.2 Samsung Galaxy Note 3 (AT&T) 4.4.2
Apple iPhone 6 Plus 8.1 Samsung Galaxy Note 3 (Sprint) 4.4.4
Apple iPhone 6 Plus 8.2 Samsung Galaxy Note 3 (Verizon) 4.4.4
Apple iPhone 6 Plus 8.3 Samsung Galaxy Note 4 (AT&T) 4.4.4
Apple iPhone 6 Plus 8.4 Samsung Galaxy Note 4 (AT&T) 5.0.1
Apple iPhone 6 Plus 8.1.2 Samsung Galaxy Note 4 (Sprint) 4.4.4
Apple iPhone 6 Plus 8.1.3 Samsung Galaxy Note 4 (T-Mobile) 4.4.4
Apple iPhone 6S Plus 9 Samsung Galaxy Note 4 (Verizon) 4.4.4
Apple iPod Touch 5th Gen 8.3 Samsung Galaxy Note 4 (Verizon) 5.0.1
Apple iPod Touch 5th Gen 8.4 Samsung Galaxy Note 5 5.1.1
Apple iPod Touch 5th Gen 9 Samsung Galaxy Note II (AT&T) 4.3
Apple iPod Touch 5th Gen 8.1.2 Samsung Galaxy Note II (AT&T) 4.4.2
Samsung Galaxy Note II (Verizon) 4.4.2
Samsung Galaxy S3 (AT&T) 4.3
Samsung Galaxy S3 (Sprint) 4.3
Samsung Galaxy S3 (Sprint) 4.4.2
Samsung Galaxy S3 (T-Mobile) 4.3
Samsung Galaxy S3 (Verizon) 4.3
Samsung Galaxy S3 (Verizon) 4.4.2
Samsung Galaxy S3 LTE (T-Mobile) 4.3
Samsung Galaxy S3 Mini (AT&T) 4.4.2
Samsung Galaxy S4 (AT&T) 4.2.2
Samsung Galaxy S4 (AT&T) 4.4.2
Samsung Galaxy S4 (AT&T) 4.4.4
Samsung Galaxy S4 (AT&T) 5.0.1
Samsung Galaxy S4 (Sprint) 4.4.2
Samsung Galaxy S4 (T-Mobile) 4.4.4
Samsung Galaxy S4 (US Cellular) 4.4.2
Samsung Galaxy S4 (Verizon) 4.4.2
Samsung Galaxy S4 (Verizon) 5.0.1
Samsung Galaxy S4 Active (AT&T) 4.2.2
Samsung Galaxy S4 Active (AT&T) 4.4.2
Samsung Galaxy S4 mini (Verizon) 4.4.2
Samsung Galaxy S5 (AT&T) 4.4.2
Samsung Galaxy S5 (AT&T) 4.4.4
Samsung Galaxy S5 (Sprint) 4.4.4
Samsung Galaxy S5 (T-Mobile) 4.4.2
Samsung Galaxy S5 (Verizon) 4.4.4
Samsung Galaxy S5 Active (AT&T) 4.4.2
Samsung Galaxy S6 (Verizon) 5.0.2
Samsung Galaxy S6 Edge (Verizon) 5.0.2
Samsung Galaxy S6 Edge+ (AT&T) 5.1.1
Samsung Galaxy Tab 2 10.1 (WiFi) 4.1.1
Samsung Galaxy Tab 2 10.1 (WiFi) 4.2.2
Samsung Galaxy Tab 2 7.0 (WiFi) 4.2.2
Samsung Galaxy Tab 3 10.1 (WiFi) 4.2.2
Samsung Galaxy Tab 3 10.1 (WiFi) 4.4.2
Samsung Galaxy Tab 3 7.0 (Sprint) 4.2.2
Samsung Galaxy Tab 3 7.0 (Sprint) 4.4.2
Samsung Galaxy Tab 3 7.0 (WiFi) 4.1.2
Samsung Galaxy Tab 3 7.0 (WiFi) 4.4.2
Samsung Galaxy Tab 3 Lite 7.0 (WiFi) 4.2.2
Samsung Galaxy Tab 4 10.1 Nook (WiFi) 4.4.2
Samsung Galaxy Tab 4 10.1 Nook (WiFi) 5.0.2
Samsung Galaxy Tab 4 7.0 Nook (WiFi) 4.4.2
Samsung Nexus 10 (WiFi) 4.2
Samsung Nexus 10 (WiFi) 4.2.2
Sony Xperia Z2 (GSM) 4.4.4
Sony Xperia Z3 (GSM) 4.4.4
Sony Xperia Z3 Compact (GSM) 4.4.4
Toshiba Excite Go 7 4.4.2

料金

いくら便利とは言っても気になるのが料金です。 料金は "デバイス分"によって計算されますが、このデバイス分には注意が必要です。

デバイス分とは請求の単位です。デバイス分は、選択した各デバイスでのアプリケーションとテストのインストール、実行、アンインストールの所要時間(分)を計測したものです。単位料金は、デバイス、テストまたはアプリケーションタイプに関係なく固定です。

すなわち、デバイス分は、使用するデバイス数(端末数)とテストの長さ(時間)によって決まります。1デバイス分につき 0.17 USD が課金されます。例えば、1デバイスを10分テストで利用した場合は、1.7 USD請求されます。

なお、AWS DeviceFarmでは、250デバイス分の無料トライアルが付属します。この無料枠でもっとテストしたいが費用面で不安と思う方には、1デバイスあたり 250 USD の固定月額で無制限のテストが実施できる、定額テストプランも利用できます。料金プランも随時変更できるので、利用ニーズに応じて変更することができます。

まとめ

テストシーンでの利用はまだ工夫が必要ですが、クラウドでテストできる時代は10年前では想像もできませんでした。あとはテスト工数と費用対効果の面でどの程度効果があるのか。とても気になります。サービスは始まったばかりですので、日々改善され痒い所に手が届くサービスに育って欲しいと願っています!

次回の予告

明日(12/18)は、ひめのより 「モバイルプッシュ用トークン保存のAWSパターンを考えてみる 」についての記事です。お楽しみに!