AWS DeviceFarm あらためて概要を調べました。#アドカレ2015
よしはらです。
モバイルアプリの現場に携わるようになり、直接AWSに触る機会こそないものの、AWSについて必然的に興味が出てきました。 今回は非エンジニア視点でのAWSモバイルアドベントカレンダー17日目の記事になります。
はじめに
2015年7月にAWS DeviceFarmがリリースされました。リリース直後に 新サービス「AWS Device Farm」を使って Android アプリをテストしてみた!弊社諏訪の記事が速攻で上がりましたが、当時はAndroidのみ対応でした。それから5ヶ月経った今。iOSも対応し、Android対応Deviceが増えてきており、Webアプリまでもテストできるようになりました。AWS Device Farm を使ってモバイル向け Web アプリをクラウドでテストする #アドカレ2015 上手く活用すればテスト工数を削減する事が可能です。まだあまり知られていないので、改めて概要をまとめてみました。
日本語ページもできています。
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パターンを考えてみる 」についての記事です。お楽しみに!