SlideShare a Scribd company logo
1 of 24
Download to read offline
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Androidアプリ開発のテスト環境
Appium + STF + Jenkinsのおはなし
Android Testing Bootcamp #2
2016/06/09(Thu)
平田 敏之@DeNA
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 平田 敏之
⁃ DeNA SWET G (テスト基盤チーム etc) 所属
• SWETとは?
⁃ Software Engineer in Test
• http://www.slideshare.net/masaki/dena-software-engineer-in-test
⁃ ミッション
• DeNAサービス全般の品質向上
• DeNAエンジニアの開発生産性向上
• 私が主にやっていること
⁃ クライアントアプリ周りのテスト戦略、自動テストの開発
⁃ CI/CD環境整備
⁃ テスト基盤環境の開発
⁃ などなど
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日の流れ
 最近のAndroidアプリ開発のテスト環境
 UIテスティングフレームワーク
⁃ Appium & デモ
 実行環境
⁃ STF & デモ
 CI
⁃ Jenkins
 全体のデモ
 まとめ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
本日話さないこと
 以下については話しきれませんので省略
⁃ 自動テストのテスト戦略
⁃ 自動テストの書き方
⁃ 自動テストのつらみ
⁃ Appiumのつらみ
⁃ Android端末の挙動差異のつらみ
⁃ Jenkinsのつらみ
ここらへんは別の機会に..
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Androidアプリの自動テストってどうしていますか?
 テストをどこまで書いていますか?
⁃ 手動テストだけになっていませんか?
 テストはどこで実行していますか?
⁃ 手元にある端末だけで動くとかになっていませんか?
 テストの実行環境が固定化されていませんか?
⁃ いつも同じ端末で動いていませんか?
 テストは並列実行できるようになっていますか?
⁃ 実行時間が長くてつらいとかありませんか?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Androidアプリ開発をとりまくテスト環境(の一例)
UIテスティングフレームワーク 実行環境 CI
Espresso Genymotion Jenkins
UI Automator AWS Device Farm CircleCI
Appium Firebase Test Lab
STF
以前に比べて環境は整ってきている
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Androidアプリ開発をとりまくテスト環境(の一例)
UIテスティングフレームワーク 実行環境 CI
Espresso Genymotion Jenkins
UI Automator AWS Device Farm CircleCI
Appium Firebase Test Lab
STF
今日はAppium + STF + Jenkinsのお話
※注意※
用途に応じて使い分けるのが良い
Copyright © DeNA Co.,Ltd. All Rights Reserved.
UIテスティングフレームワーク
 Espresso
⁃ アプリと同じプロジェクト内にテストコードを書く
⁃ ボタンなどの指定は楽
• [悲報] Test RecorderはAndroid Studio2.2(Preview2)に入らず
• 6/9にリリースされたAndroid Studio2.2(Preview3)に入りました
 UI Automator
⁃ 対象となるアプリ以外の制御も可能
⁃ API Level 18以上で利用できる
⁃ ボタンなどのidを調べるにはUI Automator Viewerを使用
 Appium
⁃ iOS / Androidに対応
⁃ RspecやJUnitなどが使える
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Appium
Appium Client
Test Script
(Ruby / Java etc)
Appium Server
(node)
UI Automator
/Selendroid
SmartPhone
テスト対象アプリ
Architecture  iOS/Androidに対応
 Native App/ Hybrid App / Mobile Webに対応
⁃ アプリが手に入ればOK
 Ruby / Java / javascript(node.js) などでテスト
コードの記述が可能
⁃ RspecやJunitなど慣れたTesting Framework
を使える
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Appium / サンプルアプリ
Layout
<Button
….
android:id=“@+id/button_sample_1” />
<Button
….
android:id=“@+id/button_sample_2” />
<EditText
….
android:id=“@+id/text_1” />
<EditText
….
android:id=“@+id/text_2” />
Action
1. SAMPLE1をclick
2. SAMPLE2をclick
3. 上のEditTextに1を入力
4. 下のEditTextに2を入力
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Appium & Espresso サンプルコード
Ruby w/appium_lib
- button("com.thirata.appium_sample:id/button_sample_1").click
- find("com.thirata.appium_sample:id/button_sample_2").click
- textfield_exact(com.thirata.appium_sample:id/text_1").type 1
- textfields[1].send_keys("2")
Appium
Espresso
- onView(ViewMatchers.withId(R.id.sample_btn1).perform(ViewActions.click());
- onView(ViewMatchers.withId(R.id.sample_btn2).perform(ViewActions.click());
- onView(ViewMatchers.withId(R.id.sample_text1).perform(ViewActions.replaceText(“1”));
- onView(ViewMatchers.withId(R.id.sample_text1).perform(ViewActions.replaceText(“2”));
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Appium / デモ(MERY)
世に出ているアプリでの動作例
• 対象
• MERY
• テストケース
• loginをしてusernameを確認
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テストの実行環境の課題
 自動テストを実行する環境の面倒さ
⁃ 自動テストを動かす環境に悩んだことはありませんか?
 あるあるの例
⁃ Jenkinsにのせるのが大変なので手元のみで動かしている
⁃ Jenkinsで動かしているがJenkinsのマシンに接続された端末固定
で動く
• 端末を持っていかれてテストが動かなくなった
• 動かしたい端末に交換して動かすなどしている
⁃ 端末側でテストが動いているかわからないのでJenkins側の設定で
頑張っている
• Locksとか使っていたり同時ビルド数を1にしたりしている
⁃ API Level x以上の端末だけテスト実行とかSamsungの端末だけテ
スト実行とかしたいが出来ていない
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テストの実行環境
 AWS Device Farm
⁃ 利用できるテスティングフレームワークが限られている
• Appium Java(Junit / TestNG) / Python
• Calabash
• Instrumentation (JUnit, Espresso, Robotium, or any instrumentation-based tests)
• UI Automator
• Explorer
 Firebase Test Lab for Android
⁃ 利用できるテスティングフレームワークが限られている
• Espresso
• Robotium
• UI Automator 2.0
• instrumentation
 STF
⁃ 自前で動かすため運用コストはかかる
⁃ 今ある資源をいかせる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STF(Smartphone Test Farm) / Device Farm
 ブラウザから端末を操作することができる
 リモートデバッグができる etc etc
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STF / デモ
STFのさくさくさはご自身でSTFを動かしてご確認ください
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STFの機能@2.0.0(beta)
 自動テストでの利用も考えAPIを追加
⁃ 例)
• 端末のstatus(利用中 / オンライン etc)の取得・変更
• 端末の情報(OS / Model etc)の取得
 GET /api/v1/devices (端末一覧)
Curl Sample
curl -H "Authorization: Bearer OAUTH-TOKEN"
https://stf.example.org/api/v1/devices
Response Sample
{"success":true,"devices":[{"abi":"armeabi-
v7a","airplaneMode":false,"battery":{"health":"good","level":100,"scale":100,"source":"usb","status":"full","temp":27.6,"voltage":
4.348},"browser":{"apps":[{"id":"com.android.chrome/com.google.android.apps.chrome.Main","name":"Chrome","selected":true,
"system":true,"type":"chrome","developer":"Google
Inc."}],"selected":true},"channel":"d7V3Zoo5B2Kc6MdCrbsvcBABG+w=","createdAt":"2016-01-
26T11:29:20.444Z","display":{"density":3,"fps":60,"height":1920,"id":0,"rotation":0,"secure":true,"size":4.971247673034668,"ur
l":"ws://localhost:7400","width":1080,"xdpi":442.45098876953125,"ydpi":443.3450012207031,"inches":5},"manufacturer":"LGE
","model":"Nexus
5","network":{"connected":true,"failover":false,"roaming":false,"subtype":"","type":"WIFI"},"operator":null,"owner":null,"phone":
{"iccid":null,"imei":"359250051959219","network":"UNKNOWN","phoneNumber":null},"platform":"Android","presenceChangedAt"
:"2016-02-
01T03:36:13.365Z","present":true,"product":"hammerhead","provider":{"channel":"xxxxxx","name":"xxxxxx"},"ready":true,"rem
oteConnect":false,"remoteConnectUrl":null,"reverseForwards":[],"sdk":"19","serial":"xxxxx","status":3,"statusChangedAt":"2016-
02-01T03:36:13.216Z","version":"4.4.2","name":"Nexus 5","releasedAt":"2013-11-
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI環境
 Jenkins
⁃ 言わずとしれた定番だが運用コストがかかる
⁃ なんでも出来るがJenkinsおじさんも出来やすい
⁃ 今の最新バージョンは2.8
 CircleCI
⁃ 簡単に利用できる優れもの
⁃ 痒いところに手が届かない
⁃ [未承諾広告] 弊社でEnterprise版を導入しました
• 6/10(金) CircleCI Meetup@ヒカリエ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Jenkins 2.8 + blueocean plugin
https://jenkins.io/blog/2016/05/26/introducing-blue-ocean/
Jenkinsも進化しています
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Androidアプリ開発のテスト環境
 今回紹介したテスト環境一式
⁃ Appium + STF + Jenkins
上記以外に利用しているもの
⁃ テストを並列実行させたい
• Appium + Docker
⁃ JenkinsでSTFを使いやすくしたい
• STF + Jenkins Plugin
Copyright © DeNA Co.,Ltd. All Rights Reserved.
STF用Jenkins Plugin
 APIを1つ1つ毎度叩くのは面倒なのでPlugin化
 STFのAPIの制御をPlugin側でよしなにしてくれる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デモ / STF + Jenkins + Appium + Docker
自動テストが2つの端末で動くデモ動画
デモ動画
Copyright © DeNA Co.,Ltd. All Rights Reserved.
まとめ
 Androidアプリ開発のテスト環境は整ってきている
⁃ やっていないなら是非やりましょう
 プロダクトに併せて利用するテスト環境を選択しましょう
 今回紹介したテスト環境
⁃ STF + Jenkins + Appium + Docker
• 弊社オリジナルはSTF用Jenkins Pluginのみで、改良後に公開します
Copyright © DeNA Co.,Ltd. All Rights Reserved.
最後に
さらに先に進むために
 SWETは人材を募集しております!!
⁃ 今回話した内容、あえて話してない内容に興味
がある人は是非

More Related Content

What's hot

JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションmirer
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境Toshiyuki Hirata
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -Toshiyuki Hirata
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるToshiyuki Hirata
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Toshiyuki Hirata
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることKazuaki KURIU
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情Toshiyuki Hirata
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるShunsuke Maeda
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフToshiyuki Hirata
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Koji Hasegawa
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスToshiyuki Hirata
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割Toshiyuki Hirata
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介Shunsuke Maeda
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略Naoki Umehara
 
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Naoto Kishino
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例健一 辰濱
 

What's hot (20)

JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフ
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例
 

Viewers also liked

「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界Nozomi Ito
 
UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発修平 大野
 
AWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみたAWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみたTatsuya Yamamoto
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみたjustice_sm
 
AWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみたAWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみたYasuhiro Tajiri
 
フロントエンド開発者のためのJenkins
フロントエンド開発者のためのJenkinsフロントエンド開発者のためのJenkins
フロントエンド開発者のためのJenkinsSatake Hiroyuki
 
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化健一 辰濱
 
JavascriptでもTestがしたい!
JavascriptでもTestがしたい!JavascriptでもTestがしたい!
JavascriptでもTestがしたい!洋一郎 櫻井
 
Unowned / Weak References with Closure
Unowned / Weak References with ClosureUnowned / Weak References with Closure
Unowned / Weak References with ClosureNaruki Chigira
 
Rust (Ginzarb 20161114)
Rust (Ginzarb 20161114)Rust (Ginzarb 20161114)
Rust (Ginzarb 20161114)Kevin Toyoda
 
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れてはじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れてKenji Tanaka
 
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへアプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへTomohiro Yamasaki
 
データベース12 - トランザクションと同時実行制御
データベース12 - トランザクションと同時実行制御データベース12 - トランザクションと同時実行制御
データベース12 - トランザクションと同時実行制御Kenta Oku
 
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...Yusaku Kinoshita
 
アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話shinta rock
 

Viewers also liked (17)

「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
 
UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発
 
AWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみたAWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみた
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみた
 
AWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみたAWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみた
 
フロントエンド開発者のためのJenkins
フロントエンド開発者のためのJenkinsフロントエンド開発者のためのJenkins
フロントエンド開発者のためのJenkins
 
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化
 
Androidテスティング実践2 システムテスト編
Androidテスティング実践2 システムテスト編Androidテスティング実践2 システムテスト編
Androidテスティング実践2 システムテスト編
 
JavascriptでもTestがしたい!
JavascriptでもTestがしたい!JavascriptでもTestがしたい!
JavascriptでもTestがしたい!
 
Unowned / Weak References with Closure
Unowned / Weak References with ClosureUnowned / Weak References with Closure
Unowned / Weak References with Closure
 
iOS豆知識ver0.0.5
iOS豆知識ver0.0.5iOS豆知識ver0.0.5
iOS豆知識ver0.0.5
 
Rust (Ginzarb 20161114)
Rust (Ginzarb 20161114)Rust (Ginzarb 20161114)
Rust (Ginzarb 20161114)
 
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れてはじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
 
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへアプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
アプリのテストを書かなければならないと分かっているけども、書けていない人たちへ
 
データベース12 - トランザクションと同時実行制御
データベース12 - トランザクションと同時実行制御データベース12 - トランザクションと同時実行制御
データベース12 - トランザクションと同時実行制御
 
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
 
アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話アプリデザインのお勉強 UI/UXのお話
アプリデザインのお勉強 UI/UXのお話
 

Similar to Androidアプリ開発のテスト環境

5分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 20175分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 2017Toshiya Komoda
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告Masaki Nakagawa
 
Trac Plugin Developement with Jenkins
Trac Plugin Developement with JenkinsTrac Plugin Developement with Jenkins
Trac Plugin Developement with JenkinsTakahisa Wada
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Masanori Satoh
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!智治 長沢
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例Takeshi Kondo
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック智治 長沢
 
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~SEGADevTech
 
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 智治 長沢
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Kenichi Kambara
 
事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン友隆 浅黄
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめatsushi_tmx
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニアSHIFT Inc.
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カットRakuten Group, Inc.
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Naoki Umehara
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストTsutomu Chikuba
 

Similar to Androidアプリ開発のテスト環境 (19)

快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
 
5分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 20175分で分かるselenium conference berlin 2017
5分で分かるselenium conference berlin 2017
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告
 
Trac Plugin Developement with Jenkins
Trac Plugin Developement with JenkinsTrac Plugin Developement with Jenkins
Trac Plugin Developement with Jenkins
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
 
【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック【Agile Conference tokyo 2011】 継続的フィードバック
【Agile Conference tokyo 2011】 継続的フィードバック
 
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~
 
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 
事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン事例からわかる!テスト自動化導入パターン
事例からわかる!テスト自動化導入パターン
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 

More from Toshiyuki Hirata

iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測Toshiyuki Hirata
 
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測Toshiyuki Hirata
 
iOSにおける自動テストの並列化
iOSにおける自動テストの並列化iOSにおける自動テストの並列化
iOSにおける自動テストの並列化Toshiyuki Hirata
 
UIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめるUIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめるToshiyuki Hirata
 
UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法Toshiyuki Hirata
 
我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有Toshiyuki Hirata
 
レビューのコストを削減するための施策
レビューのコストを削減するための施策レビューのコストを削減するための施策
レビューのコストを削減するための施策Toshiyuki Hirata
 

More from Toshiyuki Hirata (7)

iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
 
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
 
iOSにおける自動テストの並列化
iOSにおける自動テストの並列化iOSにおける自動テストの並列化
iOSにおける自動テストの並列化
 
UIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめるUIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめる
 
UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法
 
我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有
 
レビューのコストを削減するための施策
レビューのコストを削減するための施策レビューのコストを削減するための施策
レビューのコストを削減するための施策
 

Recently uploaded

「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 

Recently uploaded (12)

「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 

Androidアプリ開発のテスト環境

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. Androidアプリ開発のテスト環境 Appium + STF + Jenkinsのおはなし Android Testing Bootcamp #2 2016/06/09(Thu) 平田 敏之@DeNA
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介  平田 敏之 ⁃ DeNA SWET G (テスト基盤チーム etc) 所属 • SWETとは? ⁃ Software Engineer in Test • http://www.slideshare.net/masaki/dena-software-engineer-in-test ⁃ ミッション • DeNAサービス全般の品質向上 • DeNAエンジニアの開発生産性向上 • 私が主にやっていること ⁃ クライアントアプリ周りのテスト戦略、自動テストの開発 ⁃ CI/CD環境整備 ⁃ テスト基盤環境の開発 ⁃ などなど
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日の流れ  最近のAndroidアプリ開発のテスト環境  UIテスティングフレームワーク ⁃ Appium & デモ  実行環境 ⁃ STF & デモ  CI ⁃ Jenkins  全体のデモ  まとめ
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. 本日話さないこと  以下については話しきれませんので省略 ⁃ 自動テストのテスト戦略 ⁃ 自動テストの書き方 ⁃ 自動テストのつらみ ⁃ Appiumのつらみ ⁃ Android端末の挙動差異のつらみ ⁃ Jenkinsのつらみ ここらへんは別の機会に..
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. Androidアプリの自動テストってどうしていますか?  テストをどこまで書いていますか? ⁃ 手動テストだけになっていませんか?  テストはどこで実行していますか? ⁃ 手元にある端末だけで動くとかになっていませんか?  テストの実行環境が固定化されていませんか? ⁃ いつも同じ端末で動いていませんか?  テストは並列実行できるようになっていますか? ⁃ 実行時間が長くてつらいとかありませんか?
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. Androidアプリ開発をとりまくテスト環境(の一例) UIテスティングフレームワーク 実行環境 CI Espresso Genymotion Jenkins UI Automator AWS Device Farm CircleCI Appium Firebase Test Lab STF 以前に比べて環境は整ってきている
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. Androidアプリ開発をとりまくテスト環境(の一例) UIテスティングフレームワーク 実行環境 CI Espresso Genymotion Jenkins UI Automator AWS Device Farm CircleCI Appium Firebase Test Lab STF 今日はAppium + STF + Jenkinsのお話 ※注意※ 用途に応じて使い分けるのが良い
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. UIテスティングフレームワーク  Espresso ⁃ アプリと同じプロジェクト内にテストコードを書く ⁃ ボタンなどの指定は楽 • [悲報] Test RecorderはAndroid Studio2.2(Preview2)に入らず • 6/9にリリースされたAndroid Studio2.2(Preview3)に入りました  UI Automator ⁃ 対象となるアプリ以外の制御も可能 ⁃ API Level 18以上で利用できる ⁃ ボタンなどのidを調べるにはUI Automator Viewerを使用  Appium ⁃ iOS / Androidに対応 ⁃ RspecやJUnitなどが使える
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. Appium Appium Client Test Script (Ruby / Java etc) Appium Server (node) UI Automator /Selendroid SmartPhone テスト対象アプリ Architecture  iOS/Androidに対応  Native App/ Hybrid App / Mobile Webに対応 ⁃ アプリが手に入ればOK  Ruby / Java / javascript(node.js) などでテスト コードの記述が可能 ⁃ RspecやJunitなど慣れたTesting Framework を使える
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. Appium / サンプルアプリ Layout <Button …. android:id=“@+id/button_sample_1” /> <Button …. android:id=“@+id/button_sample_2” /> <EditText …. android:id=“@+id/text_1” /> <EditText …. android:id=“@+id/text_2” /> Action 1. SAMPLE1をclick 2. SAMPLE2をclick 3. 上のEditTextに1を入力 4. 下のEditTextに2を入力 デモ動画
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. Appium & Espresso サンプルコード Ruby w/appium_lib - button("com.thirata.appium_sample:id/button_sample_1").click - find("com.thirata.appium_sample:id/button_sample_2").click - textfield_exact(com.thirata.appium_sample:id/text_1").type 1 - textfields[1].send_keys("2") Appium Espresso - onView(ViewMatchers.withId(R.id.sample_btn1).perform(ViewActions.click()); - onView(ViewMatchers.withId(R.id.sample_btn2).perform(ViewActions.click()); - onView(ViewMatchers.withId(R.id.sample_text1).perform(ViewActions.replaceText(“1”)); - onView(ViewMatchers.withId(R.id.sample_text1).perform(ViewActions.replaceText(“2”));
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. Appium / デモ(MERY) 世に出ているアプリでの動作例 • 対象 • MERY • テストケース • loginをしてusernameを確認 デモ動画
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テストの実行環境の課題  自動テストを実行する環境の面倒さ ⁃ 自動テストを動かす環境に悩んだことはありませんか?  あるあるの例 ⁃ Jenkinsにのせるのが大変なので手元のみで動かしている ⁃ Jenkinsで動かしているがJenkinsのマシンに接続された端末固定 で動く • 端末を持っていかれてテストが動かなくなった • 動かしたい端末に交換して動かすなどしている ⁃ 端末側でテストが動いているかわからないのでJenkins側の設定で 頑張っている • Locksとか使っていたり同時ビルド数を1にしたりしている ⁃ API Level x以上の端末だけテスト実行とかSamsungの端末だけテ スト実行とかしたいが出来ていない
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テストの実行環境  AWS Device Farm ⁃ 利用できるテスティングフレームワークが限られている • Appium Java(Junit / TestNG) / Python • Calabash • Instrumentation (JUnit, Espresso, Robotium, or any instrumentation-based tests) • UI Automator • Explorer  Firebase Test Lab for Android ⁃ 利用できるテスティングフレームワークが限られている • Espresso • Robotium • UI Automator 2.0 • instrumentation  STF ⁃ 自前で動かすため運用コストはかかる ⁃ 今ある資源をいかせる
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. STF(Smartphone Test Farm) / Device Farm  ブラウザから端末を操作することができる  リモートデバッグができる etc etc
  • 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. STF / デモ STFのさくさくさはご自身でSTFを動かしてご確認ください デモ動画
  • 17. Copyright © DeNA Co.,Ltd. All Rights Reserved. STFの機能@2.0.0(beta)  自動テストでの利用も考えAPIを追加 ⁃ 例) • 端末のstatus(利用中 / オンライン etc)の取得・変更 • 端末の情報(OS / Model etc)の取得  GET /api/v1/devices (端末一覧) Curl Sample curl -H "Authorization: Bearer OAUTH-TOKEN" https://stf.example.org/api/v1/devices Response Sample {"success":true,"devices":[{"abi":"armeabi- v7a","airplaneMode":false,"battery":{"health":"good","level":100,"scale":100,"source":"usb","status":"full","temp":27.6,"voltage": 4.348},"browser":{"apps":[{"id":"com.android.chrome/com.google.android.apps.chrome.Main","name":"Chrome","selected":true, "system":true,"type":"chrome","developer":"Google Inc."}],"selected":true},"channel":"d7V3Zoo5B2Kc6MdCrbsvcBABG+w=","createdAt":"2016-01- 26T11:29:20.444Z","display":{"density":3,"fps":60,"height":1920,"id":0,"rotation":0,"secure":true,"size":4.971247673034668,"ur l":"ws://localhost:7400","width":1080,"xdpi":442.45098876953125,"ydpi":443.3450012207031,"inches":5},"manufacturer":"LGE ","model":"Nexus 5","network":{"connected":true,"failover":false,"roaming":false,"subtype":"","type":"WIFI"},"operator":null,"owner":null,"phone": {"iccid":null,"imei":"359250051959219","network":"UNKNOWN","phoneNumber":null},"platform":"Android","presenceChangedAt" :"2016-02- 01T03:36:13.365Z","present":true,"product":"hammerhead","provider":{"channel":"xxxxxx","name":"xxxxxx"},"ready":true,"rem oteConnect":false,"remoteConnectUrl":null,"reverseForwards":[],"sdk":"19","serial":"xxxxx","status":3,"statusChangedAt":"2016- 02-01T03:36:13.216Z","version":"4.4.2","name":"Nexus 5","releasedAt":"2013-11-
  • 18. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI環境  Jenkins ⁃ 言わずとしれた定番だが運用コストがかかる ⁃ なんでも出来るがJenkinsおじさんも出来やすい ⁃ 今の最新バージョンは2.8  CircleCI ⁃ 簡単に利用できる優れもの ⁃ 痒いところに手が届かない ⁃ [未承諾広告] 弊社でEnterprise版を導入しました • 6/10(金) CircleCI Meetup@ヒカリエ
  • 19. Copyright © DeNA Co.,Ltd. All Rights Reserved. Jenkins 2.8 + blueocean plugin https://jenkins.io/blog/2016/05/26/introducing-blue-ocean/ Jenkinsも進化しています
  • 20. Copyright © DeNA Co.,Ltd. All Rights Reserved. Androidアプリ開発のテスト環境  今回紹介したテスト環境一式 ⁃ Appium + STF + Jenkins 上記以外に利用しているもの ⁃ テストを並列実行させたい • Appium + Docker ⁃ JenkinsでSTFを使いやすくしたい • STF + Jenkins Plugin
  • 21. Copyright © DeNA Co.,Ltd. All Rights Reserved. STF用Jenkins Plugin  APIを1つ1つ毎度叩くのは面倒なのでPlugin化  STFのAPIの制御をPlugin側でよしなにしてくれる
  • 22. Copyright © DeNA Co.,Ltd. All Rights Reserved. デモ / STF + Jenkins + Appium + Docker 自動テストが2つの端末で動くデモ動画 デモ動画
  • 23. Copyright © DeNA Co.,Ltd. All Rights Reserved. まとめ  Androidアプリ開発のテスト環境は整ってきている ⁃ やっていないなら是非やりましょう  プロダクトに併せて利用するテスト環境を選択しましょう  今回紹介したテスト環境 ⁃ STF + Jenkins + Appium + Docker • 弊社オリジナルはSTF用Jenkins Pluginのみで、改良後に公開します
  • 24. Copyright © DeNA Co.,Ltd. All Rights Reserved. 最後に さらに先に進むために  SWETは人材を募集しております!! ⁃ 今回話した内容、あえて話してない内容に興味 がある人は是非