aws device farmでandroidのuiテストをやってみた

37
AWS Device Farm を使ってテスト 2015.7.20 第2回 DevOps勉強会 田尻 泰弘(ザワット株式会社)

Upload: yasuhiro-tajiri

Post on 17-Aug-2015

192 views

Category:

Software


0 download

TRANSCRIPT

AWS Device Farm を使ってテスト 2015.7.20

第2回 DevOps勉強会 田尻 泰弘(ザワット株式会社)

自己紹介

• ザワット株式会社のエンジニア(6月から)

• サーバーサイドからAndroid,iOSアプリの開発をやってます

Agenda• いままでのテスト

• AWS Device Farm とは

• Appium + JUnit によるテスト

• AWS Device Farm での実行

• 問題点

過去のテスト

• いろいろな端末を貸し出してくれる某所にいって動作検証をする必要がありました。

AWS Device Farmとは

• AWS クラウド上で実機を使ってアプリのテストができる

どのデバイスが使えるのか

• いまのところAndroid かKindle Fire のみ

実際に使えるDevice• https://aws.amazon.com/jp/device-farm/device-list/• Samsung Galaxy Tab 3 10.1 (WiFi), 4.4.2

• Motorola DROID Ultra (Verizon), 4.4.4

• Samsung Galaxy S4 Active (AT&T), 4.4.2

• Samsung Galaxy S5 Active (AT&T), 4.4.2

• ASUS Nexus 7 - 2nd Gen (WiFi), 5.0

• OnePlus One, 4.4.4

• ASUS Nexus 7 - 2nd Gen (WiFi), 5.0.2

• Samsung Galaxy S4 (AT&T), 4.2.2

• Sony Xperia Z3 Compact (GSM), 4.4.4

• HTC One M8 (Sprint), 4.4.4

• LG Optimus Fuel (TracFone), 4.4

• Samsung Galaxy S5 (Verizon), 4.4.4

• HTC One M7 (AT&T), 4.4.2

• Motorola Nexus 6, 5.1

• Samsung Galaxy Note 4 (Verizon), 4.4.4

• Samsung Galaxy Note 3 (Sprint), 4.4.4

• ASUS Nexus 7 - 1st Gen (WiFi), 4.2

• Samsung Galaxy S4 (US Cellular), 4.4.2

• Motorola DROID RAZR HD (Verizon), 4.4.2

• LG Optimus L70 (MetroPCS), 4.4.2

• ASUS Nexus 7 - 1st Gen (WiFi), 4.2.2

• Samsung Galaxy Note 4 (AT&T), 4.4.4

• Samsung Nexus 10 (WiFi), 4.2.2

• ASUS Nexus 7 - 1st Gen (WiFi), 4.3

実際に使えるDevice• https://aws.amazon.com/jp/device-farm/device-list/• Samsung Galaxy Tab 3 7.0 (Sprint), 4.4.2

• Samsung Galaxy S4 (AT&T), 4.4.4

• LG Nexus 4, 4.4.3

• Amazon Kindle Fire HDX 7 (WiFi), 4.2.2

• Samsung Galaxy S3 Mini (AT&T), 4.4.2

• Samsung Galaxy S6 Edge (Verizon), 5.0.2

• Samsung Galaxy Tab 2 10.1 (WiFi), 4.1.1

• Samsung Galaxy Tab 4 7.0 Nook (WiFi), 4.4.2

• HTC One M9 (Sprint), 5.0.2

• HTC Nexus 9 (WiFi), 5.0

• LG G3 (Verizon),4.4.2

• LG G3 (Sprint),4.4.2

• Samsung Galaxy S3 (Verizon), 4.4.2

• LG G3 (AT&T), 5.0.1

• LG Optimus L90 (T-Mobile), 4.4.2

• Samsung Galaxy Tab 3 7.0 (WiFi), 4.1.2

• ASUS Nexus 7 - 2nd Gen (WiFi), 5.0.1

• Amazon Kindle Fire HD 7 (WiFi), 4.4.3

• HTC One M9 (T-Mobile), 5.0.2

• LG G4 (Verizon), 5.1

• Samsung Galaxy S4 (AT&T), 5.0.1

• LG G2 (AT&T), 4.4.2

• Motorola Moto X (Verizon), 5.0

• Samsung Galaxy Tab 3 10.1 (WiFi), 4.2.2

実際に使えるDevice• https://aws.amazon.com/jp/device-farm/device-list/• Samsung Galaxy S3 (T-Mobile), 4.3

• Samsung Galaxy S5 (T-Mobile), 4.4.2

• Samsung Galaxy S3 (Sprint), 4.3

• HTC One M8 (AT&T), 4.4.4

• Sony Xperia Z2 (GSM), 4.4.4

• ASUS Nexus 7 - 1st Gen (WiFi), 4.2.1

• Samsung Galaxy Tab 3 7.0 (WiFi), 4.4.2

• LG G Flex2 (Sprint), 5.0.1

• Motorola Moto E - 2nd Gen, 5.0.2

• Samsung Galaxy Tab 4 10.1 Nook (WiFi), 4.4.2

• Samsung Galaxy S4 (Sprint), 4.4.2

• Samsung Galaxy S4 mini (Verizon), 4.4.2

• HTC One M8 (Verizon), 4.4.2

• ASUS Nexus 7 - 1st Gen (WiFi), 4.4.2

• ASUS Nexus 7 - 2nd Gen (WiFi), 4.4.4

• Samsung Galaxy S4 (Verizon), 5.0.1

• Samsung Galaxy S4 (Verizon), 4.4.2

• Samsung Galaxy S3 (Sprint), 4.4.2

• LG G2 (Sprint), 4.2.2

• Amazon Kindle Fire HD 7 (WiFi), 4.4.2

• Amazon Fire Phone, 4.2.2

• Samsung Galaxy Light (T-Mobile), 4.2.2

• Samsung Galaxy S3 (AT&T), 4.3

• Samsung Galaxy Tab 2 10.1 (WiFi), 4.2.2

実際に使えるDevice• https://aws.amazon.com/jp/device-farm/device-list/• LG G2 (T-Mobile), 4.4.2

• Motorola DROID RAZR M (Verizon), 4.4.2

• Samsung Galaxy S4 (T-Mobile), 4.4.4

• Motorola Moto G - 2nd Gen, 5.0.2

• Samsung Galaxy Note 3 (AT&T), 4.4.2

• HTC One M8 (Verizon), 4.4.4

• Samsung Galaxy Note II (Verizon),4 .4.2

• LG Nexus 5, 4.4.2

• Samsung Galaxy Note 3 (Verizon), 4.4.4

• Motorola DROID Turbo (Verizon), 4.4.4

• LG Optimus G Pro (AT&T), 4.1.2

• Samsung Galaxy S3 LTE (T-Mobile), 4.3

• Samsung Galaxy S5 (Sprint), 4.4.4

• LG G Pad 7.0 (AT&T), 4.4.2

• Samsung Galaxy S5 (AT&T), 4.4.4

• Samsung Galaxy Note 4 (T-Mobile), 4.4.4

• Samsung Galaxy Tab 2 7.0 (WiFi), 4.2.2

• Samsung Galaxy S4 (AT&T), 4.4.2

• Sony Xperia Z3 (GSM), 4.4.4

• HTC One M8 (AT&T), 4.4.2

• Samsung Galaxy Tab 3 Lite 7.0 (WiFi), 4.2.2

• Samsung Nexus 10 (WiFi), 4.2

• Samsung Galaxy S6 (Verizon), 5.0.2

• Samsung Galaxy S4 Active (AT&T), 4.2.2

実際に使えるDevice• https://aws.amazon.com/jp/device-farm/device-list/• Samsung Galaxy S6 (Verizon), 5.0.2

• Samsung Galaxy S4 Active (AT&T), 4.2.2

• Motorola Moto G (AT&T), 4.4.4

• Samsung Galaxy Note 4 (Sprint), 4.4.4

• Samsung Galaxy S5 (AT&T), 4.4.2

• HTC One M8 (Verizon), 4.4.3

使えるテストフレームワーク• Appium Java JUnit

• Appium Java TestNG

• Calabash

• Instrumentation (JUnit, Espresso, Robotium, or any instrumentation-based tests)

• UI Automator

値段

• 1 デバイス分につき 0.17 USD

Appium + Java JUnit を選択

• テストが簡単に作れる

• リリースするアプリをそのままテストできる。

• ドキュメントの上ではスクリーンショットも取れる。

Appium とは(1)

• 実際にリリースするアプリと同じものをテストできる

Appiumとは(2)

• iOS/Android に対応

Appiumとは(3)• Selenium WebDriver ベース

• WebDriver をサポートしている言語とテストフレームワークならなんでも使える

• ただしDevice Farm で使える言語はJava

• テストフレームワークは JUnit またはTestNG

Appium アーキテクチャ

• AppiumはHTTP サーバーとして動作

• WebDriverコマンドでテストができる。

• Android ではUIAutomatorを使ってデバイスを操作する。

デモ

4分ほどかかる

Device Farmへの対応

• ローカルで作ったテストをDevice Farm で動くようにする。

Device Farm で動かすには• pom.xml を編集

Device Farm で動かすには

• テストコードをjar にする

Device Farm で動かすには

• 依存関係のあるライブラリをコピー

Device Farm で動かすには• src/main/assembly/zip.xmlに zip を作成するためのソースを書く

Device Farm で動かすには• 前で作成したファイルを使ってZipを作るようにpom.xml を修正

パッケージの作成

• mvn clean package ‒DskipTests=true

できたパッケージでテスト

• デモ

実行の仕方 3分ほどかかるあらかじめ実行していた結果の見方 3分ほど

問題点(1)• Appium + JUnit のマニュアルには

しかし実際にはスクリーンショットが取れません。

スクリーンショットが取れない

• スクリーンショットを取れるのはInstrumentationだけ

• しょうがないので標準出力にスクリーンショットをBASE64 で出力。

• ログから画像を取り出すようにした。

問題点(2)• いつまでたっても実行されないデバイスがある。

問題点(3)

• テストの初期化でエラーが起きる場合がある。

• テストの終了時にエラーが起きることがある。

問題点(4)

• 日本で利用されているデバイスが少ない

• 日本のキャリアを利用した端末がないので、キャリア固有の問題(最適化!)等のテストは不可

問題点(5)

• ブラウザが複数インストールされている端末だと、ブラウザを起動するタイミングで選択画面が表示されるので止まる。

• 選択画面をAppium がとれないので座標指定してTap しないといけない。

問題点(5)