SlideShare a Scribd company logo
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)

More Related Content

Viewers also liked

BeansPicture - Beans Art App
BeansPicture - Beans Art AppBeansPicture - Beans Art App
BeansPicture - Beans Art App
房之介 山下
 
Fusion_2016/06/11
Fusion_2016/06/11Fusion_2016/06/11
Fusion_2016/06/11
房之介 山下
 
Apache Thrift Outline
Apache Thrift OutlineApache Thrift Outline
Apache Thrift Outline
Akihiro Katou
 
初めての単体テスト
初めての単体テスト初めての単体テスト
初めての単体テスト
Basuke Suzuki
 
Resume (1) (1)
Resume (1) (1)Resume (1) (1)
Resume (1) (1)
Md.Momenul Haque
 
無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」
Tarumoto Tetsuya
 
Try EarlGrey | 20161118 iOS Test Night
Try EarlGrey | 20161118 iOS Test NightTry EarlGrey | 20161118 iOS Test Night
Try EarlGrey | 20161118 iOS Test Night
ichiko_revjune
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Koji Hasegawa
 
JavascriptでもTestがしたい!
JavascriptでもTestがしたい!JavascriptでもTestがしたい!
JavascriptでもTestがしたい!
洋一郎 櫻井
 
テストの種類とBDD #33testing
テストの種類とBDD #33testingテストの種類とBDD #33testing
テストの種類とBDD #33testing
Koji Hasegawa
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
Toshiyuki Hirata
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
Toshiyuki Hirata
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
Toshiyuki Hirata
 
Jawsug chiba API Gateway
Jawsug chiba API GatewayJawsug chiba API Gateway
Jawsug chiba API Gateway
Takuro Sasaki
 
Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~
Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~
Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~
Tomoyuki Arasuna
 

Viewers also liked (15)

BeansPicture - Beans Art App
BeansPicture - Beans Art AppBeansPicture - Beans Art App
BeansPicture - Beans Art App
 
Fusion_2016/06/11
Fusion_2016/06/11Fusion_2016/06/11
Fusion_2016/06/11
 
Apache Thrift Outline
Apache Thrift OutlineApache Thrift Outline
Apache Thrift Outline
 
初めての単体テスト
初めての単体テスト初めての単体テスト
初めての単体テスト
 
Resume (1) (1)
Resume (1) (1)Resume (1) (1)
Resume (1) (1)
 
無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」
 
Try EarlGrey | 20161118 iOS Test Night
Try EarlGrey | 20161118 iOS Test NightTry EarlGrey | 20161118 iOS Test Night
Try EarlGrey | 20161118 iOS Test Night
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
 
JavascriptでもTestがしたい!
JavascriptでもTestがしたい!JavascriptでもTestがしたい!
JavascriptでもTestがしたい!
 
テストの種類とBDD #33testing
テストの種類とBDD #33testingテストの種類とBDD #33testing
テストの種類とBDD #33testing
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
Jawsug chiba API Gateway
Jawsug chiba API GatewayJawsug chiba API Gateway
Jawsug chiba API Gateway
 
Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~
Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~
Appleとgoogleのデザインガイドライン比較~スマートフォン向けwebデザインのポイント~
 

Recently uploaded

RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
Yuichiro Naito
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
GrapeCity, inc.
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
GrapeCity, inc.
 

Recently uploaded (8)

RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
 
RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
 

AWS Device FarmでAndroidのUIテストをやってみた