SlideShare a Scribd company logo
Copyright © DeNA Co.,Ltd. All Rights Reserved.
DroidKaigi 2018
DAY.02 (Feb 9th, 2018)
duck
SWETグループ
DeNA Co., Ltd
Androidで利用できる
デ バ イ ス フ ァ ー ム の
メリット・デメリット
の紹介
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
前田隼輔
• @duck8823
• 所属
• DeNA SWETグループ テスト基盤チーム
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Android端末の種類
Google "Android - Android スマートフォン"
URL http://www.android.com/intl/ja_jp/phones/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
世界はたのしい。開発者は?
実機検証の必要性
• エミュレーターと実機は異なる
増え続ける端末の種類
• OS(メーカーによるカスタマイズ)
• 解像度
• 実機の管理場所・方法
国内未発売の端末
端末の管理が面倒
Copyright © DeNA Co.,Ltd. All Rights Reserved.
そこで
デバイスファーム
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームとは
• 端末を(物理的に)集中管理
• WebブラウザやAPI、クライアントソフト
を介して特定の端末を操作
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームの利用
• 開発マシンに物理的に接続する必要がない
• 複数人が利用する場合も貸出管理の必要なし
• CI/CDとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームの種類(提供形態)
クラウド(共有)
• 他ユーザーと同じ端末を利用
クラウド(専有)
• 端末は専有
オンプレミス
• サーバーにインストール
Copyright © DeNA Co.,Ltd. All Rights Reserved.
メリット
• 端末の管理コスト減
• 日本未発売の端末利用
デメリット
• テスト失敗時の調査し
づらさ
• 端末設定の制限
• 他ユーザーとの端末の
競合
クラウド(共有)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
メリット
• 端末の管理コスト減
• 日本未発売の端末利用
• 端末は専有
• セキュリティ
• テスト前・後処理を
除外できる場合
デメリット
• テスト失敗時の調査し
づらさ
• 端末設定の制限
• 高コスト
クラウド(専有)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
メリット
• 端末の細かい設定
• セキュリティ
• テスト前・後処理を
除外できる場合
• 通信速度
(内部ネットワーク)
デメリット
• 導入・運用コスト
(サーバーの管理、
端末の劣化 etc.)
• 日本にインストールした
場合は海外端末
を利用できない
オンプレミス
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームでできること
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
CI/CDとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームでできること
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
CI/CDとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
端末の操作
• ブラウザやクライアント上から端末を操作
• ネットワークの影響を受けやすい
• デザインの確認など
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームでできること
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
CI/CDとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト
• テスティングフレームワークを利用したテスト
• リグレッションテスト
• サポートするフレームワークは異なる
• Espresso and/or Appium(JUnit)はほぼサポート
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso
• Google製のUIテストツール
• 自動同期機能が特徴の一つ
• 昨日のセッション
(Espressoテストコードの同期処理を究める)も👀
https://speakerdeck.com/sumio/synchronization-capabilities-of-espresso
• アプリのapk、テスト用のapk をアップロード
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Appium
• クライアント/サーバーモデル
• Appiumクライアントは各種フレームワークに対応
• JUnit(Java) / RSpec(Ruby) / Python...
Appiumサーバー
Appiumクライアント
in
テストスクリプト
REST ドライバー
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Appium
• テストスクリプトの実行場所
• サーバーで実行
• ローカルで実行
デバイスファーム
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Appium
• テストスクリプトの実行場所
• サーバーで実行
• フレームワークが限定される
• アップロードする準備が必要
(テストスクリプトをzip等で固める手順)
• ローカルで実行
• フレームワークを問わない
• テストコードを変更する必要
(AppiumサーバーのURL + 認証情報)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームでできること
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
CI/CDとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
モンキーテスト
• 利用者がテストを用意しない
• アプリをランダムに操作
→ クラッシュするとテスト失敗
• 認証情報などを指定できるものもある
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームでできること
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
CI/CDとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ダイレクトアクセス
• ネットワーク経由でADBを実行
(USBで接続してるのと同様に利用できる)
• 任意のテスティングフレームワークを実行可能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームでできること
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
CI/CDとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
• コマンドラインで実行できればCI/CDで実行可能
• ジョブ結果
• コマンドがフォアグラウンドで実行される必要
• サードパーティ製のプラグイン
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファームでできること
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
CI/CDとの連携
サービス(ソフトウェア)によって異なる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
3大クラウドインフラ
&
OSS
Copyright © DeNA Co.,Ltd. All Rights Reserved.
実際に動かして調査
conference-app-2018
https://github.com/DroidKaigi/conference-app-2018
Espresso のテストはそのまま利用
Appium (JUnit) のテストを追加
DroidKaigi 2018 official Android app
Copyright 2018 DroidKaigi
Licensed under the Apache License, Version 2.0.
http://www.apache.org/licenses/LICENSE-2.0
DroidKaigi 2018
Code of Conduct
http://www.association.droidkaigi.jp/en/code-of-
conduct.html
Licensed under a Creative Commons Attribution
3.0 Unported License.
https://creativecommons.org/licenses/by/3.0/deed.en_US
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
AWS Device Farm
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス(プライベートデバイス)
AWS 群の一つ
💰最初の 1000 分まで無料・従量課金
Copyright © DeNA Co.,Ltd. All Rights Reserved.
端末の操作
• セッション開始後、
インストールが可能
• PCキーボード利用可能
• ビデオの録画
• ログ
• Logcat
• TCP dump
AWS Device Farm
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso
• アプリ.apk と テスト.apk をアップロード
• 細かいデバイスの設定が可能
• 別のファイル、アプリ
• ロケーション
• 言語
• ネットワークプロファイル( 速度etc. )
AWS Device Farm
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso
• ビデオの録画
• パフォーマンスの計測
• CPU
• メモリー
• スレッド数
• ログ
• テストログ
• Logcat
• TCP dump
AWS Device Farm
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Appium
• アプリ.apk と テスト.zip をアップロード
• JUnit(Java)の場合、依存関係などもまとめる
• 細かいデバイスの設定が可能
• 別のファイル、アプリ
• ロケーション
• 言語
• ネットワークプロファイル( 速度etc. )
AWS Device Farm
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Appium
• ビデオの録画
• パフォーマンスの計測
• CPU
• メモリー
• スレッド数
• ログ
• Appium Java Output
• Appium Java XML
• Appium Server
• Logcat
• TCP dump
AWS Device Farm
Copyright © DeNA Co.,Ltd. All Rights Reserved.
モンキーテスト AWS Device Farm
• Built-in: Fuzz / Built-in: Explorer
• アプリ.apk をアップロード
• 細かいデバイスの設定が可能
• 別のファイル、アプリ
• ロケーション
• 言語
• ネットワークプロファイル( 速度etc. )
Copyright © DeNA Co.,Ltd. All Rights Reserved.
モンキーテスト
• Built-in: Fuzz
• ログインなし
• Built-in: Explorer
• ログインあり
• ビデオの録画
• ログ
• イベントログ
• Logcat
• TCP dump
AWS Device Farm
Fuzz
Explorer
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ダイレクトアクセス AWS Device Farm
• プラベートデバイスを契約している必要あり
• ADBを利用してアクセス可能
https://docs.aws.amazon.com/ja_jp/devicefarm/latest/
developerguide/direct-device-access.html
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携 AWS Device Farm
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name app-debug.apk 
--type ANDROID_APP
curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD}
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name appium-java-from-cli.zip 
--type APPIUM_JAVA_JUNIT_TEST_PACKAGE
curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}”
aws devicefarm schedule-run 
--project-arn "${PROJECT_ARN}" 
--device-pool-arn "${DEVICE_POOL_ARN}" 
--test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” 
--app-arn "${APP_ARN}"
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携 AWS Device Farm
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name app-debug.apk 
--type ANDROID_APP
curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD}
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name appium-java-from-cli.zip 
--type APPIUM_JAVA_JUNIT_TEST_PACKAGE
curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}”
aws devicefarm schedule-run 
--project-arn "${PROJECT_ARN}" 
--device-pool-arn "${DEVICE_POOL_ARN}" 
--test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” 
--app-arn "${APP_ARN}"
1. アップロードする
ためのURLを発行
2. PUT
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携 AWS Device Farm
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name app-debug.apk 
--type ANDROID_APP
curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD}
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name appium-java-from-cli.zip 
--type APPIUM_JAVA_JUNIT_TEST_PACKAGE
curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}”
aws devicefarm schedule-run 
--project-arn "${PROJECT_ARN}" 
--device-pool-arn "${DEVICE_POOL_ARN}" 
--test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” 
--app-arn "${APP_ARN}"
自動テストの場合は
テストスクリプトも
アップロード
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携 AWS Device Farm
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name app-debug.apk 
--type ANDROID_APP
curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD}
aws devicefarm create-upload --project-arn "${PROJECT_ARN}" 
--name appium-java-from-cli.zip 
--type APPIUM_JAVA_JUNIT_TEST_PACKAGE
curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}”
aws devicefarm schedule-run 
--project-arn "${PROJECT_ARN}" 
--device-pool-arn "${DEVICE_POOL_ARN}" 
--test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” 
--app-arn "${APP_ARN}"
ジョブをスケジュール
(結果を待たない)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
• 公式のGradleプラグイン
https://github.com/awslabs/aws-device-farm-gradle-plugin
→ テストのスケジュールまで(結果を待たない)
• 公式のJenkinsプラグイン
https://docs.aws.amazon.com/ja_jp/devicefarm/latest/developergu
ide/continuous-integration-jenkins-plugin.html
• Fastlane プラグイン
https://github.com/hjanuschka/fastlane-plugin-aws_device_farm
• テスト種類、デバイスプール、ファイルのパスの設定
• 結果を待ってくれる
CI/CDとの連携 AWS Device Farm
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Firebase Test Lab
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
Google提供
💰無料枠あり(5 real device / day)
Android Studioとの連携
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso
• アプリ.apk と テスト.apk をアップロード
• デバイスの設定
• Android Test Orchestrator を利用可能
• 言語
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso
• ビデオの録画
• 前後に端末情報
• パフォーマンスの計測
• CPU
• メモリー
• ネットワーク
• ログ
• テストログ
• テスト結果(xml形式)
• Logcat
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso
• ビデオの録画
• 前後に端末情報
• パフォーマンスの計測
• CPU
• メモリー
• ネットワーク
• ログ
• テストログ
• テスト結果(xml形式)
• Logcat
動 画 と グ ラ フ の
シークがリンク
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
モンキーテスト
• Robo Test
• アプリ.apk をアップロード
+特定の挙動をさせるスクリプトを追加可能
• リソース:値 のペアを設定可能
• デバイスの設定
• 言語
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
モンキーテスト
• ビデオの録画
• 前後に端末情報
• パフォーマンスの計測
• CPU
• メモリー
• ネットワーク
• ログ
• テストログ
• テスト結果(xml形式
• Logcat
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
モンキーテスト
• アクティビティマップ
(画面の遷移)
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Android Studio連携
• Google Accountに
ログイン
• プロジェクト等の設定
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Android Studio連携
• IDEから端末の選択と
テスト実行が可能
Firebase Test Lab
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDと連携
// https://firebase.google.com/docs/test-lab/command-line?hl=ja
gcloud firebase test android run 
--type instrumentation 
--app ./path/to/app-debug.apk 
--test ./path/to/app-debug-androidTest.apk 
--device model=Nexus5,version=23 
--device model=sailfish,version=26
Firebase Test Lab
ワ ン コ マ ン ド で
実行可能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Visual Studio App Center
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
Microsoft
💰1ヶ月間の試用期間
ビルドや配信、分析などの一機能として提供
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso
• アプリ.apk と テスト.apk をアップロード
(コマンドラインツール or API)
• デバイスの設定
• 言語
VS App Center
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Espresso VS App Center
• パフォーマンスの計測
• CPU
• メモリー
• ログ
• テストログ
• Logcat
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Appium
• アプリ.apk と テスト.zip をアップロード
(コマンドラインツール or API)
• JUnit(Java)の場合、依存関係などもまとめる
• デバイスの設定
• 言語
VS App Center
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自動テスト:Appium
• パフォーマンスの計測
• CPU
• メモリー
• ログ
• テストログ
• Appium ログ
• Logcat
VS App Center
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// https://docs.microsoft.com/en-us/appcenter/test-cloud/starting-a-test-run
appcenter test run espresso --app "$USER_NAME/$APP_NAME" 
--devices "$USER_NAME/$DEVICE_SET" 
--app-path /path/to/app.apk 
--build-dir /path/to/androidTestDir
VS App Center
ワ ン コ マ ン ド で
実行可能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CD
• App Centerでビルド可能
• ビルド後に実機での起動テストが可能
VS App Center
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
OpenSTF
端末の操作
自動テスト
• Espresso / Appium
モンキーテスト
ダイレクトアクセス
OSS
オンプレミス
File Explorer でファイルのやりとりが楽
Copyright © DeNA Co.,Ltd. All Rights Reserved.
端末の操作
• ドラッグ&ドロップで
インストール可能
• PCキーボード利用可能
• ビデオの録画
• ダイレクトアクセス
で取得可能
• ログ
• ブラウザで取得可能
• ダイレクトアクセス
で保存可能
OpenSTF
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ダイレクトアクセス
• Remote debug
• 表示されているコマンド
をターミナルで実行
• USBに接続しているのと
同様に利用可能
• 自動テスト
• Espresso
• Appium
OpenSTF
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// before test
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XGET http://$OPENSTF_HOST/api/v1/devices 
| jq '.devices | map(select(.ready == true and .using == false)) | .[].serial '
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' 
http://$OPENSTF_HOST/api/v1/user/devices
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect
adb connect $REMOTECONNECT_URL
adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt &
adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 &
// test
./gradlew cAT
// post test
kill $!
adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt
adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4
adb disconnect $REMOTECONNECT_URL
OpenSTF
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// before test
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XGET http://$OPENSTF_HOST/api/v1/devices 
| jq '.devices | map(select(.ready == true and .using == false)) | .[].serial '
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' 
http://$OPENSTF_HOST/api/v1/user/devices
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect
adb connect $REMOTECONNECT_URL
adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt &
adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 &
// test
./gradlew cAT
// after test
kill $!
adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt
adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4
adb disconnect $REMOTECONNECT_URL
OpenSTF
利 用 可 能 な 端 末 の
Remote Debug用URL
を取得
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// before test
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XGET http://$OPENSTF_HOST/api/v1/devices 
| jq '.devices | map(select(.ready == true and .using == false)) | .[].serial '
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' 
http://$OPENSTF_HOST/api/v1/user/devices
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect
adb connect $REMOTECONNECT_URL
adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt &
adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 &
// test
./gradlew cAT
// post test
kill $!
adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt
adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4
adb disconnect $REMOTECONNECT_URL
OpenSTF
端末に接続
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// before test
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XGET http://$OPENSTF_HOST/api/v1/devices 
| jq '.devices | map(select(.ready == true and .using == false)) | .[].serial '
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' 
http://$OPENSTF_HOST/api/v1/user/devices
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect
adb connect $REMOTECONNECT_URL
adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt &
adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 &
// test
./gradlew cAT
// post test
kill $!
adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt
adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4
adb disconnect $REMOTECONNECT_URL
OpenSTF
ログと動画を端末に
記録開始
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// before test
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XGET http://$OPENSTF_HOST/api/v1/devices 
| jq '.devices | map(select(.ready == true and .using == false)) | .[].serial '
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' 
http://$OPENSTF_HOST/api/v1/user/devices
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect
adb connect $REMOTECONNECT_URL
adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt &
adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 &
// test
./gradlew cAT
// post test
kill $!
adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt
adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4
adb disconnect $REMOTECONNECT_URL
OpenSTF
テスト実行
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// before test
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XGET http://$OPENSTF_HOST/api/v1/devices 
| jq '.devices | map(select(.ready == true and .using == false)) | .[].serial '
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' 
http://$OPENSTF_HOST/api/v1/user/devices
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect
adb connect $REMOTECONNECT_URL
adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt &
adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 &
// test
./gradlew cAT
// post test
kill $!
adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt
adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4
adb disconnect $REMOTECONNECT_URL
OpenSTF
録画を終了させる
(最後のbgジョブをkill)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携
// before test
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XGET http://$OPENSTF_HOST/api/v1/devices 
| jq '.devices | map(select(.ready == true and .using == false)) | .[].serial '
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' 
http://$OPENSTF_HOST/api/v1/user/devices
curl -H "Authorization: Bearer $ACCESS_TOKEN" 
-XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect
adb connect $REMOTECONNECT_URL
adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt &
adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 &
// test
./gradlew cAT
// post test
kill $!
adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt
adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4
adb disconnect $REMOTECONNECT_URL
OpenSTF
端末からファイルを
コピーして切断
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI/CDとの連携 OpenSTF
• サードパーティ製Jenkinsプラグイン
Open STF Plugin
• GitHub
https://github.com/jenkinsci/open-stf-plugin
• SlideShare
https://www.slideshare.net/justice_sm/open-stf-
plugin-64154300
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
その他
Appium(ローカルで実行)が可能なもの
• BrowserStack App Automate
https://www.browserstack.com/app-automate
• BitBar Testdroid
https://bitbar.com/testing/
• Sause Labs TestObject
https://testobject.com/
国内のデバイスファーム
• Sonix Scirocco Cloud
http://www.scirocco-cloud.com/
• NTT レゾナント Remote TestKit
https://appkitbox.com/testkit/
Copyright © DeNA Co.,Ltd. All Rights Reserved.
各サービス、ソフトウェアの特徴
AWS
Device Farm
Firebase
Test Lab
Visual Studio
App Center
OpenSTF
端末の操作 ○ ○
Espresso ○ ○ ○※1 ※2
Appium ○ ○※1 ※2
モンキーテスト ○ ◎
ダイレクトアクセス ○💰 ◎
CI/CDとの連携 △ ◎ ◎ ○
その他特徴 細かい設定 IDE統合 CI/CD オンプレミス
※1 ソースコードの変更が必要
※2 ダイレクトアクセスで実行可能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話すること
デバイスファームとは
各サービス、ソフトウェアの特徴
• AWS Device Farm
• Firebase Test Lab
• Visual Studio App Center
• OpenSTF
• その他
デバイスファーム選定のポイント
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファーム選定のポイント
クラウド or オンプレミス
• 導入・運用コスト
• 通信速度
国内クラウド or 海外クラウド
• 端末の種類
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファーム選定のポイント
利用したい端末があるかどうか
• AWS Device Farm
https://aws.amazon.com/jp/device-farm/device-
list/
• Firebase Test Lab
https://firebase.google.com/docs/test-
lab/available-testing-devices?hl=ja
• Visual Studio App Center
https://testcloud.xamarin.com/devices (参考情報)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファーム選定のポイント
テストがある場合
• テスティングフレームワークの対応状況
• ソースコードの改変が必要か
(必要な場合ローカルで動くか)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファーム選定のポイント
CI/CD で利用する場合
• CLI・ツールが用意されているか
(フォアグラウンドで終了するか)
• サードパーティ製のツール
Copyright © DeNA Co.,Ltd. All Rights Reserved.
デバイスファーム選定のポイント
無料枠で試す

More Related Content

What's hot

Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフ
Toshiyuki Hirata
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
Toshiyuki Hirata
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
Toshiyuki Hirata
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
Kazuaki KURIU
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
Toshiyuki Hirata
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
Toshiyuki Hirata
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
Toshiyuki Hirata
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみた
Toshiyuki Hirata
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
Toshiyuki Hirata
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
Shunsuke Maeda
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
Toshiyuki Hirata
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
Toshiyuki Hirata
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
Vishal Banthia
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
Toshiyuki Hirata
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話
司 知花
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
Toshiyuki Hirata
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
gree_tech
 
Androidのテストを効率的にするために考えたこと
Androidのテストを効率的にするために考えたことAndroidのテストを効率的にするために考えたこと
Androidのテストを効率的にするために考えたこと
Ataru Osaka
 

What's hot (20)

Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフ
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法UIテストの実行時間の短縮の方法
UIテストの実行時間の短縮の方法
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみた
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 
Androidのテストを効率的にするために考えたこと
Androidのテストを効率的にするために考えたことAndroidのテストを効率的にするために考えたこと
Androidのテストを効率的にするために考えたこと
 

Similar to DroidKaigi_devicefarm

Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
健一 辰濱
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menusharoid
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage PlatformMasaki Nakagawa
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2Yushi_Takagi
 
クラウド概要 by Engine Yard
クラウド概要 by Engine Yardクラウド概要 by Engine Yard
クラウド概要 by Engine Yard
Yu Kitazume
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
gree_tech
 
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~Daisuke Futatsumori
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト
健一 辰濱
 
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
NTT Resonant Technology Inc.
 
Node-redでプロトタイピング
Node-redでプロトタイピングNode-redでプロトタイピング
Node-redでプロトタイピング
Makoto SAKAI
 
デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方
Device WebAPI Consortium
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
 
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
gree_tech
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
Kohsuke Kawaguchi
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
Kensaku Komatsu
 
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
Yahoo!デベロッパーネットワーク
 

Similar to DroidKaigi_devicefarm (20)

Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介Android 開発, 運用時に使いたいライブラリやサービスの紹介
Android 開発, 運用時に使いたいライブラリやサービスの紹介
 
リモート・スマホ・シェアリング
リモート・スマホ・シェアリングリモート・スマホ・シェアリング
リモート・スマホ・シェアリング
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menu
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
 
クラウド概要 by Engine Yard
クラウド概要 by Engine Yardクラウド概要 by Engine Yard
クラウド概要 by Engine Yard
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
 
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト
 
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
 
Node-redでプロトタイピング
Node-redでプロトタイピングNode-redでプロトタイピング
Node-redでプロトタイピング
 
デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
ネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったことネットワークエンジニアがWeb開発をやってみて思ったこと
ネットワークエンジニアがWeb開発をやってみて思ったこと
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
 
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
 

Recently uploaded

【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 

Recently uploaded (16)

【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 

DroidKaigi_devicefarm

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. DroidKaigi 2018 DAY.02 (Feb 9th, 2018) duck SWETグループ DeNA Co., Ltd Androidで利用できる デ バ イ ス フ ァ ー ム の メリット・デメリット の紹介
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介 前田隼輔 • @duck8823 • 所属 • DeNA SWETグループ テスト基盤チーム
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. Android端末の種類 Google "Android - Android スマートフォン" URL http://www.android.com/intl/ja_jp/phones/
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. 世界はたのしい。開発者は? 実機検証の必要性 • エミュレーターと実機は異なる 増え続ける端末の種類 • OS(メーカーによるカスタマイズ) • 解像度 • 実機の管理場所・方法 国内未発売の端末 端末の管理が面倒
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. そこで デバイスファーム
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームとは • 端末を(物理的に)集中管理 • WebブラウザやAPI、クライアントソフト を介して特定の端末を操作
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームの利用 • 開発マシンに物理的に接続する必要がない • 複数人が利用する場合も貸出管理の必要なし • CI/CDとの連携
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームの種類(提供形態) クラウド(共有) • 他ユーザーと同じ端末を利用 クラウド(専有) • 端末は専有 オンプレミス • サーバーにインストール
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. メリット • 端末の管理コスト減 • 日本未発売の端末利用 デメリット • テスト失敗時の調査し づらさ • 端末設定の制限 • 他ユーザーとの端末の 競合 クラウド(共有)
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. メリット • 端末の管理コスト減 • 日本未発売の端末利用 • 端末は専有 • セキュリティ • テスト前・後処理を 除外できる場合 デメリット • テスト失敗時の調査し づらさ • 端末設定の制限 • 高コスト クラウド(専有)
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. メリット • 端末の細かい設定 • セキュリティ • テスト前・後処理を 除外できる場合 • 通信速度 (内部ネットワーク) デメリット • 導入・運用コスト (サーバーの管理、 端末の劣化 etc.) • 日本にインストールした 場合は海外端末 を利用できない オンプレミス
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームでできること 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス CI/CDとの連携
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームでできること 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス CI/CDとの連携
  • 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. 端末の操作 • ブラウザやクライアント上から端末を操作 • ネットワークの影響を受けやすい • デザインの確認など
  • 17. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームでできること 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス CI/CDとの連携
  • 18. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト • テスティングフレームワークを利用したテスト • リグレッションテスト • サポートするフレームワークは異なる • Espresso and/or Appium(JUnit)はほぼサポート
  • 19. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso • Google製のUIテストツール • 自動同期機能が特徴の一つ • 昨日のセッション (Espressoテストコードの同期処理を究める)も👀 https://speakerdeck.com/sumio/synchronization-capabilities-of-espresso • アプリのapk、テスト用のapk をアップロード
  • 20. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Appium • クライアント/サーバーモデル • Appiumクライアントは各種フレームワークに対応 • JUnit(Java) / RSpec(Ruby) / Python... Appiumサーバー Appiumクライアント in テストスクリプト REST ドライバー
  • 21. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Appium • テストスクリプトの実行場所 • サーバーで実行 • ローカルで実行 デバイスファーム
  • 22. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Appium • テストスクリプトの実行場所 • サーバーで実行 • フレームワークが限定される • アップロードする準備が必要 (テストスクリプトをzip等で固める手順) • ローカルで実行 • フレームワークを問わない • テストコードを変更する必要 (AppiumサーバーのURL + 認証情報)
  • 23. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームでできること 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス CI/CDとの連携
  • 24. Copyright © DeNA Co.,Ltd. All Rights Reserved. モンキーテスト • 利用者がテストを用意しない • アプリをランダムに操作 → クラッシュするとテスト失敗 • 認証情報などを指定できるものもある
  • 25. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームでできること 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス CI/CDとの連携
  • 26. Copyright © DeNA Co.,Ltd. All Rights Reserved. ダイレクトアクセス • ネットワーク経由でADBを実行 (USBで接続してるのと同様に利用できる) • 任意のテスティングフレームワークを実行可能
  • 27. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームでできること 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス CI/CDとの連携
  • 28. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 • コマンドラインで実行できればCI/CDで実行可能 • ジョブ結果 • コマンドがフォアグラウンドで実行される必要 • サードパーティ製のプラグイン
  • 29. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファームでできること 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス CI/CDとの連携 サービス(ソフトウェア)によって異なる
  • 30. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 31. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント 3大クラウドインフラ & OSS
  • 32. Copyright © DeNA Co.,Ltd. All Rights Reserved. 実際に動かして調査 conference-app-2018 https://github.com/DroidKaigi/conference-app-2018 Espresso のテストはそのまま利用 Appium (JUnit) のテストを追加 DroidKaigi 2018 official Android app Copyright 2018 DroidKaigi Licensed under the Apache License, Version 2.0. http://www.apache.org/licenses/LICENSE-2.0 DroidKaigi 2018 Code of Conduct http://www.association.droidkaigi.jp/en/code-of- conduct.html Licensed under a Creative Commons Attribution 3.0 Unported License. https://creativecommons.org/licenses/by/3.0/deed.en_US
  • 33. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 34. Copyright © DeNA Co.,Ltd. All Rights Reserved. AWS Device Farm 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス(プライベートデバイス) AWS 群の一つ 💰最初の 1000 分まで無料・従量課金
  • 35. Copyright © DeNA Co.,Ltd. All Rights Reserved. 端末の操作 • セッション開始後、 インストールが可能 • PCキーボード利用可能 • ビデオの録画 • ログ • Logcat • TCP dump AWS Device Farm
  • 36. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso • アプリ.apk と テスト.apk をアップロード • 細かいデバイスの設定が可能 • 別のファイル、アプリ • ロケーション • 言語 • ネットワークプロファイル( 速度etc. ) AWS Device Farm
  • 37. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso • ビデオの録画 • パフォーマンスの計測 • CPU • メモリー • スレッド数 • ログ • テストログ • Logcat • TCP dump AWS Device Farm
  • 38. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Appium • アプリ.apk と テスト.zip をアップロード • JUnit(Java)の場合、依存関係などもまとめる • 細かいデバイスの設定が可能 • 別のファイル、アプリ • ロケーション • 言語 • ネットワークプロファイル( 速度etc. ) AWS Device Farm
  • 39. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Appium • ビデオの録画 • パフォーマンスの計測 • CPU • メモリー • スレッド数 • ログ • Appium Java Output • Appium Java XML • Appium Server • Logcat • TCP dump AWS Device Farm
  • 40. Copyright © DeNA Co.,Ltd. All Rights Reserved. モンキーテスト AWS Device Farm • Built-in: Fuzz / Built-in: Explorer • アプリ.apk をアップロード • 細かいデバイスの設定が可能 • 別のファイル、アプリ • ロケーション • 言語 • ネットワークプロファイル( 速度etc. )
  • 41. Copyright © DeNA Co.,Ltd. All Rights Reserved. モンキーテスト • Built-in: Fuzz • ログインなし • Built-in: Explorer • ログインあり • ビデオの録画 • ログ • イベントログ • Logcat • TCP dump AWS Device Farm Fuzz Explorer
  • 42. Copyright © DeNA Co.,Ltd. All Rights Reserved. ダイレクトアクセス AWS Device Farm • プラベートデバイスを契約している必要あり • ADBを利用してアクセス可能 https://docs.aws.amazon.com/ja_jp/devicefarm/latest/ developerguide/direct-device-access.html
  • 43. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 AWS Device Farm aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name app-debug.apk --type ANDROID_APP curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD} aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name appium-java-from-cli.zip --type APPIUM_JAVA_JUNIT_TEST_PACKAGE curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}” aws devicefarm schedule-run --project-arn "${PROJECT_ARN}" --device-pool-arn "${DEVICE_POOL_ARN}" --test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” --app-arn "${APP_ARN}"
  • 44. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 AWS Device Farm aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name app-debug.apk --type ANDROID_APP curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD} aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name appium-java-from-cli.zip --type APPIUM_JAVA_JUNIT_TEST_PACKAGE curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}” aws devicefarm schedule-run --project-arn "${PROJECT_ARN}" --device-pool-arn "${DEVICE_POOL_ARN}" --test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” --app-arn "${APP_ARN}" 1. アップロードする ためのURLを発行 2. PUT
  • 45. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 AWS Device Farm aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name app-debug.apk --type ANDROID_APP curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD} aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name appium-java-from-cli.zip --type APPIUM_JAVA_JUNIT_TEST_PACKAGE curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}” aws devicefarm schedule-run --project-arn "${PROJECT_ARN}" --device-pool-arn "${DEVICE_POOL_ARN}" --test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” --app-arn "${APP_ARN}" 自動テストの場合は テストスクリプトも アップロード
  • 46. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 AWS Device Farm aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name app-debug.apk --type ANDROID_APP curl -T app/build/outputs/apk/debug/app-debug.apk ${URL_FOR_APP_UPLOAD} aws devicefarm create-upload --project-arn "${PROJECT_ARN}" --name appium-java-from-cli.zip --type APPIUM_JAVA_JUNIT_TEST_PACKAGE curl -T appium/target/zip-with-dependencies.zip "${URL_FOR_APPIUM_TEST_UPLOAD}” aws devicefarm schedule-run --project-arn "${PROJECT_ARN}" --device-pool-arn "${DEVICE_POOL_ARN}" --test "type=APPIUM_JAVA_JUNIT,testPackageArn=${APPIUM_TEST_ARN}” --app-arn "${APP_ARN}" ジョブをスケジュール (結果を待たない)
  • 47. Copyright © DeNA Co.,Ltd. All Rights Reserved. • 公式のGradleプラグイン https://github.com/awslabs/aws-device-farm-gradle-plugin → テストのスケジュールまで(結果を待たない) • 公式のJenkinsプラグイン https://docs.aws.amazon.com/ja_jp/devicefarm/latest/developergu ide/continuous-integration-jenkins-plugin.html • Fastlane プラグイン https://github.com/hjanuschka/fastlane-plugin-aws_device_farm • テスト種類、デバイスプール、ファイルのパスの設定 • 結果を待ってくれる CI/CDとの連携 AWS Device Farm
  • 48. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 49. Copyright © DeNA Co.,Ltd. All Rights Reserved. Firebase Test Lab 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス Google提供 💰無料枠あり(5 real device / day) Android Studioとの連携
  • 50. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso • アプリ.apk と テスト.apk をアップロード • デバイスの設定 • Android Test Orchestrator を利用可能 • 言語 Firebase Test Lab
  • 51. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso • ビデオの録画 • 前後に端末情報 • パフォーマンスの計測 • CPU • メモリー • ネットワーク • ログ • テストログ • テスト結果(xml形式) • Logcat Firebase Test Lab
  • 52. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso • ビデオの録画 • 前後に端末情報 • パフォーマンスの計測 • CPU • メモリー • ネットワーク • ログ • テストログ • テスト結果(xml形式) • Logcat 動 画 と グ ラ フ の シークがリンク Firebase Test Lab
  • 53. Copyright © DeNA Co.,Ltd. All Rights Reserved. モンキーテスト • Robo Test • アプリ.apk をアップロード +特定の挙動をさせるスクリプトを追加可能 • リソース:値 のペアを設定可能 • デバイスの設定 • 言語 Firebase Test Lab
  • 54. Copyright © DeNA Co.,Ltd. All Rights Reserved. モンキーテスト • ビデオの録画 • 前後に端末情報 • パフォーマンスの計測 • CPU • メモリー • ネットワーク • ログ • テストログ • テスト結果(xml形式 • Logcat Firebase Test Lab
  • 55. Copyright © DeNA Co.,Ltd. All Rights Reserved. モンキーテスト • アクティビティマップ (画面の遷移) Firebase Test Lab
  • 56. Copyright © DeNA Co.,Ltd. All Rights Reserved. Android Studio連携 • Google Accountに ログイン • プロジェクト等の設定 Firebase Test Lab
  • 57. Copyright © DeNA Co.,Ltd. All Rights Reserved. Android Studio連携 • IDEから端末の選択と テスト実行が可能 Firebase Test Lab
  • 58. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDと連携 // https://firebase.google.com/docs/test-lab/command-line?hl=ja gcloud firebase test android run --type instrumentation --app ./path/to/app-debug.apk --test ./path/to/app-debug-androidTest.apk --device model=Nexus5,version=23 --device model=sailfish,version=26 Firebase Test Lab ワ ン コ マ ン ド で 実行可能
  • 59. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 60. Copyright © DeNA Co.,Ltd. All Rights Reserved. Visual Studio App Center 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス Microsoft 💰1ヶ月間の試用期間 ビルドや配信、分析などの一機能として提供
  • 61. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso • アプリ.apk と テスト.apk をアップロード (コマンドラインツール or API) • デバイスの設定 • 言語 VS App Center
  • 62. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Espresso VS App Center • パフォーマンスの計測 • CPU • メモリー • ログ • テストログ • Logcat
  • 63. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Appium • アプリ.apk と テスト.zip をアップロード (コマンドラインツール or API) • JUnit(Java)の場合、依存関係などもまとめる • デバイスの設定 • 言語 VS App Center
  • 64. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自動テスト:Appium • パフォーマンスの計測 • CPU • メモリー • ログ • テストログ • Appium ログ • Logcat VS App Center
  • 65. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // https://docs.microsoft.com/en-us/appcenter/test-cloud/starting-a-test-run appcenter test run espresso --app "$USER_NAME/$APP_NAME" --devices "$USER_NAME/$DEVICE_SET" --app-path /path/to/app.apk --build-dir /path/to/androidTestDir VS App Center ワ ン コ マ ン ド で 実行可能
  • 66. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CD • App Centerでビルド可能 • ビルド後に実機での起動テストが可能 VS App Center
  • 67. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 68. Copyright © DeNA Co.,Ltd. All Rights Reserved. OpenSTF 端末の操作 自動テスト • Espresso / Appium モンキーテスト ダイレクトアクセス OSS オンプレミス File Explorer でファイルのやりとりが楽
  • 69. Copyright © DeNA Co.,Ltd. All Rights Reserved. 端末の操作 • ドラッグ&ドロップで インストール可能 • PCキーボード利用可能 • ビデオの録画 • ダイレクトアクセス で取得可能 • ログ • ブラウザで取得可能 • ダイレクトアクセス で保存可能 OpenSTF
  • 70. Copyright © DeNA Co.,Ltd. All Rights Reserved. ダイレクトアクセス • Remote debug • 表示されているコマンド をターミナルで実行 • USBに接続しているのと 同様に利用可能 • 自動テスト • Espresso • Appium OpenSTF
  • 71. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // before test curl -H "Authorization: Bearer $ACCESS_TOKEN" -XGET http://$OPENSTF_HOST/api/v1/devices | jq '.devices | map(select(.ready == true and .using == false)) | .[].serial ' curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' http://$OPENSTF_HOST/api/v1/user/devices curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect adb connect $REMOTECONNECT_URL adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt & adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 & // test ./gradlew cAT // post test kill $! adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4 adb disconnect $REMOTECONNECT_URL OpenSTF
  • 72. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // before test curl -H "Authorization: Bearer $ACCESS_TOKEN" -XGET http://$OPENSTF_HOST/api/v1/devices | jq '.devices | map(select(.ready == true and .using == false)) | .[].serial ' curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' http://$OPENSTF_HOST/api/v1/user/devices curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect adb connect $REMOTECONNECT_URL adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt & adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 & // test ./gradlew cAT // after test kill $! adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4 adb disconnect $REMOTECONNECT_URL OpenSTF 利 用 可 能 な 端 末 の Remote Debug用URL を取得
  • 73. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // before test curl -H "Authorization: Bearer $ACCESS_TOKEN" -XGET http://$OPENSTF_HOST/api/v1/devices | jq '.devices | map(select(.ready == true and .using == false)) | .[].serial ' curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' http://$OPENSTF_HOST/api/v1/user/devices curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect adb connect $REMOTECONNECT_URL adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt & adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 & // test ./gradlew cAT // post test kill $! adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4 adb disconnect $REMOTECONNECT_URL OpenSTF 端末に接続
  • 74. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // before test curl -H "Authorization: Bearer $ACCESS_TOKEN" -XGET http://$OPENSTF_HOST/api/v1/devices | jq '.devices | map(select(.ready == true and .using == false)) | .[].serial ' curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' http://$OPENSTF_HOST/api/v1/user/devices curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect adb connect $REMOTECONNECT_URL adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt & adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 & // test ./gradlew cAT // post test kill $! adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4 adb disconnect $REMOTECONNECT_URL OpenSTF ログと動画を端末に 記録開始
  • 75. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // before test curl -H "Authorization: Bearer $ACCESS_TOKEN" -XGET http://$OPENSTF_HOST/api/v1/devices | jq '.devices | map(select(.ready == true and .using == false)) | .[].serial ' curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' http://$OPENSTF_HOST/api/v1/user/devices curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect adb connect $REMOTECONNECT_URL adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt & adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 & // test ./gradlew cAT // post test kill $! adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4 adb disconnect $REMOTECONNECT_URL OpenSTF テスト実行
  • 76. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // before test curl -H "Authorization: Bearer $ACCESS_TOKEN" -XGET http://$OPENSTF_HOST/api/v1/devices | jq '.devices | map(select(.ready == true and .using == false)) | .[].serial ' curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' http://$OPENSTF_HOST/api/v1/user/devices curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect adb connect $REMOTECONNECT_URL adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt & adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 & // test ./gradlew cAT // post test kill $! adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4 adb disconnect $REMOTECONNECT_URL OpenSTF 録画を終了させる (最後のbgジョブをkill)
  • 77. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 // before test curl -H "Authorization: Bearer $ACCESS_TOKEN" -XGET http://$OPENSTF_HOST/api/v1/devices | jq '.devices | map(select(.ready == true and .using == false)) | .[].serial ' curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST -H 'Content-Type: application/json' -d '{"serial":"$SERIAL"}' http://$OPENSTF_HOST/api/v1/user/devices curl -H "Authorization: Bearer $ACCESS_TOKEN" -XPOST http://$OPENSTF_HOST/api/v1/user/devices/$SERIAL/remoteConnect adb connect $REMOTECONNECT_URL adb -s '$REMOTECONNECT_URL' logcat -f /path/to/logcat.txt & adb -s '$REMOTECONNECT_URL' shell screenrecord /path/to/video.mp4 & // test ./gradlew cAT // post test kill $! adb -s '$REMOTECONNECT_URL' pull /path/to/logcat.txt ./logcat.txt adb -s '$REMOTECONNECT_URL' pull /path/to/video.mp4 ./video.mp4 adb disconnect $REMOTECONNECT_URL OpenSTF 端末からファイルを コピーして切断
  • 78. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI/CDとの連携 OpenSTF • サードパーティ製Jenkinsプラグイン Open STF Plugin • GitHub https://github.com/jenkinsci/open-stf-plugin • SlideShare https://www.slideshare.net/justice_sm/open-stf- plugin-64154300
  • 79. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 80. Copyright © DeNA Co.,Ltd. All Rights Reserved. その他 Appium(ローカルで実行)が可能なもの • BrowserStack App Automate https://www.browserstack.com/app-automate • BitBar Testdroid https://bitbar.com/testing/ • Sause Labs TestObject https://testobject.com/ 国内のデバイスファーム • Sonix Scirocco Cloud http://www.scirocco-cloud.com/ • NTT レゾナント Remote TestKit https://appkitbox.com/testkit/
  • 81. Copyright © DeNA Co.,Ltd. All Rights Reserved. 各サービス、ソフトウェアの特徴 AWS Device Farm Firebase Test Lab Visual Studio App Center OpenSTF 端末の操作 ○ ○ Espresso ○ ○ ○※1 ※2 Appium ○ ○※1 ※2 モンキーテスト ○ ◎ ダイレクトアクセス ○💰 ◎ CI/CDとの連携 △ ◎ ◎ ○ その他特徴 細かい設定 IDE統合 CI/CD オンプレミス ※1 ソースコードの変更が必要 ※2 ダイレクトアクセスで実行可能
  • 82. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日お話すること デバイスファームとは 各サービス、ソフトウェアの特徴 • AWS Device Farm • Firebase Test Lab • Visual Studio App Center • OpenSTF • その他 デバイスファーム選定のポイント
  • 83. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファーム選定のポイント クラウド or オンプレミス • 導入・運用コスト • 通信速度 国内クラウド or 海外クラウド • 端末の種類
  • 84. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファーム選定のポイント 利用したい端末があるかどうか • AWS Device Farm https://aws.amazon.com/jp/device-farm/device- list/ • Firebase Test Lab https://firebase.google.com/docs/test- lab/available-testing-devices?hl=ja • Visual Studio App Center https://testcloud.xamarin.com/devices (参考情報)
  • 85. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファーム選定のポイント テストがある場合 • テスティングフレームワークの対応状況 • ソースコードの改変が必要か (必要な場合ローカルで動くか)
  • 86. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファーム選定のポイント CI/CD で利用する場合 • CLI・ツールが用意されているか (フォアグラウンドで終了するか) • サードパーティ製のツール
  • 87. Copyright © DeNA Co.,Ltd. All Rights Reserved. デバイスファーム選定のポイント 無料枠で試す