Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Device Farm を使った
スマホアプリの自動テスト
JAWS Festa−中四国2017−
2017.11.4@愛媛大学
辰濱健一
自己紹介
• 辰濱健一(たつはまけんいち)
• 徳島県生まれ、神山町在住
• GDG Shikoku スタッフ
• Sansan 株式会社、名刺アプリ Eight のアプリ開発
• Twitter:@tatsuhama50
• Facebook...
GDG Shikoku
4
• 四国地方をカバーする Google Developer Group
• Googleのテクノロジー全般について、四国で勉強会を開催して
います。
• Android、Kotlin、Google App Engin...
DevFest Shikoku 2017
• 11/18(日)に徳島大学で開催!
• Android, Kotlin, TensolFlow
Go言語, Firebase など…
5
ご参加お待ちしております!
https://gdgshiko...
徳島県神山町
6
徳島県神山町
7
約200km
車で3時間
四国は広いんです!
徳島県神山町
• 人口:約 5,500 人
• 名産:すだち
• 全面積の 83% が山地
• 過疎化が進む町
(消滅可能性都市にランクイン)
• サテライトオフィス(13社)の進出、移住者が増
• 古民家再生・地産地消・教育改革など、先進的な...
Sansan株式会社 神山ラボ
9
Sansan株式会社
10
詳しくは、14:05 〜のサポータセッションで!!
Device Farm とは?
Device Farm とは
• AWS クラウドで実機のデバイスを使用してアプリをテスト
• Android / iOS / Webアプリに対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポ...
Device Farm とは
• AWS クラウドで実機のデバイスを使用してアプリをテスト
• Android / iOS / Webアプリに対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポ...
Device Farm とは
• AWS クラウドで実機のデバイスを使用してアプリをテスト
• Android / iOS / Webアプリに対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポ...
Device Farm とは
• AWS クラウドで実機のデバイスを使用してアプリをテスト
• Android / iOS / Webアプリに対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポ...
Device Farm とは
• AWS クラウドで実機のデバイスを使用してアプリをテスト
• Android / iOS / Webアプリに対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポ...
Device Farm とは
• AWS クラウドで実機のデバイスを使用してアプリをテスト
• Android / iOS / Webアプリに対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポ...
Device Farm とは
• AWS クラウドで実機のデバイスを使用してアプリをテスト
• Android / iOS / Webアプリに対応
• 実際の環境をシミュレート
• 開発ワークフローとの統合
• UI テストフレームワークをサポ...
テストコードがない人向け
テストコードがない人向け
• モンキーテスト
• Remote access (2016/4〜)
• 【New!!】Direct Device Access (2017/10/16〜)
20
モンキーテスト
• Device Farm 側でランダムに触ってくれる
• アプリのバイナリさえあれば、今すぐ始められる
21
モンキーテスト
22
Automated tests を選んで
Create a new run
モンキーテスト
23
アプリケーションの種類を選んで
アップロード
モンキーテスト
24
アプリの情報が表示される
モンキーテスト
25
何イベント(数)実行するか
モンキーテスト
26
実行する端末を選択
モンキーテスト
27
端末の設定
モンキーテスト
28
タイムアウトの設定
モンキーテスト
29
実際のプロダクトでやってみた。
ターゲットアプリ
30
モンキーテスト
31
結果…!?
モンキーテスト
32
モンキーテスト
33
わずかな時間で複数端末での
クラッシュが発覚。。。orz
モンキーテスト
• スクリーンショットや動画、ログが残ってる
34※横固定のタブレット
モンキーテスト
• 動画
35
モンキーテスト
36
動画により、どういう遷移や状態で
クラッシュしたかが確認できる!
→ 問題の確認が容易に!
Remote access
37
• ブラウザ上に表示される端末をマウス・キーボードで操作
• アプリバイナリのアップロード&実行が可能
• 端末内ブラウザで Web サイトの表示
(=レンダリングチェック)も可能
Remote access
38
Remote access
を選んで
+Start a new session
Remote access
39
端末を検索して選んで…
Remote access
40
Confirm and start session
Remote access
41しばし待つ(だいたい数分以内)
Remote access
42
マウスで直接
操作可能!
アプリバイナリの
アップロードは
ここから
Remote access
43
ブラウザも
起動できる
Remote access
44
手元にない端末を
ちょっと試してみたい時には便利!
Remote access
45
でも、何度も手作業で
同じ操作をして、
動作確認するのはつらい・・・
Direct Device Access
• USB を介してローカルマシンに直接接続されているかのよう
に、デバイスを使用できる。
• IDE からのデバッグも可能
• 200$/月の private device の契約が必要
46
Direct Device Access
• https://aws.amazon.com/jp/blogs/mobile/announcing-
direct-device-access-in-aws-device-farm/
47
16 O...
Direct Device Access
48
DeviceFarm上の
端末の画面
https://aws.amazon.com/jp/blogs/mobile/announcing-direct-device-access-in-aws-d...
テストコードを用意する
テストコードを用意して実行
• UI 操作をスクリプトで記述する
• 何度でも同じ操作ができる
• 機種や OS バージョンの横展開が容易になる
• テストコードを Device Farm のコンソールから実行させる
• ※以降 Android...
テスティングフレームワーク
• 特徴はいろいろ
• OS:iOS 専用、Android 専用、ハイブリッド
• アプリ内部(DB やキャッシュ)の参照可否
• リリースバイナリでの実行可否
• アプリ外の端末操作の可否
(別アプリの操作や OS...
テスティングフレームワークの例
• Android
• Espresso … アプリ内参照可、他アプリの操作不可、レコーダーあり
• UIAutomater … 他アプリの操作が可能、Android 4.2 以上
(Espresso や UIA...
Espresso
• Android アプリのテストを書くならオススメ
• Google が公開
• Android Studio から操作の記録と検証コードの追加ができる
• WebView の操作・検証も可能
• Intent のテストも可...
Espresso Recorder
54Android Studio の Run > Record Espresso Test
Espresso Recorder
55
1. 端末を操作する
2.アクションが
記録される
3. 検証を追加
1 〜 3 を繰り返す
Espresso Recorder
56
検証を追加 1. View を選択
2. 検証内容を編集
emailEdit の文字列が
aaa かどうか?
Espresso Recorder
57
Espresso の
テストコード
が生成される
※かなり冗長でカオス
※可読性的に要メンテ
※記述の参考にはなる
このコードで
何度でも
同じ操作が
可能になる!
Espresso の基本
58
• onView(...):操作対象の View を探す
• perform(...):View に対する操作
• check(...):View の検証
Espresso で非同期待ち合わせ
59
// サーバアクセス・Progress 表示
↑click 後、即実行される。。。
まだ結果が帰ってきていないので失敗する。
通信が終わってからチェックしたい。
Q:「通信が終わってから」とは??
・...
Espresso IdlingResource
• 指定した条件を満たすまで、テストコードの実行を中断
• 例)サーバ通信中は、Progress 表示があるとする
→ Progress が非表示になったら再開したい
60
Espresso IdlingResource
61
progress が
非表示(isGone)
なら再開(idleNow)
Espresso IdlingResource
62
IdlingResource の登録
IdlingResource の解除
Espresso IdlingResource
• 63
← Progress が消えるまで待つ!
// サーバアクセス・Progress 表示
• IdlingResource を設定したテストコードの実行
Espresso IdlingResource
64
IdlingResource を使うと
テスト実行の
非同期待ち合わせが容易に!
DeviceFarm での実行
• 事前準備
• アプリケーションバイナリの作成
• テストバイナリの作成
• コンソールからテストを実行
• コンソールで結果を確認
65
アプリケーションバイナリ作成
66
• 本体のビルド
• ./gradlew assembleDebug
• app-debug.apk が生成される
• テストバイナリのビルド
• ./gradlew assembleDebugAndroid...
DeviceFarm でテスト実行
67
アプリケーションの種類を選んで
DeviceFarm でテスト実行
68
アプリ本体のバイナリを
アップロード
DeviceFarm でテスト実行
69
アプリの情報を確認
DeviceFarm でテスト実行
70
←Instrumentation テストを選んで、
テストバイナリをアップロード
DeviceFarm でテスト実行
71
テストアプリの情報や
フィルタの設定
DeviceFarm でテスト実行
72
実行する端末の種類を選んで
DeviceFarm でテスト実行
73
テスト端末の設定をして
DeviceFarm でテスト実行
74
実行!
DeviceFarm でテスト実行
75
実行中…
DeviceFarm でテスト実行
76
各端末の実行状態
DeviceFarm でテスト実行
77
実行結果
DeviceFarm でテスト実行
78
端末ごとの実行結果
DeviceFarm でテスト実行
79
端末での実行結果
DeviceFarm でテスト実行
80
テスト実行中の
パフォーマンスモニタ
DeviceFarm でテスト実行
81
テストコードにより
端末や OS の横展開が
容易になった!
DeviceFarm でテスト実行
82
でも…
DeviceFarm でテスト実行
83
もうちょっと
楽したいですよね?
開発ワークフローとの統合
開発ワークフローとの統合
• Gradle Plugin を使う
• Jenkins Plugin を使う
85
Gradle Plugin の導入・設定
• Android Studio の build.gradle に数行追加
• IAMユーザを作成して、accessKey / secretKey を取得
(IAM : Identity and Acc...
Gradle Plugin の導入・設定
87
←追加
←追加↓
・DeviceFarmプロジェクト名
・DevicePool(端末群)
・認証トークン
など…
Gradle Plugin からの実行
88
←実行!
↑結果はここを自分で見にいく…
※あくまでも Device Farm のテストジョブのキックのみです。
Gradle Plugin
89
結果はコンソールで確認…
Gradle Plugin
• メリット
• テスト実行のために、コンソールの操作が不要
• 実行時の設定をファイルで記述できる
• コマンドラインからの実行ができる
• もうちょっと…
• IAM の認証情報を git で管理する??
• 結...
Jenkins Plugin
91
そこで Jenkins 連携!
Jenkins Plugin の導入・設定
• Jenkins に AWS Device Farm Plugin を導入
• Jenkins のシステム設定
• Jenkins にジョブを作成&設定
92
Jenkins Plugin の導入・設定
• Jenkins に AWS Device Farm Plugin を導入
93
検索すると出てきます
Jenkins Plugin の導入・設定
• Jenkins のシステム設定
• accessKey / secretKey を追加
94
Jenkins Plugin の導入・設定
• 本体 apk、テスト apk の作成の設定
95
Jenkins Plugin の導入・設定
• ビルド後の処理の処理に
「Run Tests on AWS Device Farm」を追加して、設定する
96
Jenkins での実行
97
他にも、
・push があったら実行
・定刻実行など…
←
Jenkins で結果確認
98
Jenkins 連携すると
• 実行結果の推移がグラフィカルに確認できる
• テスト終了時に Slack 通知なども可能
99
実運用するなら…
100
テストをちゃんと記述して、
Jenkins で継続的に
テストを実行しよう!
まとめ
• Device Farm はクラウド上の実機を時間借りできるサービス
• テストコードがなくても触れる
• テストコードを用意して、Jenkins 等の CI 連携すると効果的
101
今後の期待
• 端末のラインナップの充実
• メーカーに偏りがある
(先進国のチープな端末でのクラッシュの確認がしたい)
• 最新の OS バージョンがない
(最新の OS で確認したいニーズは大きいのでは?)
• スクリーンショットがレポート...
DevFest Shikoku 2017
• 11/18(日)に徳島大学で開催!
• Android, Kotlin, TensolFlow
Go言語, Firebase など…
104
ご参加お待ちしております!
https://gdgshi...
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
Upcoming SlideShare
Loading in …5
×

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

2,757 views

Published on

JAWS Festa−中四国2017−
2017.11.4@愛媛大学

Published in: Mobile
  • Be the first to comment

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

  1. 1. Device Farm を使った スマホアプリの自動テスト JAWS Festa−中四国2017− 2017.11.4@愛媛大学 辰濱健一
  2. 2. 自己紹介 • 辰濱健一(たつはまけんいち) • 徳島県生まれ、神山町在住 • GDG Shikoku スタッフ • Sansan 株式会社、名刺アプリ Eight のアプリ開発 • Twitter:@tatsuhama50 • Facebook:kenichi.tatsuhama 2
  3. 3. GDG Shikoku 4 • 四国地方をカバーする Google Developer Group • Googleのテクノロジー全般について、四国で勉強会を開催して います。 • Android、Kotlin、Google App Engine、TensolFlow、Firebase など • Web:https://sites.google.com/site/gdgshikoku/ • Conpass: https://gdgshikoku.connpass.com/
  4. 4. DevFest Shikoku 2017 • 11/18(日)に徳島大学で開催! • Android, Kotlin, TensolFlow Go言語, Firebase など… 5 ご参加お待ちしております! https://gdgshikoku.connpass.com/event/68244/
  5. 5. 徳島県神山町 6
  6. 6. 徳島県神山町 7 約200km 車で3時間 四国は広いんです!
  7. 7. 徳島県神山町 • 人口:約 5,500 人 • 名産:すだち • 全面積の 83% が山地 • 過疎化が進む町 (消滅可能性都市にランクイン) • サテライトオフィス(13社)の進出、移住者が増 • 古民家再生・地産地消・教育改革など、先進的な取り組みが行 われて注目されている 8
  8. 8. Sansan株式会社 神山ラボ 9
  9. 9. Sansan株式会社 10 詳しくは、14:05 〜のサポータセッションで!!
  10. 10. Device Farm とは?
  11. 11. Device Farm とは • AWS クラウドで実機のデバイスを使用してアプリをテスト • Android / iOS / Webアプリに対応 • 実際の環境をシミュレート • 開発ワークフローとの統合 • UI テストフレームワークをサポート • 料金 12
  12. 12. Device Farm とは • AWS クラウドで実機のデバイスを使用してアプリをテスト • Android / iOS / Webアプリに対応 • 実際の環境をシミュレート • 開発ワークフローとの統合 • UI テストフレームワークをサポート • 料金 13 エミュレータよも 信頼できる パフォーマンス
  13. 13. Device Farm とは • AWS クラウドで実機のデバイスを使用してアプリをテスト • Android / iOS / Webアプリに対応 • 実際の環境をシミュレート • 開発ワークフローとの統合 • UI テストフレームワークをサポート • 料金 14 マルチプラット フォーム
  14. 14. Device Farm とは • AWS クラウドで実機のデバイスを使用してアプリをテスト • Android / iOS / Webアプリに対応 • 実際の環境をシミュレート • 開発ワークフローとの統合 • UI テストフレームワークをサポート • 料金 15 • 位置情報の指定 • 端末言語 • 前提アプリの インストール
  15. 15. Device Farm とは • AWS クラウドで実機のデバイスを使用してアプリをテスト • Android / iOS / Webアプリに対応 • 実際の環境をシミュレート • 開発ワークフローとの統合 • UI テストフレームワークをサポート • 料金 16 ・API ・Gradle Plugin ・Jenkins Plugin →自動化できる!
  16. 16. Device Farm とは • AWS クラウドで実機のデバイスを使用してアプリをテスト • Android / iOS / Webアプリに対応 • 実際の環境をシミュレート • 開発ワークフローとの統合 • UI テストフレームワークをサポート • 料金 17 Appium, Espresso などで UI 操作を記述& 実行できる
  17. 17. Device Farm とは • AWS クラウドで実機のデバイスを使用してアプリをテスト • Android / iOS / Webアプリに対応 • 実際の環境をシミュレート • 開発ワークフローとの統合 • UI テストフレームワークをサポート • 料金 18 • 0.17$ / デバイス分 • 250$ / 月 • 無償枠(1000 デバイス分)
  18. 18. テストコードがない人向け
  19. 19. テストコードがない人向け • モンキーテスト • Remote access (2016/4〜) • 【New!!】Direct Device Access (2017/10/16〜) 20
  20. 20. モンキーテスト • Device Farm 側でランダムに触ってくれる • アプリのバイナリさえあれば、今すぐ始められる 21
  21. 21. モンキーテスト 22 Automated tests を選んで Create a new run
  22. 22. モンキーテスト 23 アプリケーションの種類を選んで アップロード
  23. 23. モンキーテスト 24 アプリの情報が表示される
  24. 24. モンキーテスト 25 何イベント(数)実行するか
  25. 25. モンキーテスト 26 実行する端末を選択
  26. 26. モンキーテスト 27 端末の設定
  27. 27. モンキーテスト 28 タイムアウトの設定
  28. 28. モンキーテスト 29 実際のプロダクトでやってみた。
  29. 29. ターゲットアプリ 30
  30. 30. モンキーテスト 31 結果…!?
  31. 31. モンキーテスト 32
  32. 32. モンキーテスト 33 わずかな時間で複数端末での クラッシュが発覚。。。orz
  33. 33. モンキーテスト • スクリーンショットや動画、ログが残ってる 34※横固定のタブレット
  34. 34. モンキーテスト • 動画 35
  35. 35. モンキーテスト 36 動画により、どういう遷移や状態で クラッシュしたかが確認できる! → 問題の確認が容易に!
  36. 36. Remote access 37 • ブラウザ上に表示される端末をマウス・キーボードで操作 • アプリバイナリのアップロード&実行が可能 • 端末内ブラウザで Web サイトの表示 (=レンダリングチェック)も可能
  37. 37. Remote access 38 Remote access を選んで +Start a new session
  38. 38. Remote access 39 端末を検索して選んで…
  39. 39. Remote access 40 Confirm and start session
  40. 40. Remote access 41しばし待つ(だいたい数分以内)
  41. 41. Remote access 42 マウスで直接 操作可能! アプリバイナリの アップロードは ここから
  42. 42. Remote access 43 ブラウザも 起動できる
  43. 43. Remote access 44 手元にない端末を ちょっと試してみたい時には便利!
  44. 44. Remote access 45 でも、何度も手作業で 同じ操作をして、 動作確認するのはつらい・・・
  45. 45. Direct Device Access • USB を介してローカルマシンに直接接続されているかのよう に、デバイスを使用できる。 • IDE からのデバッグも可能 • 200$/月の private device の契約が必要 46
  46. 46. Direct Device Access • https://aws.amazon.com/jp/blogs/mobile/announcing- direct-device-access-in-aws-device-farm/ 47 16 OCT 2017!!
  47. 47. Direct Device Access 48 DeviceFarm上の 端末の画面 https://aws.amazon.com/jp/blogs/mobile/announcing-direct-device-access-in-aws-device-farm/ DeviceFarm上の 端末でデバッグ
  48. 48. テストコードを用意する
  49. 49. テストコードを用意して実行 • UI 操作をスクリプトで記述する • 何度でも同じ操作ができる • 機種や OS バージョンの横展開が容易になる • テストコードを Device Farm のコンソールから実行させる • ※以降 Android アプリを例に紹介します。 50
  50. 50. テスティングフレームワーク • 特徴はいろいろ • OS:iOS 専用、Android 専用、ハイブリッド • アプリ内部(DB やキャッシュ)の参照可否 • リリースバイナリでの実行可否 • アプリ外の端末操作の可否 (別アプリの操作や OS が出すパーミッションダイアログの操作) • 用途によって選ぼう • 細かなところまで(ホワイトボックス)でテストする? • リリースバイナリでテストしたい? • 記述可能な言語 51
  51. 51. テスティングフレームワークの例 • Android • Espresso … アプリ内参照可、他アプリの操作不可、レコーダーあり • UIAutomater … 他アプリの操作が可能、Android 4.2 以上 (Espresso や UIAutomater は併用可能) • iOS • KIF • Calabash • ハイブリッド • Appium … 色んな言語で記述可能、リリースバイナリのテストが可能 52
  52. 52. Espresso • Android アプリのテストを書くならオススメ • Google が公開 • Android Studio から操作の記録と検証コードの追加ができる • WebView の操作・検証も可能 • Intent のテストも可能(Espresso-Intents) • 特定の状態(例:通信が終わるまで)まで待つ仕組み(IdlingResource) 53
  53. 53. Espresso Recorder 54Android Studio の Run > Record Espresso Test
  54. 54. Espresso Recorder 55 1. 端末を操作する 2.アクションが 記録される 3. 検証を追加 1 〜 3 を繰り返す
  55. 55. Espresso Recorder 56 検証を追加 1. View を選択 2. 検証内容を編集 emailEdit の文字列が aaa かどうか?
  56. 56. Espresso Recorder 57 Espresso の テストコード が生成される ※かなり冗長でカオス ※可読性的に要メンテ ※記述の参考にはなる このコードで 何度でも 同じ操作が 可能になる!
  57. 57. Espresso の基本 58 • onView(...):操作対象の View を探す • perform(...):View に対する操作 • check(...):View の検証
  58. 58. Espresso で非同期待ち合わせ 59 // サーバアクセス・Progress 表示 ↑click 後、即実行される。。。 まだ結果が帰ってきていないので失敗する。 通信が終わってからチェックしたい。 Q:「通信が終わってから」とは?? ・何秒か待つ? 何秒? ・check…の前に wait(条件) を挟む?
  59. 59. Espresso IdlingResource • 指定した条件を満たすまで、テストコードの実行を中断 • 例)サーバ通信中は、Progress 表示があるとする → Progress が非表示になったら再開したい 60
  60. 60. Espresso IdlingResource 61 progress が 非表示(isGone) なら再開(idleNow)
  61. 61. Espresso IdlingResource 62 IdlingResource の登録 IdlingResource の解除
  62. 62. Espresso IdlingResource • 63 ← Progress が消えるまで待つ! // サーバアクセス・Progress 表示 • IdlingResource を設定したテストコードの実行
  63. 63. Espresso IdlingResource 64 IdlingResource を使うと テスト実行の 非同期待ち合わせが容易に!
  64. 64. DeviceFarm での実行 • 事前準備 • アプリケーションバイナリの作成 • テストバイナリの作成 • コンソールからテストを実行 • コンソールで結果を確認 65
  65. 65. アプリケーションバイナリ作成 66 • 本体のビルド • ./gradlew assembleDebug • app-debug.apk が生成される • テストバイナリのビルド • ./gradlew assembleDebugAndroidTest • app-debug-androidTest.apk が生成される
  66. 66. DeviceFarm でテスト実行 67 アプリケーションの種類を選んで
  67. 67. DeviceFarm でテスト実行 68 アプリ本体のバイナリを アップロード
  68. 68. DeviceFarm でテスト実行 69 アプリの情報を確認
  69. 69. DeviceFarm でテスト実行 70 ←Instrumentation テストを選んで、 テストバイナリをアップロード
  70. 70. DeviceFarm でテスト実行 71 テストアプリの情報や フィルタの設定
  71. 71. DeviceFarm でテスト実行 72 実行する端末の種類を選んで
  72. 72. DeviceFarm でテスト実行 73 テスト端末の設定をして
  73. 73. DeviceFarm でテスト実行 74 実行!
  74. 74. DeviceFarm でテスト実行 75 実行中…
  75. 75. DeviceFarm でテスト実行 76 各端末の実行状態
  76. 76. DeviceFarm でテスト実行 77 実行結果
  77. 77. DeviceFarm でテスト実行 78 端末ごとの実行結果
  78. 78. DeviceFarm でテスト実行 79 端末での実行結果
  79. 79. DeviceFarm でテスト実行 80 テスト実行中の パフォーマンスモニタ
  80. 80. DeviceFarm でテスト実行 81 テストコードにより 端末や OS の横展開が 容易になった!
  81. 81. DeviceFarm でテスト実行 82 でも…
  82. 82. DeviceFarm でテスト実行 83 もうちょっと 楽したいですよね?
  83. 83. 開発ワークフローとの統合
  84. 84. 開発ワークフローとの統合 • Gradle Plugin を使う • Jenkins Plugin を使う 85
  85. 85. Gradle Plugin の導入・設定 • Android Studio の build.gradle に数行追加 • IAMユーザを作成して、accessKey / secretKey を取得 (IAM : Identity and Access Management) • accessKey / secretKey を build.gradle へ設定 86
  86. 86. Gradle Plugin の導入・設定 87 ←追加 ←追加↓ ・DeviceFarmプロジェクト名 ・DevicePool(端末群) ・認証トークン など…
  87. 87. Gradle Plugin からの実行 88 ←実行! ↑結果はここを自分で見にいく… ※あくまでも Device Farm のテストジョブのキックのみです。
  88. 88. Gradle Plugin 89 結果はコンソールで確認…
  89. 89. Gradle Plugin • メリット • テスト実行のために、コンソールの操作が不要 • 実行時の設定をファイルで記述できる • コマンドラインからの実行ができる • もうちょっと… • IAM の認証情報を git で管理する?? • 結果が出た時にコンソールを見にいかないと行けない 90
  90. 90. Jenkins Plugin 91 そこで Jenkins 連携!
  91. 91. Jenkins Plugin の導入・設定 • Jenkins に AWS Device Farm Plugin を導入 • Jenkins のシステム設定 • Jenkins にジョブを作成&設定 92
  92. 92. Jenkins Plugin の導入・設定 • Jenkins に AWS Device Farm Plugin を導入 93 検索すると出てきます
  93. 93. Jenkins Plugin の導入・設定 • Jenkins のシステム設定 • accessKey / secretKey を追加 94
  94. 94. Jenkins Plugin の導入・設定 • 本体 apk、テスト apk の作成の設定 95
  95. 95. Jenkins Plugin の導入・設定 • ビルド後の処理の処理に 「Run Tests on AWS Device Farm」を追加して、設定する 96
  96. 96. Jenkins での実行 97 他にも、 ・push があったら実行 ・定刻実行など… ←
  97. 97. Jenkins で結果確認 98
  98. 98. Jenkins 連携すると • 実行結果の推移がグラフィカルに確認できる • テスト終了時に Slack 通知なども可能 99
  99. 99. 実運用するなら… 100 テストをちゃんと記述して、 Jenkins で継続的に テストを実行しよう!
  100. 100. まとめ • Device Farm はクラウド上の実機を時間借りできるサービス • テストコードがなくても触れる • テストコードを用意して、Jenkins 等の CI 連携すると効果的 101
  101. 101. 今後の期待 • 端末のラインナップの充実 • メーカーに偏りがある (先進国のチープな端末でのクラッシュの確認がしたい) • 最新の OS バージョンがない (最新の OS で確認したいニーズは大きいのでは?) • スクリーンショットがレポートに表示されない問題の改修 • https://forums.aws.amazon.com/thread.jspa?messageID=7527 86 • これが改修されると、色んな端末のレイアウトチェックが容易に! 102
  102. 102. DevFest Shikoku 2017 • 11/18(日)に徳島大学で開催! • Android, Kotlin, TensolFlow Go言語, Firebase など… 104 ご参加お待ちしております! https://gdgshikoku.connpass.com/event/68244/

×