More Related Content
Device Farm を使ったスマホアプリの自動テスト Android 開発, 運用時に使いたいライブラリやサービスの紹介 Apiドキュメンテーションツールを使いこなす【api blueprint編】 Espresso と Firebase Test Lab で Android アプリのテストを自動化する いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio Win7 * appium * androidで実機自動テストやってみた。 What's hot (20)
Java + React.jsでSever Side Rendering #reactjs_meetup アプリケーションエンジニアがMackerelで楽しく監視構成している事例 自作アプリを Apple Watch対応した話 〜FastCheckin編〜 Behind-the-Scenes and Goals of LINE Summer Internship Program AppiumのWebViewアプリテストの仕組みとハマりどころ Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014 Android ReactNative UITesting リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】 Appiumのテスト結果レポートをsahaginで作ってみる 最近のSpringFramework2013 #jjug #jsug #SpringFramework Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech 海外のSeleniumカンファレンスではどんな発表がされているのか2014 前任者から引き継いだ Eight Android アプリ内部の改善 インフラエンジニアの綺麗で優しい手順書の書き方 ログ管理でウキウキAndroid Life (Log Management in Android) Firebase Test Lab 無料枠を使ってみました。 Viewers also liked (20)
AWS Device FarmでAndroidのUIテストをやってみた Appium を使って iOS / Android の UI テストを共通化 Sansan における Android アプリ自動テスト導入事例 Jawsdays2016 田舎とAWS Lambdaと私 ディープラーニングとAppiumでモバイルテスト自動化 AWS Device Farm を Jenkins CI から叩いてみた スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介 Mobile automation – should I use robotium or calabash or appium? JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向 iOSアプリ開発のCI環境 - Jenkins編 - Robotium を使った UI テストとレイアウト確認の効率化 【JAWS DAYS 2016】ランサーズを支えるAurora iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 - Similar to Device Farm を使ったスマホアプリの自動テスト (20)
リモート・スマホ・レンタル(第2回 Androidテスト祭り) 福井スマートフォンハッカソン Titanium Mobileの紹介 DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜 快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017 Automation with SoftLayer and Zabbix Azure Api Management 俺的マニュアル 2020年3月版 OpManager導入事例 日テレITプロデュース様 退屈なブラウザ作業をpuppeteerにやらせたいお話 デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略 CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~ More from Kenichi Tatsuhama (20)
【技術的負債LT会】私たちの技術負債最前線〜過去と未来について〜 2024/08/01 Google Analytics のデータ分析ハンズオン Sansan Tech Meetup Androidエンジニアが振り返る Google I/O 知っておきたいFirebase の色んな上限について Firebase Extensions はじめの一歩 Firebase & BigQuery で Android アプリの成⻑を支える GDG DevFest Tokyo 2019 Day2 Special Hands-on Firebase Summit 2019 Recap Cloud Firestore を使って、Polling をやめたい話 Firebase hands on in Matsuyama DroidKaigi 2018 参加報告会 Closing Java で書かれた Android アプリに Kotlin を適用させていく Device Farm を使ったスマホアプリの自動テスト
- 2. > Agenda
1
• 自己紹介
• Device Farm とは
• Device Farm を有効活用するために
• Device Farm での実行
• 効果
• 雑感
• まとめ
- 4. > 自己紹介
3
• 辰濱健一
• Sansan株式会社所属
• スマホアプリエンジニア
• リモートワーク@徳島県神山町
• Tokushima.app 主催(スマホアプリ開発勉強会)
• JAWS-UG 四国のイベントに、
なんやかんやでちょこちょこ参加
• 趣味は音楽と旅行
- 5. > 自己紹介
4
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
- 6. > 自己紹介
5
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
開発&
品質担保と自動テスト
- 7. > 自己紹介
6
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
開発&
品質担保と自動テスト
モバイル開発
- 8. > 自己紹介
7
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
開発&
品質担保と自動テスト
モバイル開発
モバイル開発での
品質担保と
自動テスト
- 9. > JAWS-UG のイベント参加実績
8
日時 タイトル 参加形態 案内時の感想
2013/11/25 AWS勉強会「クラウドについ
て入門から活用事例まで説明
します!」in 美波町
一般参加 AWS って何?
2014/10/4 四国クラウドお遍路2014 LT 地元神山開催だし、
サテライトオフィ
スネタでLT でも
するかー
2015/10/10 四国クラウドお遍路2015
-クラウドとIT技術者の働き方
と-
登壇 リモートワークの
話ならできる!
2016/3/12 JAWS DAYS 2016 登壇
- 10. > JAWS-UG のイベント参加実績
9
日時 タイトル 参加形態 案内時の感想
2013/11/25 AWS勉強会「クラウドについ
て入門から活用事例まで説明
します!」in 美波町
一般参加 AWS って何?
2014/10/4 四国クラウドお遍路2014 LT 地元神山開催だし、
サテライトオフィ
スネタでLT でも
するかー
2015/10/10 四国クラウドお遍路2015
-クラウドとIT技術者の働き方
と-
登壇 リモートワークの
話ならできる!
2016/3/12 JAWS DAYS 2016 登壇 えっ!?
- 11. > JAWS-UG のイベント参加実績
10
日時 タイトル 参加形態 案内時の感想
2013/11/25 AWS勉強会「クラウドについ
て入門から活用事例まで説明
します!」in 美波町
一般参加 AWS って何?
2014/10/4 四国クラウドお遍路2014 LT 地元神山開催だし、
サテライトオフィ
スネタでLT でも
するかー
2015/10/10 四国クラウドお遍路2015
-クラウドとIT技術者の働き方
と-
登壇 リモートワークの
話ならできる!
2016/3/12 JAWS DAYS 2016 登壇 えっ!?
・年1回しか参加してない
・AWS の話をしたことない
・しかも DAYS !?
・弊社、企業サポータ…
・アプリエンジニアなのですが…
- 12. > JAWS-UG のイベント参加実績
11
日時 タイトル 参加形態 案内時の感想
2013/11/25 AWS勉強会「クラウドについ
て入門から活用事例まで説明
します!」in 美波町
一般参加 AWS って何?
2014/10/4 四国クラウドお遍路2014 LT 地元神山開催だし、
サテライトオフィ
スネタでLT でも
するかー
2015/10/10 四国クラウドお遍路2015
-クラウドとIT技術者の働き方
と-
登壇 リモートワークの
話ならできる!
2016/3/12 JAWS DAYS 2016 登壇 えっ!?
でも、四国でのご縁(コミュニティ)
からのお声がけなので、
頑張ります!!
・年1回しか参加してない
・AWS の話をしたことない
・しかも DAYS !?
・弊社、企業サポータ…
・アプリエンジニアなのですが…
- 35. > Device Farm とは
34
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
- 36. > Device Farm とは
35
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
エミュレータよりも
信頼できる
パフォーマンス
- 37. > Device Farm とは
36
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
マルチプラット
フォーム!
- 38. > Device Farm とは
37
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
位置情報の指定、端
末言語、前提アプリ
のインストールなど
- 39. > Device Farm とは
38
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
・API
・Gradle Plugin
・Jenkins Plugin
- 40. > Device Farm とは
39
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
Appium, Espresso
などで、指定したUI
操作が記述可能
- 41. > Device Farm とは
40
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
・0.17 $ / デバイス分
・250 $ / 月
・250 デバイス分 無料
- 43. > Device Farm を有効活用するために
42
• 何らかのテスティングフレームワークを習得しよう!
• スクリーンショットを保存しよう!
- 44. > Device Farm を有効活用するために
43
• 何らかのテスティングフレームワークを習得しよう!
• スクリーンショットを保存しよう!
- 45. > テスティングフレームワーク
44
• UI 操作を記述するためのフレームワーク
• 特徴
• iOS 専用、Android 専用、ハイブリッド
• アプリ内部オブジェクトへのアクセスの可否
• リリースバイナリでの実行可否
• アプリ外の端末の操作(遷移後の別アプリの操作など)の可否
• 用途によって選ぼう
• 細かなところまでテストをしたい?
• リリースバイナリでテストをしたい?
(Android だとリリース時に難読化や最適化がかかる)
• 記述可能な言語
- 46. > テスティングフレームワーク
45
• 弊社で使っているテスティングフレームワーク
• Android
• Robotium, Espresso
• アプリ内オブジェクト利用可
→ 端末内 DB の状態やキャッシュの値も参照可能
• 別アプリ遷移後の操作はできない…
→ UIAutomater との併用を検討
• iOS
• KIF
• iOS & Android
• Appium(Ruby) でテストコードを共通化
• リリースバイナリ可
- 49. > Device Farm を有効活用するために
48
• 何らかのテスティングフレームワークを習得しよう!
• スクリーンショットを保存しよう!
- 53. > Device Farm での実行
52
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
- 54. > Device Farm での実行
53
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
- 55. > Device Farm での実行 - Web から
54
「Robotium で書いた Android アプリのテストを
AWS Device Farm で実行する」
http://qiita.com/tatsuhama/items/27d5e3ef1056e740b085
で詳しく書いているので、雰囲気だけ掴んでもらえば OK。
- 59. > Device Farm での実行 - Web から
58
※前提として、アプリ本体、テスト apk はビルド済みとする
- 73. > Device Farm での実行
72
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
- 74. > Gradle Plugin から実行
73
• Android の build.gradle へ何行か追記
• IAMユーザを作成して、accessKey / secretKey を取得
(IAM : Identity and Access Management)
• accessKey / secretKey を build.gradle へ設定
• ./gradlew devicefarmUpload を実行
•
•
- 75. > Gradle Plugin から実行
74
• Android の build.gradle へ何行か追記
• IAMユーザを作成して、accessKey / secretKey を取得
(IAM : Identity and Access Management)
• accessKey / secretKey を build.gradle へ設定
• ./gradlew devicefarmUpload を実行
• 事前準備さえすれば、コマンド1つなので便利
• 「 AWS Device Farm Gradle Plugin を導入した」
http://qiita.com/tatsuhama/items/ca7b8e4dbe2fb5c687c0
参照
- 76. > Gradle Plugin から実行
75
• あくまでも devicefarmUpload なので、呼び出しのみ
• 結果はコンソール上に示された URL を見に行く
- 78. > Gradle Plugin から実行
77
• 2016/02/28 時点で公式ガイドには、
classpath ‘com.amazonaws:aws-devicefarm-gradle-plugin:1.0’
を書くようアナウンスされている
http://docs.aws.amazon.com/devicefarm/latest/developerguide/a
ws-device-farm-gradle-plugin-setting-up.html
• ただし、1.0 では期待通り動かない…
https://github.com/awslabs/aws-device-farm-gradle-
plugin/issues/4
• 1.1 で改修されているので、少なくとも 1.1 を使いま
しょう!
• (中の人が今日聞いていることを期待してみる)
- 80. > Device Farm での実行
79
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
- 81. > Jenkins から実行
80
• Jenkins に AWS Device Farm Plugin を導入
• Jenkins のシステム設定
• accessKey / secretKey を追加
• Jenkins にジョブを作成&設定する
• 本体 apk、テスト apk の作成
• ビルド後の処理の処理に「Run Tests on AWS Device
Farm」を追加して、設定する
• ジョブを実行
• Jenkins 上から結果を確認
- 85. > Jenkins から実行
84
• Jenkins にジョブを作成&設定する
• ビルド後の処理の処理に「Run Tests on AWS Device
Farm」を追加して、設定する
- 86. > Jenkins から実行
85
• Jenkins にジョブを作成&設定する
• ビルド後の処理の処理に「Run Tests on AWS Device
Farm」を追加して、設定する
- 94. > 今後への期待
93
• 作ったプロジェクトが削除できない…
• Appium の Ruby サポート
• 現在は Java のみ
• フォーラム上では、サポート予定と書かれていた
• ジョブ開始までに時間がかかる(場合がある)
• Android のスクリーンショットの保存 or 収集ができ
ない(iOS は OK)
• フォーラムで多々報告がある
• テストを書かなくてもエミュレータのように、端末を
操作したい…
- 96. > まとめ
95
• Device Farm は端末の実機を時間借りできる
• モンキーテストも実行できるが、テストを記述した方
が効果的
• 実行は、Jenkins などで自動化しよう!
• 場所を選ばない働き方の味方