Suche senden
Hochladen
Sansan における Android アプリ自動テスト導入事例
•
Als PPTX, PDF herunterladen
•
2 gefällt mir
•
5,214 views
健一 辰濱
Folgen
2016/03/23 Android Testing Bootcamp #1 発表資料 http://connpass.com/event/26911/
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 82
Jetzt herunterladen
Empfohlen
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
Guide To AGPL
Guide To AGPL
Mikiya Okuno
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務
Yutaka Kachi
SSII2019TS: プロジェクタ・カメラシステムが変わる! ~時間同期の制御で広がる応用~
SSII2019TS: プロジェクタ・カメラシステムが変わる! ~時間同期の制御で広がる応用~
SSII
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DeNA
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
EtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみた
ミソジ
Empfohlen
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
Guide To AGPL
Guide To AGPL
Mikiya Okuno
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務
Yutaka Kachi
SSII2019TS: プロジェクタ・カメラシステムが変わる! ~時間同期の制御で広がる応用~
SSII2019TS: プロジェクタ・カメラシステムが変わる! ~時間同期の制御で広がる応用~
SSII
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DeNA
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
KLab Inc. / Tech
EtherCATやPROFINETを OPC UAで接続してみた
EtherCATやPROFINETを OPC UAで接続してみた
ミソジ
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
Hideki Takase
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
Nozomi Ito
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
Mori Ken
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
Spekではじめるユニットテスト
Spekではじめるユニットテスト
Recruit Lifestyle Co., Ltd.
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
Ryohei Ueda
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
Keizo Tatsumi
Ncnn a universal and efficient neural network inference with vulkan
Ncnn a universal and efficient neural network inference with vulkan
kcnguo
Appium 2.0 ではじめるモバイルアプリテスト
Appium 2.0 ではじめるモバイルアプリテスト
Masayuki Wakizaka
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
ARとUnity-Robotics-Hubの連携
ARとUnity-Robotics-Hubの連携
UnityTechnologiesJapan002
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Takuya Azumi
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
WindowsではじめるROSプログラミング
WindowsではじめるROSプログラミング
Takayuki Goto
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Naruhiko Ogasawara
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化
健一 辰濱
Robotium を使った UI テストとレイアウト確認の効率化
Robotium を使った UI テストとレイアウト確認の効率化
健一 辰濱
Weitere ähnliche Inhalte
Was ist angesagt?
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
Hideki Takase
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
Nozomi Ito
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
Mori Ken
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Reimi Kuramochi Chiba
Spekではじめるユニットテスト
Spekではじめるユニットテスト
Recruit Lifestyle Co., Ltd.
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
Ryohei Ueda
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
Keizo Tatsumi
Ncnn a universal and efficient neural network inference with vulkan
Ncnn a universal and efficient neural network inference with vulkan
kcnguo
Appium 2.0 ではじめるモバイルアプリテスト
Appium 2.0 ではじめるモバイルアプリテスト
Masayuki Wakizaka
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
ARとUnity-Robotics-Hubの連携
ARとUnity-Robotics-Hubの連携
UnityTechnologiesJapan002
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Takuya Azumi
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
WindowsではじめるROSプログラミング
WindowsではじめるROSプログラミング
Takayuki Goto
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Naruhiko Ogasawara
Was ist angesagt?
(20)
QoS for ROS 2 Dashing/Eloquent
QoS for ROS 2 Dashing/Eloquent
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
基礎からわかる、機械学習のソフトウェアテストのへの適用例 - 「Bag Of Words」を使った「類似チケットの検索」
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
Spekではじめるユニットテスト
Spekではじめるユニットテスト
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
組み合わせテストの設計(PictMaster勉強会) 2008年7月17日
Ncnn a universal and efficient neural network inference with vulkan
Ncnn a universal and efficient neural network inference with vulkan
Appium 2.0 ではじめるモバイルアプリテスト
Appium 2.0 ではじめるモバイルアプリテスト
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
ARとUnity-Robotics-Hubの連携
ARとUnity-Robotics-Hubの連携
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
Pythonによる黒魔術入門
Pythonによる黒魔術入門
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
WindowsではじめるROSプログラミング
WindowsではじめるROSプログラミング
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Andere mochten auch
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化
健一 辰濱
Robotium を使った UI テストとレイアウト確認の効率化
Robotium を使った UI テストとレイアウト確認の効率化
健一 辰濱
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
Takao Sumitomo
Unity testtool
Unity testtool
大介 束田
テストの種類とBDD #33testing
テストの種類とBDD #33testing
Koji Hasegawa
User Scenario based UI testing with KIF
User Scenario based UI testing with KIF
Yusuke Kita
AWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみた
Yasuhiro Tajiri
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。
健一 辰濱
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests
Kazuaki Matsuo
ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化
Nozomi Ito
スマホUXラボ「ユーザテストLive! 見学会」
スマホUXラボ「ユーザテストLive! 見学会」
Tarumoto Tetsuya
Wantedlyのテスト事情
Wantedlyのテスト事情
Takao Sumitomo
Rubyを使ったスマホアプリのUIテスト
Rubyを使ったスマホアプリのUIテスト
健一 辰濱
全米一住みたい街ポートランドに学ぶ、創造・快適・環境先進都市の作り方
全米一住みたい街ポートランドに学ぶ、創造・快適・環境先進都市の作り方
Takeshi Kakeda
AWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみた
Tatsuya Yamamoto
UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発
修平 大野
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
Kazuhito Miura
Robotium を使った UI テスト
Robotium を使った UI テスト
健一 辰濱
ごっとふぁーざーふぁしりてーしょんず
ごっとふぁーざーふぁしりてーしょんず
Kenji Tanaka
Andere mochten auch
(20)
Appium を使って iOS / Android の UI テストを共通化
Appium を使って iOS / Android の UI テストを共通化
Robotium を使った UI テストとレイアウト確認の効率化
Robotium を使った UI テストとレイアウト確認の効率化
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
Unity testtool
Unity testtool
テストの種類とBDD #33testing
テストの種類とBDD #33testing
User Scenario based UI testing with KIF
User Scenario based UI testing with KIF
AWS Device FarmでAndroidのUIテストをやってみた
AWS Device FarmでAndroidのUIテストをやってみた
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。
20170302 tryswift tasting_tests
20170302 tryswift tasting_tests
ディープラーニングとAppiumでモバイルテスト自動化
ディープラーニングとAppiumでモバイルテスト自動化
スマホUXラボ「ユーザテストLive! 見学会」
スマホUXラボ「ユーザテストLive! 見学会」
Wantedlyのテスト事情
Wantedlyのテスト事情
Rubyを使ったスマホアプリのUIテスト
Rubyを使ったスマホアプリのUIテスト
全米一住みたい街ポートランドに学ぶ、創造・快適・環境先進都市の作り方
全米一住みたい街ポートランドに学ぶ、創造・快適・環境先進都市の作り方
AWS Device Farm を Jenkins CI から叩いてみた
AWS Device Farm を Jenkins CI から叩いてみた
UNICORNで爆速アプリ開発
UNICORNで爆速アプリ開発
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
Robotium を使った UI テスト
Robotium を使った UI テスト
ごっとふぁーざーふぁしりてーしょんず
ごっとふぁーざーふぁしりてーしょんず
Ähnlich wie Sansan における Android アプリ自動テスト導入事例
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
Rakuten Group, Inc.
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro Yoshioka
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
Developers Summit
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
Ryo Mitoma
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
Build insider testingwithvs
Build insider testingwithvs
Tomoyuki Iwade
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
Tatsuya Ishikawa
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
Yusuke Ando
研究紹介スライド
研究紹介スライド
Norihito Kitagawa
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
CruiseControl.NET設置
CruiseControl.NET設置
Kuniaki Igarashi
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
Yuta Matsumura
さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]
Yukihiko SAWANOBORI
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
mirer
Ähnlich wie Sansan における Android アプリ自動テスト導入事例
(20)
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
デブサミ関西2013【A4】コード品質は曖昧なままか(安竹由起夫氏)
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Build insider testingwithvs
Build insider testingwithvs
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
DevOpsを実現する為のChef実践テクニック Chef12対応版
DevOpsを実現する為のChef実践テクニック Chef12対応版
研究紹介スライド
研究紹介スライド
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
CruiseControl.NET設置
CruiseControl.NET設置
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
Mehr von 健一 辰濱
地方創生ワカモノ会合
地方創生ワカモノ会合
健一 辰濱
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
健一 辰濱
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
健一 辰濱
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
健一 辰濱
Android 開発の昔と今
Android 開発の昔と今
健一 辰濱
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
健一 辰濱
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
健一 辰濱
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
健一 辰濱
Firebase Summit 2019 Recap
Firebase Summit 2019 Recap
健一 辰濱
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
健一 辰濱
Firebase hands on in Matsuyama
Firebase hands on in Matsuyama
健一 辰濱
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
健一 辰濱
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
健一 辰濱
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
健一 辰濱
企業スポンサー
企業スポンサー
健一 辰濱
参加したセッションのピックアップ
参加したセッションのピックアップ
健一 辰濱
CFP(Call For Paper)を出す話
CFP(Call For Paper)を出す話
健一 辰濱
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
健一 辰濱
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
健一 辰濱
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
健一 辰濱
Mehr von 健一 辰濱
(20)
地方創生ワカモノ会合
地方創生ワカモノ会合
Google Analytics のデータ分析ハンズオン
Google Analytics のデータ分析ハンズオン
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
知っておきたいFirebase の色んな上限について
知っておきたいFirebase の色んな上限について
Android 開発の昔と今
Android 開発の昔と今
Firebase Extensions はじめの一歩
Firebase Extensions はじめの一歩
Firebase & BigQuery で Android アプリの成⻑を支える
Firebase & BigQuery で Android アプリの成⻑を支える
GDG DevFest Tokyo 2019 Day2 Special Hands-on
GDG DevFest Tokyo 2019 Day2 Special Hands-on
Firebase Summit 2019 Recap
Firebase Summit 2019 Recap
Cloud Firestore を使って、Polling をやめたい話
Cloud Firestore を使って、Polling をやめたい話
Firebase hands on in Matsuyama
Firebase hands on in Matsuyama
インドのインターネット環境との戦い方
インドのインターネット環境との戦い方
インドの低速なネットワーク環境の攻略法
インドの低速なネットワーク環境の攻略法
DroidKaigi 2018 参加報告会 Closing
DroidKaigi 2018 参加報告会 Closing
企業スポンサー
企業スポンサー
参加したセッションのピックアップ
参加したセッションのピックアップ
CFP(Call For Paper)を出す話
CFP(Call For Paper)を出す話
DroidKaigi 2018 参加報告会
DroidKaigi 2018 参加報告会
DroidKaigi アプリの内部を見る
DroidKaigi アプリの内部を見る
Java で書かれた Android アプリに Kotlin を適用させていく
Java で書かれた Android アプリに Kotlin を適用させていく
Sansan における Android アプリ自動テスト導入事例
1.
Robotium を使った Android アプリ自動テスト 導入事例 2016/03/23
Android Testing Bootcamp#1 Sansan 株式会社 辰濱健一
2.
Robotium を使った Android アプリ自動テスト 導入事例 2016/03/23
Android Testing Bootcamp#1 Sansan 株式会社 辰濱健一
3.
Sansan における Android アプリ自動テスト 導入事例 2016/03/23
Android Testing Bootcamp#1 Sansan 株式会社 辰濱健一
4.
Sansan における Android アプリ自動テスト 導入事例 2016/03/23
Android Testing Bootcamp#1 Sansan 株式会社 辰濱健一 DroidKaigi RejectConf の完コピの予定でしたが、 内容変更しました!!
5.
Sansan における Android アプリ自動テスト 導入事例 2016/03/23
Android Testing Bootcamp#1 Sansan 株式会社 辰濱健一 実は、既に自分の中では Robotium オワコン…
6.
> Agenda 5 • 自己紹介 •
なぜ Robotium? • テスト記述のポリシー • 実行環境 • デモ • 自動テストを導入してみて • Appium で iOS とコードの共通化 • UI テストで他にもできそうなこと • これから
7.
自己紹介 6
8.
> 自己紹介 7 • 辰濱健一
@tatsuhama50 • https://www.facebook.com/kenichi.tatsuhama • http://www.slideshare.net/kenichitatsuhama • 徳島県生まれ、徳島県勤務 • Tokushima.app というスマホアプリ勉強会を主催 • 趣味は音楽&旅行
9.
> 自己紹介 8 • 業務経歴 •
1社目@徳島市 • Java, C++, MFC • UWSC を使った Windows アプリの UI 自動テストの導入 • 性能改善チームにて、自動性能計測ツールを作成 • 2社目@徳島市 • iOS(Objective-C), Android(Java), Windows(C#)の スマホ&タブレット向けアプリ開発 • 機能担当制、iOS で作った機能は作った人が他 OS に移植 • 3社目@徳島県神山町 • スマホアプリの自動テスト • リモートワーク 開発& 品質担保と自動テスト モバイル開発 モバイル開発での 品質担保と 自動テスト
10.
> Sansan株式会社 9 モバイルアプリエンジニアは、2つの事業部で8人のメンバー ・Sansan …
4名(iOS x2 / Android x2) ・Eight … 4名(iOS x2 / Android x2)
11.
- もう紙の名刺はいらない! - 「超音波」等で周囲のEight ユーザーを検索 -
複数のユーザー間でも名刺交 換ができる - まずはアプリで+ボタンを! 10 > Eightの新機能「オンライン名刺交換」
12.
11 > それでは Eightのアプリを起動して、 「+」→「名刺交換」 →「近くのユーザと名刺交換」 画面をタッチ で名刺交換してみましょう! QRコードでもできるよ。
13.
> Sansan神山ラボ 12 • 築70年の木造古民家(3棟) •
略歴 • 2010年設置 • 〜2013/11:合宿所 • 2013/11〜:常駐メンバーのいる開発拠点に • 家具家電、畑付き、風呂トイレセパレート • 家賃:数万円 / 月 • インターネット接続:光回線 • 最寄り駅まで徒歩15分 • 改装OK物件
14.
> Sansan神山ラボ 13
15.
本題に入る前に… 14
16.
> 本題に入る前に… 15 • UI
テストは、ユニットテストに比べて、ものすごく時 間がかかります。 • コミット毎の UI テスト実施は現実的じゃないです • デイリーやリリースごとがオススメ • 本セッションは、UI テストのノウハウや弊社における 導入事例を紹介します • 導入する費用対効果は、プロダクトによってまちまち だと思うので各自で判断下さい
17.
なぜ Robotium? 16
18.
> スマホアプリの自動テストライブラリ 17 - Android
専用 - Robotium - monkeyrunner - Espresso - UI Automater など… - iOS 専用 - KIF - Kiwi - など… - ハイブリッド - Appium - Calabash - MonkeyTALK - など…
19.
> Robotium にした理由 18 •
Android 実装と同じ Java 言語で記述 • アプリケーション内部のオブジェクトを参照できる • UI に見えない内部の値、Activity の getter を呼べる SharedPreference の値 • DB にもアクセスできるので期待値や操作を動的生成できる → サーバ DB 状態の変更にも強い • ただし、リリースビルドでは使えない • 導入当時(2014/05)、最終局面で Espresso とどっちにす るか悩んだ。 •
20.
> Robotium にした理由 19 •
Android 実装と同じ Java 言語で記述 • アプリケーション内部のオブジェクトを参照できる • UI に見えない内部の値、Activity の getter を呼べる SharedPreference の値 • DB にもアクセスできるので期待値や操作を動的生成できる → サーバ DB 状態の変更にも強い • ただし、リリースビルドでは使えない • 導入当時(2014/05)、最終局面で Espresso とどっちにす るか悩んだ。 • 今となっては、Espresso にしておけば良かったと思う…。
21.
> Robotium にした理由 20 •
Android 実装と同じ Java 言語で記述 • アプリケーション内部のオブジェクトを参照できる • UI に見えない内部の値、Activity の getter を呼べる SharedPreference の値 • DB にもアクセスできるので期待値や操作を動的生成できる → サーバ DB 状態の変更にも強い • ただし、リリースビルドでは使えない • 導入当時(2014/05)、最終局面で Espresso とどっちにす るか悩んだ。 • 今となっては、Espresso にしておけば良かったと思う…。 • 判断当時メンテが最新の方を採った。Espresso の方が便利!
22.
テスト記述のポリシー 21
23.
> テスト記述のポリシー 22 • ライブラリとテストコードの結合度を下げる •
まずは、浅く・広く記述する • あきらめも大事 • 待ち方のコツ • どの環境でも動くように
24.
テスト記述のポリシー ライブラリとテストコードの結合度を下げる 23
25.
> ライブラリとテストコードの結合度を下げる 24 • 目的 •
テストコードの可読性を上げる • ライブラリに依存しないテストコードにする • ライブラリにない機能追加ができる • 実行ログの記録 • エラー時にスクリーンショットを残すようにする • 理由 • ライブラリの API 変更, ライブラリの置き換えでテスト コードの修正が伴わない • 失敗時の原因調査がしやすい
26.
> Robotium Getting
Started は密結合 25 • https://github.com/RobotiumTech/robotium/wiki/Getting-Started • あくまでも API の使い方と思っておきましょう。 • 【対応】テストの基底クラスなどを作って clickOnText(String)を作り、 テストコードではそちらを呼び出す テストコードと ライブラリが密結合
27.
> ライブラリの依存性排除 26 • ライブラリの隠蔽 Robotium
版
28.
> ライブラリを置き換えるとしても… 27 • テストコードを修正することなく、対応可能 Robotium
版 Espresso 版 ※Robotium と Espresso は同じ InstrumentationTest なので、共存可能!!
29.
テスト記述のポリシー まずは、広く・浅く記述する 28
30.
> まずは、広く・浅く記述する 29 • 背景 •
スマホアプリの UI や機能は比較的すぐ見直しが入る • 使えないと致命的な機能と、そうでない機能がある • 対策 • まずは、費用対効果の高い、主要機能のワンパスを通す • ログイン → 検索・閲覧・編集 → ログアウト あたり • ログイン時のバリデートチェックよりも、ログインできる かの方が重要 • 慣れてきたら、各画面の詳細テストへ
31.
テスト記述のポリシー あきらめも大事 30
32.
> あきらめも大事 31 • 別アプリと連携するものなどは手動で確認へ •
例) • カメラのピントが合っていること • 住所文字列をタップすると地図アプリが起動し、その場所 にピンが立っていること • URL をタップするとブラウザが起動し、ページが正しく表 示されること • 場合によってはアプリ選択画面が出る • 起動後の状態判定は目視の方が容易 • こういう所の自動化を頑張るのは費用対効果的に微妙…
33.
> あきらめも大事 32 • 例)URL
をタップするとブラウザが開く アプリ ブラウザ
34.
> あきらめも大事(だけど、知見共有) 33 • 例)URL
をタップするとブラウザが開く • Robotium や Espresso は UI 操作により別アプリが開 くと、その後どうしようもなくなる… • 理由 • アプリケーションの操作であって、端末の操作ではない • 対応策 • UI Automaterと 併用する • ※但し、minSdkVersion に注意 • このあたりは、TOYAMA Sumio 氏の発表に委ねます • Espresso の Intent チェックを使う
35.
> あきらめも大事:メールチェック編 34 • 別アプリ…とはいえ、送られてきたメールをチェックする なら、MailCatcher
& MailCatcher API で実現可能 • MailCatcher • SMTPサーバを経由したメールをブラウザから 確認できる。開発中の誤送信防止にも役立つ。 • http://mailcatcher.me/ • MailCatcher API • /messages • /messages/:id.json • /messages/:id.html • /messages/:id.plain など
36.
> あきらめも大事:メールチェック編 35 • Retrofit
& RxAndroid を使えば容易 • 指定したタイトルのメールが届いているか? • 特定のメールを開いて本文の URL をタップ (メール本文から URL を抽出して、OkHttpClient など で post する) ※Message モデルのプロパティは 一部しか宣言していない
37.
テスト記述のポリシー 待ち方のコツ 36
38.
> 待ち方のコツ 37 • テストコードでは
SLEEP 関数は使わない • 自作関数やライブラリのラッパー関数内で使うのはアリ • 端末、実行環境、サーバの状態によって待ち時間は違 う! • どうするか? → wait* 関数を使う • ライブラリ関数の例 • waitForActivity • waitForFragmentByTag • waitForCondition
39.
テスト記述のポリシー どの環境でも動くように 38
40.
> どの環境でも動くように 39 • 操作手順や期待値の動的生成 •
エミュレータ判定 • 多言語対応
41.
> どの環境でも動くように 40 • 操作手順や期待値の動的生成 •
エミュレータ判定 • 多言語対応
42.
> 操作手順や期待値の動的生成 41 • 弊社の開発事情によるところかも知れないですが… 「開発用」「ステージング」「本番」でデータセット が異なります。 •
検索結果などが保証されるためにも • ローカル DB を参照して操作手順や期待値を動的生成す る • ログイン後にテストコードでデータを作る操作を行う • このデータに対し、検索・編集・削除などのテストを行う • ノイズにならないためにログアウト前に作ったデータを 削除する操作を行う • これにより、環境非依存なテストケースになります
43.
> 操作手順や期待値の動的生成 42 実際のテストコード myName :
”山田賢治” users : {Uesr(阿部拓真), User(浅野緋美) , User(葉加瀬万太郎), …} ※ログインユーザを変えると、myName は違う値 ※ログイン企業を変えると、users も違うデータセットが返る
44.
> どの環境でも動くように 43 • 操作手順や期待値の動的生成 •
エミュレータ判定 • 多言語対応
45.
> どの環境でも動くように 44 • エミュレータかどうかの判定 •
実機じゃないと確認できない項目(カメラなど)は このフラグを見てスキップさせる
46.
> どの環境でも動くように 45 • 操作手順や期待値の動的生成 •
エミュレータ判定 • 多言語対応
47.
> 多言語対応 46 • https://github.com/RobotiumTech/robotium/wiki/Getting-Started •
↑あくまでも API の使い方と思っておきましょう。 • 【対応】 • Robotium なら、clickOnText(@StringRes int) を作って、 getString(…) • Espresso なら、withText に @StringRes int を渡す 日本語の時文言が違えば、 このコードはエラーになる ※表示文言が仕様通りであることの判定にはならないので要注意
48.
実行環境
49.
> 実行環境 48 • 基本的に実機で実行 •
昔は Jenkins & エミュレータでやっていた • テストが増え、CI 環境を長時間(2h 以上※)占有する &エミュレータが不安定なためやめた • ※無料版、有料版など全パターン回した場合 • jacoco でカバレッジ計測 • どこのテストが足りてないかわかる • 開発環境 DB で実施 • 固定のデータセット、特定のデータを使いたい場合は Docker にて特定のデータセットを持つ DB を用意
50.
> Jacoco のカバレッジレポート 49 •
html で出力される(抜粋) • • 2016/02時点で 59% をカバーできている
51.
> Jacoco のカバレッジレポート 50 •
html で出力される • 通っていないパスがよくわかる
52.
> Docker を使った固定データ環境 51 •
開発環境(データや件数が他者によって書き換えられる可能性があ る)でもテストが行えるようにしているが、以下のニーズ がある • パフォーマンス計測がしたい(ので、件数固定じゃないとダメ) • テスト用に特定のユーザセットが欲しい • 例)アカウント停止ユーザのエラーチェック • アプリからは設定できないデータを持つ名刺が欲しい • 例)名刺交換日未設定 • ローカル DB をアテにしない期待値を書きたい • 例)山田賢治さんは○○枚名刺を持っている • Docker で環境(API&DB)のイメージを持っておき、テス トコードから環境準備&片付けを行う
53.
> Docker を使った固定データ環境 52 •
事前準備 • Jenkins に環境起動用のジョブ / 環境破棄用のを作成 • テスト実行時 • setup() で 環境起動用の Jenkins ジョブを Jenkins WebAPI を用いて実行 • アプリの API の向き先を差し替える • テスト実行中 • 起動した環境に接続してテストを実施 • テスト終了時 • tearDown() で環境破棄用の Jenkins ジョブを Jenkins WebAPI を用いて実行 • API の向き先を戻す
54.
デモ
55.
> デモ動画 54 • 2014/11
時点の動画です • http://youtu.be/scY_RPgfxeY • 4分ぐらいありますが、発表時間の都合上ちょっとだ け…
56.
自動テストを導入してみて
57.
> 自動テスト導入してみて 56 • デグレードがないことを容易に確認できる •
メンテは思ったほど大変じゃない • コツ:1行で書ける画面操作も clickSendButton() など の関数にして共通利用するとよい • テストでしっかりカバーしていれば、大規模なリファ クタリングも安心! • これから、通信ライブラリ・カメラ API・デザインパーツの差し替 え・DB の置き換え?などが控えている • モックを使わないので、サーバの動作確認にもなる • 同じ仕様の iOS アプリもテストしたい…
58.
> 自動テスト導入してみて 57 • デグレードがないことを容易に確認できる •
メンテは思ったほど大変じゃない • コツ:1行で書ける画面操作も clickSendButton() など の関数にして共通利用するとよい • テストでしっかりカバーしていれば、大規模なリファ クタリングも安心! • これから、通信ライブラリ・カメラ API・デザインパーツの差し替 え・DB の置き換え?などが控えている • モックを使わないので、サーバの動作確認にもなる • 同じ仕様の iOS アプリもテストしたい…
59.
Appium で iOS
アプリと テストコードを共有する
60.
> Appium 59 • http://appium.io/ •
iOS アプリでも Android アプリでもテスト可能 • リリースバイナリでもテスト可能 • 但し、アプリ内部オブジェクトにはアクセスできない… • Java, Ruby, JavaScript などで記述可能
61.
> 設定ファイル(1/2) 60
62.
> 設定ファイル(2/2) 61
63.
> デモシナリオ 62 タップ 入力
エラー
64.
> テストコード 63 iOS アプリの
View の アクセシビリティラベル に Android と同様の View ID を付与している のがミソ
65.
> 実行するコマンド 64 - Appium
起動 > appium & - for iOS > OS=iOS rspec spec/signup_spec.rb - for Android > OS=Android rspec spec/signup_spec.rb - スクショ一覧作成(オレオレ Ruby ツール) > cd screenshot > ruby collector.rb 同じ!
66.
デモ
67.
> スクショ一覧(Android &
iOS8) 66
68.
> スクショ一覧(Android &
iOS9) 67 iOS9だと、スクショで 一部 View が欠落する…
69.
> Some elements
are invisible on screenshot of iOS 9.2 68https://github.com/appium/appium/issues/6229
70.
Appium の話は終わり。
71.
Appium の話は終わり。 Appium 遅いね。。。
72.
UI テストで他にもできそうなこと (ちょっとだけ着手して、本格導入できていない件)
73.
> 推移時間(イメージ) 72 • パフォーマンス改善の結果確認、性能デグレの検出が できる(かも?) •
通信状態やサーバ状態に大きく左右される気がする… 0 2 4 6 8 10 12 2015/2/27 2015/2/28 2015/3/1 2015/3/2 2015/3/3 2015/3/4 2015/3/5 2015/3/6 ログイン処理 初回同期 名刺画像送信 詳細データ取得 高画質画像データ取得 手動同期処理
74.
> 通信回数の分析 73 - 呼び出し毎に
API名と実行時間を csv ファイルに出力 - Excel のピボットテーブルで集計 - iOS / Android で同じ仕組みを入れれば、 同じ操作で API 呼び出しの違いがわかる! そんなに呼び 出す必要ある の…? サーバ負荷削減のためのボトルネック分析が容易になる Excelマクロ
75.
> 通信回数の分析(推移) 74 - さっきのデータを実行毎に集計する 呼び出し回数削減施策導入
76.
> スクショ一覧 75 画面名→ 画面名→ 画面名→ Nexus4 Nexus5
デザイン指示画像(期待値) ※元サイズが違うけど、 今は同じサイズで 表示されている 目で比較する! デザイナのチェックや 意図しないレイアウト崩れの 確認が楽になりました
77.
これから
78.
> これから 77 • Espresso
も併用して、Robotium ではテストしづら かった部分のテスト(Intent のチェックなど)を行う • UI Automater も併用して、 • アクティビティを保持しない設定にする • 最小化&復帰後の画面状態のテスト • AWS Device Farm を使って、所有していない端末 を時間借りしてテストを行う • Device Farm も Appium をサポートしている! ※但し、まだ Java 記述のみ… • http://www.slideshare.net/kenichitatsuhama/device-farm
79.
まとめ
80.
> まとめ 79 • 頑張ればいろいろできる •
少人数でやっていれば影響範囲はわかるので、 導入は各自判断ください… • 頑張りすぎない、広く浅くから! • 色んな機種でスクリーンショット集めるのはオススメ • 色んなライブラリを組み合わすことも可能
81.
質疑応答
82.
ステッカー欲しい方は お声がけ下さい!!
Hinweis der Redaktion
先日発表したばかりのEightの新機能を紹介します。 名刺交換を、スマホだけでやってしまおう!というものです。 超音波やBluetooth、Wi-Fiなどを組み合わせた(Nearby API™)という技術を利用して、近くにいるEightユーザーを検出します。 複数のユーザー間でも一気にまとめて交換できるので、こうしたイベントで大勢の方々と名刺交換をするときに活躍します。
ということで早速、いまアプリを立ち上げて、私と名刺交換してみましょう!
Jetzt herunterladen