SlideShare a Scribd company logo
1 of 97
Device Farm を使った
スマホアプリの自動テスト
JAWS DAYS 2016 - Move Up the Next Cloud -
2016/03/06@ベルサール新宿グランド
Sansan株式会社 辰濱健一
> Agenda
1
• 自己紹介
• Device Farm とは
• Device Farm を有効活用するために
• Device Farm での実行
• 効果
• 雑感
• まとめ
自己紹介
2
> 自己紹介
3
• 辰濱健一
• Sansan株式会社所属
• スマホアプリエンジニア
• リモートワーク@徳島県神山町
• Tokushima.app 主催(スマホアプリ開発勉強会)
• JAWS-UG 四国のイベントに、
なんやかんやでちょこちょこ参加
• 趣味は音楽と旅行
> 自己紹介
4
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
> 自己紹介
5
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
開発&
品質担保と自動テスト
> 自己紹介
6
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
開発&
品質担保と自動テスト
モバイル開発
> 自己紹介
7
• 業務経歴
• 1社目@徳島市
• Java, C++, MFC
• UWSC を使った Windows アプリの UI 自動テストの導入
• 性能改善チームにて、自動性能計測ツールを作成
• 2社目@徳島市
• iOS(Objective-C), Android(Java), Windows(C#)の
スマホ&タブレット向けアプリ開発
• 機能担当制、iOS で作った機能は作った人が他 OS に移植
• 3社目@徳島県神山町
• スマホアプリの自動テスト
• リモートワーク
開発&
品質担保と自動テスト
モバイル開発
モバイル開発での
品質担保と
自動テスト
> 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 登壇
> 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 登壇 えっ!?
> 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 !?
・弊社、企業サポータ…
・アプリエンジニアなのですが…
> 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 !?
・弊社、企業サポータ…
・アプリエンジニアなのですが…
> Sansan神山ラボ
12
• 築70年の木造古民家(3棟)
• 略歴
• 2010年設置
• 〜2013/11:合宿所
• 2013/11〜:常駐メンバーのいる開発拠点に
• 家具家電、畑付き、風呂トイレセパレート
• 家賃:数万円 / 月
• インターネット接続:光回線
• 最寄り駅まで徒歩15分
• 改装OK物件
> Sansan神山ラボ
13
> Sansan神山ラボ
14
掘りごたつ席最近は
> 2014 年の LT 資料より…
15
> 2014 年の LT 資料より…
16
> 2014 年の LT 資料より…
17
> 2014 年の LT 資料より…
18
> Sansan 株式会社
19
20
21
← 昨日発表!!
22
23
24
25
26
27
Let’s Try!!
28
この人数で試して
大丈夫なの?
29
安心して下さい!
30
AWS 使ってますから!
> AWS 導入事例
31
> AWS 導入事例
32
Device Farm とは
33
> Device Farm とは
34
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
> Device Farm とは
35
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
エミュレータよりも
信頼できる
パフォーマンス
> Device Farm とは
36
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
マルチプラット
フォーム!
> Device Farm とは
37
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
位置情報の指定、端
末言語、前提アプリ
のインストールなど
> Device Farm とは
38
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
・API
・Gradle Plugin
・Jenkins Plugin
> Device Farm とは
39
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
Appium, Espresso
などで、指定したUI
操作が記述可能
> Device Farm とは
40
• AWS クラウドで実機のデバイスを使用してアプリを
テスト
• Android / iOS / Fire OS に対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポート
• 料金
・0.17 $ / デバイス分
・250 $ / 月
・250 デバイス分 無料
Device Farm を有効活用するために
41
> Device Farm を有効活用するために
42
• 何らかのテスティングフレームワークを習得しよう!
• スクリーンショットを保存しよう!
> Device Farm を有効活用するために
43
• 何らかのテスティングフレームワークを習得しよう!
• スクリーンショットを保存しよう!
> テスティングフレームワーク
44
• UI 操作を記述するためのフレームワーク
• 特徴
• iOS 専用、Android 専用、ハイブリッド
• アプリ内部オブジェクトへのアクセスの可否
• リリースバイナリでの実行可否
• アプリ外の端末の操作(遷移後の別アプリの操作など)の可否
• 用途によって選ぼう
• 細かなところまでテストをしたい?
• リリースバイナリでテストをしたい?
(Android だとリリース時に難読化や最適化がかかる)
• 記述可能な言語
> テスティングフレームワーク
45
• 弊社で使っているテスティングフレームワーク
• Android
• Robotium, Espresso
• アプリ内オブジェクト利用可
→ 端末内 DB の状態やキャッシュの値も参照可能
• 別アプリ遷移後の操作はできない…
→ UIAutomater との併用を検討
• iOS
• KIF
• iOS & Android
• Appium(Ruby) でテストコードを共通化
• リリースバイナリ可
> テストコード
46
• 未入力でボタンタップ
↓
エラー表示の確認
※テストライブラリを抽象クラスで隠蔽しています
自動テストのデモ
47
サンプルアプリは
https://github.com/tatsuhama/DeviceFarmSampleAndroid
に置いています。
> Device Farm を有効活用するために
48
• 何らかのテスティングフレームワークを習得しよう!
• スクリーンショットを保存しよう!
> スクリーンショット
49
• どのテスティングフレームワークでも、だいたいサ
ポートされている
• 任意のタイミングでスクリーンショットを保存するこ
とで、実機での画面レイアウト確認にもなる
• エラー時にスクショを残すのはオススメ
Device Farm での実行
50
Device Farm での実行
51
※このセクションは、Android 開発を前提に説明します
> Device Farm での実行
52
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
> Device Farm での実行
53
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
> Device Farm での実行 - Web から
54
「Robotium で書いた Android アプリのテストを
AWS Device Farm で実行する」
http://qiita.com/tatsuhama/items/27d5e3ef1056e740b085
で詳しく書いているので、雰囲気だけ掴んでもらえば OK。
> Device Farm での実行 - Web から
55
> Device Farm での実行 - Web から
56
> Device Farm での実行 - Web から
57
> Device Farm での実行 - Web から
58
※前提として、アプリ本体、テスト apk はビルド済みとする
> Device Farm での実行 - Web から
59
> Device Farm での実行 - Web から
60
> Device Farm での実行 - Web から
61
> Device Farm での実行 - Web から
62
> Device Farm での実行 - Web から
63
> Device Farm での実行 - Web から
64
> Device Farm での実行 - Web から
65
> Device Farm での実行 - Web から
66
面倒…
> Device Farm での実行 - Web から
67
> Device Farm での実行 - Web から
68
> Device Farm での実行 - Web から
69
結果表示
> Device Farm での実行 - Web から
70
結果表示
> Device Farm での実行 - Web から
71
結果表示
> Device Farm での実行
72
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
> Gradle Plugin から実行
73
• Android の build.gradle へ何行か追記
• IAMユーザを作成して、accessKey / secretKey を取得
(IAM : Identity and Access Management)
• accessKey / secretKey を build.gradle へ設定
• ./gradlew devicefarmUpload を実行
•
•
> 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
参照
> Gradle Plugin から実行
75
• あくまでも devicefarmUpload なので、呼び出しのみ
• 結果はコンソール上に示された URL を見に行く
> Gradle Plugin から実行
76
• URL を見ると、ちゃんと結果が表示されている
• 結果を見に行くのはめんどくさい…
> 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 を使いま
しょう!
• (中の人が今日聞いていることを期待してみる)
> Gradle Plugin から実行
78
(中略)
> Device Farm での実行
79
• Web から実行
• Gradle Plugin から実行
• Jenkins から実行
> Jenkins から実行
80
• Jenkins に AWS Device Farm Plugin を導入
• Jenkins のシステム設定
• accessKey / secretKey を追加
• Jenkins にジョブを作成&設定する
• 本体 apk、テスト apk の作成
• ビルド後の処理の処理に「Run Tests on AWS Device
Farm」を追加して、設定する
• ジョブを実行
• Jenkins 上から結果を確認
> Jenkins から実行
81
• Jenkins に AWS Device Farm Plugin を導入
> Jenkins から実行
82
• Jenkins のシステム設定
• accessKey / secretKey を追加
> Jenkins から実行
83
• Jenkins にジョブを作成&設定する
• 本体 apk、テスト apk の作成
•
> Jenkins から実行
84
• Jenkins にジョブを作成&設定する
• ビルド後の処理の処理に「Run Tests on AWS Device
Farm」を追加して、設定する
> Jenkins から実行
85
• Jenkins にジョブを作成&設定する
• ビルド後の処理の処理に「Run Tests on AWS Device
Farm」を追加して、設定する
> Jenkins から実行
86
• ジョブを実行
> Jenkins から実行
87
• Jenkins 上から結果を確認
> Jenkins から実行
88
• Jenkins 上から結果を確認
良い!!
> Jenkins から実行
89
• Jenkins 上から結果を確認
良い!!
Slack 連携などすれば、もっと良くなる!
効果
90
> 効果
91
• 手元に端末がなくても、その端末の実機でテストが行
える
• 各拠点に何台も端末を買わなくて良い
• テスト記述できるスキルがあれば、テスター不要?
• リモートワークの味方!
• 端末を購入しなくても、時間借りができる
今後への期待
92
> 今後への期待
93
• 作ったプロジェクトが削除できない…
• Appium の Ruby サポート
• 現在は Java のみ
• フォーラム上では、サポート予定と書かれていた
• ジョブ開始までに時間がかかる(場合がある)
• Android のスクリーンショットの保存 or 収集ができ
ない(iOS は OK)
• フォーラムで多々報告がある
• テストを書かなくてもエミュレータのように、端末を
操作したい…
まとめ
94
> まとめ
95
• Device Farm は端末の実機を時間借りできる
• モンキーテストも実行できるが、テストを記述した方
が効果的
• 実行は、Jenkins などで自動化しよう!
• 場所を選ばない働き方の味方
完
96

More Related Content

What's hot

Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupToshiaki Maki
 
アプリケーションエンジニアがMackerelで楽しく監視構成している事例
アプリケーションエンジニアがMackerelで楽しく監視構成している事例アプリケーションエンジニアがMackerelで楽しく監視構成している事例
アプリケーションエンジニアがMackerelで楽しく監視構成している事例景子 西岡
 
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜Kosuke Ogawa
 
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship ProgramBehind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship ProgramLINE Corporation
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3Kazuchika Sekiya
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころMasayuki Wakizaka
 
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014Shuji Watanabe
 
Android ReactNative UITesting
Android ReactNative UITestingAndroid ReactNative UITesting
Android ReactNative UITestingVishal Banthia
 
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】DeNA
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotationEIICHI KIMURA
 
Appiumのテスト結果レポートをsahaginで作ってみる
Appiumのテスト結果レポートをsahaginで作ってみるAppiumのテスト結果レポートをsahaginで作ってみる
Appiumのテスト結果レポートをsahaginで作ってみるNozomi Ito
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFrameworkToshiaki Maki
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techToshiaki Maki
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014Nozomi Ito
 
前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善健一 辰濱
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)Tomoaki Imai
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。cch-robo
 

What's hot (20)

Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
 
アプリケーションエンジニアがMackerelで楽しく監視構成している事例
アプリケーションエンジニアがMackerelで楽しく監視構成している事例アプリケーションエンジニアがMackerelで楽しく監視構成している事例
アプリケーションエンジニアがMackerelで楽しく監視構成している事例
 
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
 
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship ProgramBehind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship Program
 
Lt 20150711
Lt 20150711Lt 20150711
Lt 20150711
 
10分でわかるOpenAPI V3
10分でわかるOpenAPI V310分でわかるOpenAPI V3
10分でわかるOpenAPI V3
 
AppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころAppiumのWebViewアプリテストの仕組みとハマりどころ
AppiumのWebViewアプリテストの仕組みとハマりどころ
 
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
 
Android ReactNative UITesting
Android ReactNative UITestingAndroid ReactNative UITesting
Android ReactNative UITesting
 
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
リアルタイムリモートデバッグ環境によるゲーム開発イテレーションの高速化【DeNA TechCon 2020 ライブ配信】
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
Ansible softlayer
Ansible softlayer Ansible softlayer
Ansible softlayer
 
Appiumのテスト結果レポートをsahaginで作ってみる
Appiumのテスト結果レポートをsahaginで作ってみるAppiumのテスト結果レポートをsahaginで作ってみる
Appiumのテスト結果レポートをsahaginで作ってみる
 
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
 
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3techConsumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
 
前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善前任者から引き継いだ Eight Android アプリ内部の改善
前任者から引き継いだ Eight Android アプリ内部の改善
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)ログ管理でウキウキAndroid Life (Log Management in Android)
ログ管理でウキウキAndroid Life (Log Management in Android)
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。
 

Viewers also liked

AWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみたAWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみたYasuhiro Tajiri
 
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化健一 辰濱
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例健一 辰濱
 
UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発修平 大野
 
Jawsdays2016 田舎とAWS Lambdaと私
Jawsdays2016 田舎とAWS Lambdaと私Jawsdays2016 田舎とAWS Lambdaと私
Jawsdays2016 田舎とAWS Lambdaと私Naoto Ishizawa
 
ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化Nozomi Ito
 
AWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみたAWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみたTatsuya Yamamoto
 
無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」Tarumoto Tetsuya
 
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介slideshar0801
 
Jawsdays2016 LT BoCue3
Jawsdays2016 LT BoCue3Jawsdays2016 LT BoCue3
Jawsdays2016 LT BoCue3Hajime Ogushi
 
Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?Zado Technologies
 
JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向
JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向
JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向SORACOM,INC
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -Toshiyuki Hirata
 
Robotium を使った UI テストとレイアウト確認の効率化
Robotium を使った UI テストとレイアウト確認の効率化Robotium を使った UI テストとレイアウト確認の効率化
Robotium を使った UI テストとレイアウト確認の効率化健一 辰濱
 
【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAurora【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAuroraYuki Kanazawa
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
Jawsug chiba API Gateway
Jawsug chiba API GatewayJawsug chiba API Gateway
Jawsug chiba API GatewayTakuro Sasaki
 

Viewers also liked (20)

AWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみたAWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみた
 
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例
 
UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発
 
Jawsdays2016 田舎とAWS Lambdaと私
Jawsdays2016 田舎とAWS Lambdaと私Jawsdays2016 田舎とAWS Lambdaと私
Jawsdays2016 田舎とAWS Lambdaと私
 
ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化
 
AWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみたAWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみた
 
無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」無料追補版#2「ペーパープロトタイピング原論」
無料追補版#2「ペーパープロトタイピング原論」
 
kollectionの紹介
kollectionの紹介kollectionの紹介
kollectionの紹介
 
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
 
Jawsdays2016 LT BoCue3
Jawsdays2016 LT BoCue3Jawsdays2016 LT BoCue3
Jawsdays2016 LT BoCue3
 
serverless
serverlessserverless
serverless
 
Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?Mobile automation – should I use robotium or calabash or appium?
Mobile automation – should I use robotium or calabash or appium?
 
JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向
JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向
JAWS DAYS | IoTプラットフォーム”SORACOM”最新動向
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
Robotium を使った UI テストとレイアウト確認の効率化
Robotium を使った UI テストとレイアウト確認の効率化Robotium を使った UI テストとレイアウト確認の効率化
Robotium を使った UI テストとレイアウト確認の効率化
 
【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAurora【JAWS DAYS 2016】ランサーズを支えるAurora
【JAWS DAYS 2016】ランサーズを支えるAurora
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
Jawsug chiba API Gateway
Jawsug chiba API GatewayJawsug chiba API Gateway
Jawsug chiba API Gateway
 

Similar to Device Farm を使ったスマホアプリの自動テスト

おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)NTT Resonant Technology Inc.
 
アプリの不具合を少なくするために
アプリの不具合を少なくするためにアプリの不具合を少なくするために
アプリの不具合を少なくするために健一 辰濱
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menusharoid
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DeNA
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様ManageEngine, Zoho Corporation
 
退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話Tadashi Nemoto
 
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略Developers Summit
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方健一 辰濱
 
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~SEGADevTech
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションmirer
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebKensaku Komatsu
 

Similar to Device Farm を使ったスマホアプリの自動テスト (20)

おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
 
アプリの不具合を少なくするために
アプリの不具合を少なくするためにアプリの不具合を少なくするために
アプリの不具合を少なくするために
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menu
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
 
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様
 
退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話退屈なブラウザ作業をpuppeteerにやらせたいお話
退屈なブラウザ作業をpuppeteerにやらせたいお話
 
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略
 
インドのインターネット環境 との戦い方
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
 
リモート・スマホ・レンタル
リモート・スマホ・レンタルリモート・スマホ・レンタル
リモート・スマホ・レンタル
 
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
 

More from 健一 辰濱

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合健一 辰濱
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン健一 辰濱
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O 健一 辰濱
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について健一 辰濱
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今健一 辰濱
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩健一 辰濱
 
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える健一 辰濱
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on健一 辰濱
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap健一 辰濱
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話健一 辰濱
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama健一 辰濱
 
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法健一 辰濱
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing健一 辰濱
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー健一 辰濱
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ健一 辰濱
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話健一 辰濱
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会健一 辰濱
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る健一 辰濱
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく健一 辰濱
 
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド健一 辰濱
 

More from 健一 辰濱 (20)

地方創生ワカモノ会合
地方創生ワカモノ会合地方創生ワカモノ会合
地方創生ワカモノ会合
 
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオンGoogle Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
 
Android 開発の昔と今
Android 開発の昔と今Android 開発の昔と今
Android 開発の昔と今
 
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
 
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支えるFirebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
 
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-onGDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
 
Firebase Summit 2019 Recap
Firebase Summit 2019 RecapFirebase Summit 2019 Recap
Firebase Summit 2019 Recap
 
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
 
Firebase hands on in Matsuyama
Firebase hands on in MatsuyamaFirebase hands on in Matsuyama
Firebase hands on in Matsuyama
 
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
 
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 ClosingDroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
 
企業スポンサー
企業スポンサー企業スポンサー
企業スポンサー
 
参加したセッションの ピックアップ
参加したセッションのピックアップ参加したセッションのピックアップ
参加したセッションの ピックアップ
 
CFP(Call For Paper) を出す話
CFP(Call For Paper)を出す話CFP(Call For Paper)を出す話
CFP(Call For Paper) を出す話
 
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
 
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見るDroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
 
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていくJava で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
 
20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド20171209エンジニアの移住相談会 自己紹介スライド
20171209エンジニアの移住相談会 自己紹介スライド
 

Device Farm を使ったスマホアプリの自動テスト

  • 1. Device Farm を使った スマホアプリの自動テスト JAWS DAYS 2016 - Move Up the Next Cloud - 2016/03/06@ベルサール新宿グランド Sansan株式会社 辰濱健一
  • 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 !? ・弊社、企業サポータ… ・アプリエンジニアなのですが…
  • 13. > Sansan神山ラボ 12 • 築70年の木造古民家(3棟) • 略歴 • 2010年設置 • 〜2013/11:合宿所 • 2013/11〜:常駐メンバーのいる開発拠点に • 家具家電、畑付き、風呂トイレセパレート • 家賃:数万円 / 月 • インターネット接続:光回線 • 最寄り駅まで徒歩15分 • 改装OK物件
  • 16. > 2014 年の LT 資料より… 15
  • 17. > 2014 年の LT 資料より… 16
  • 18. > 2014 年の LT 資料より… 17
  • 19. > 2014 年の LT 資料より… 18
  • 21. 20
  • 23. 22
  • 24. 23
  • 25. 24
  • 26. 25
  • 27. 26
  • 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 • 何らかのテスティングフレームワークを習得しよう! • スクリーンショットを保存しよう!
  • 50. > スクリーンショット 49 • どのテスティングフレームワークでも、だいたいサ ポートされている • 任意のタイミングでスクリーンショットを保存するこ とで、実機での画面レイアウト確認にもなる • エラー時にスクショを残すのはオススメ
  • 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。
  • 56. > Device Farm での実行 - Web から 55
  • 57. > Device Farm での実行 - Web から 56
  • 58. > Device Farm での実行 - Web から 57
  • 59. > Device Farm での実行 - Web から 58 ※前提として、アプリ本体、テスト apk はビルド済みとする
  • 60. > Device Farm での実行 - Web から 59
  • 61. > Device Farm での実行 - Web から 60
  • 62. > Device Farm での実行 - Web から 61
  • 63. > Device Farm での実行 - Web から 62
  • 64. > Device Farm での実行 - Web から 63
  • 65. > Device Farm での実行 - Web から 64
  • 66. > Device Farm での実行 - Web から 65
  • 67. > Device Farm での実行 - Web から 66 面倒…
  • 68. > Device Farm での実行 - Web から 67
  • 69. > Device Farm での実行 - Web から 68
  • 70. > Device Farm での実行 - Web から 69 結果表示
  • 71. > Device Farm での実行 - Web から 70 結果表示
  • 72. > Device Farm での実行 - Web から 71 結果表示
  • 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 を見に行く
  • 77. > Gradle Plugin から実行 76 • 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 を使いま しょう! • (中の人が今日聞いていることを期待してみる)
  • 79. > Gradle Plugin から実行 78 (中略)
  • 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 上から結果を確認
  • 82. > Jenkins から実行 81 • Jenkins に AWS Device Farm Plugin を導入
  • 83. > Jenkins から実行 82 • Jenkins のシステム設定 • accessKey / secretKey を追加
  • 84. > Jenkins から実行 83 • Jenkins にジョブを作成&設定する • 本体 apk、テスト apk の作成 •
  • 85. > Jenkins から実行 84 • Jenkins にジョブを作成&設定する • ビルド後の処理の処理に「Run Tests on AWS Device Farm」を追加して、設定する
  • 86. > Jenkins から実行 85 • Jenkins にジョブを作成&設定する • ビルド後の処理の処理に「Run Tests on AWS Device Farm」を追加して、設定する
  • 87. > Jenkins から実行 86 • ジョブを実行
  • 88. > Jenkins から実行 87 • Jenkins 上から結果を確認
  • 89. > Jenkins から実行 88 • Jenkins 上から結果を確認 良い!!
  • 90. > Jenkins から実行 89 • Jenkins 上から結果を確認 良い!! Slack 連携などすれば、もっと良くなる!
  • 92. > 効果 91 • 手元に端末がなくても、その端末の実機でテストが行 える • 各拠点に何台も端末を買わなくて良い • テスト記述できるスキルがあれば、テスター不要? • リモートワークの味方! • 端末を購入しなくても、時間借りができる
  • 94. > 今後への期待 93 • 作ったプロジェクトが削除できない… • Appium の Ruby サポート • 現在は Java のみ • フォーラム上では、サポート予定と書かれていた • ジョブ開始までに時間がかかる(場合がある) • Android のスクリーンショットの保存 or 収集ができ ない(iOS は OK) • フォーラムで多々報告がある • テストを書かなくてもエミュレータのように、端末を 操作したい…
  • 96. > まとめ 95 • Device Farm は端末の実機を時間借りできる • モンキーテストも実行できるが、テストを記述した方 が効果的 • 実行は、Jenkins などで自動化しよう! • 場所を選ばない働き方の味方