More Related Content Similar to Device Farm を使ったスマホアプリの自動テスト
Similar to Device Farm を使ったスマホアプリの自動テスト (20) 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 などで自動化しよう!
• 場所を選ばない働き方の味方