Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kenichi Tatsuhama
PPTX, PDF
5,270 views
Sansan における Android アプリ自動テスト導入事例
2016/03/23 Android Testing Bootcamp #1 発表資料 http://connpass.com/event/26911/
Software
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Downloaded 28 times
1
/ 82
2
/ 82
3
/ 82
4
/ 82
5
/ 82
6
/ 82
7
/ 82
8
/ 82
9
/ 82
10
/ 82
11
/ 82
12
/ 82
13
/ 82
14
/ 82
15
/ 82
16
/ 82
17
/ 82
18
/ 82
19
/ 82
20
/ 82
21
/ 82
22
/ 82
23
/ 82
24
/ 82
25
/ 82
26
/ 82
27
/ 82
28
/ 82
29
/ 82
30
/ 82
31
/ 82
32
/ 82
33
/ 82
34
/ 82
35
/ 82
36
/ 82
37
/ 82
38
/ 82
39
/ 82
40
/ 82
41
/ 82
42
/ 82
43
/ 82
44
/ 82
45
/ 82
46
/ 82
47
/ 82
48
/ 82
49
/ 82
50
/ 82
51
/ 82
52
/ 82
53
/ 82
54
/ 82
55
/ 82
56
/ 82
57
/ 82
58
/ 82
59
/ 82
60
/ 82
61
/ 82
62
/ 82
63
/ 82
64
/ 82
65
/ 82
66
/ 82
67
/ 82
68
/ 82
69
/ 82
70
/ 82
71
/ 82
72
/ 82
73
/ 82
74
/ 82
75
/ 82
76
/ 82
77
/ 82
78
/ 82
79
/ 82
80
/ 82
81
/ 82
82
/ 82
More Related Content
PDF
今更聞けない? Androidのテストのいろは
by
Hiroshi Kikuchi
PPTX
Valuation 2330.TW
by
Collaborator
PPTX
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
by
Haruki Yano
PDF
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
by
Yuusuke Takeuchi
PDF
ディープラーニングとAppiumでモバイルテスト自動化
by
Nozomi Ito
PDF
管理者的5項職責 slide v5.0
by
isdean 雄輝 chang 張
PDF
ChatGPTを使った要件定義のRDRA的考察.pdf
by
Zenji Kanzaki
PPTX
ゲームエンジンの中の話
by
Masayoshi Kamai
今更聞けない? Androidのテストのいろは
by
Hiroshi Kikuchi
Valuation 2330.TW
by
Collaborator
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
by
Haruki Yano
日曜プログラマーが 1週間くらいで通信対戦ゲームを作ってみた
by
Yuusuke Takeuchi
ディープラーニングとAppiumでモバイルテスト自動化
by
Nozomi Ito
管理者的5項職責 slide v5.0
by
isdean 雄輝 chang 張
ChatGPTを使った要件定義のRDRA的考察.pdf
by
Zenji Kanzaki
ゲームエンジンの中の話
by
Masayoshi Kamai
What's hot
PPTX
メッセージとストーリーのない発表はカスだ アカデミック・プレゼンテーションのコツ
by
Kei Gomi
PPTX
NVMCT #1 ~今さら聞けないSSDの基本~
by
Fixstars Corporation
PDF
逆求人自己紹介プレゼン(平木場)
by
Futa HIRAKOBA
PPTX
ハイエンド〜ローエンドまで、「Enlighten」による効率的リアルタイムグローバルイルミネーション
by
Silicon Studio Corporation
PDF
文書比較 (diff)
by
Satoshi MATSUURA
PDF
ツイートID生成とツイッターリアルタイム検索システムの話
by
Preferred Networks
PDF
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!
by
Moto Arima
PDF
報一 國科會 懶人包
by
releaseey
PDF
IIJmio meeting 31 SIMフリースマホの昔と今
by
techlog (Internet Initiative Japan Inc.)
PPTX
ChatGPTをもっと使いたい.pptx
by
TokioMiyaoka
PDF
Appium 2.0 ではじめるモバイルアプリテスト
by
Masayuki Wakizaka
PDF
長期照護
by
ssuserf1c7ba1
PPTX
企業節流寶藏~開放資源導入實例解析 - Jason Cheng [2015/05/13]
by
Jason Cheng
PDF
ゲームAIとマルチエージェント(下)
by
Youichiro Miyake
PDF
11月のささみ: pgRoutingって何?
by
Taro Matsuzawa
PDF
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
by
Go Maeda
PPTX
修論発表
by
harmonylab
PDF
UXデザインの海外最新「UXトレンドレポート2022」を読んで、考える
by
Yoshiki Hayama
PDF
Game Creators Conference 2019 Keiji Kikuchi
by
Keiji Kikuchi
PPTX
プログラマが欲しい仕様書とは
by
Katsutoshi Makino
メッセージとストーリーのない発表はカスだ アカデミック・プレゼンテーションのコツ
by
Kei Gomi
NVMCT #1 ~今さら聞けないSSDの基本~
by
Fixstars Corporation
逆求人自己紹介プレゼン(平木場)
by
Futa HIRAKOBA
ハイエンド〜ローエンドまで、「Enlighten」による効率的リアルタイムグローバルイルミネーション
by
Silicon Studio Corporation
文書比較 (diff)
by
Satoshi MATSUURA
ツイートID生成とツイッターリアルタイム検索システムの話
by
Preferred Networks
スクラムはもうだめぽよ!新しい開発手法『パワープレイ』をお姉さんが教えてあげちゃう!
by
Moto Arima
報一 國科會 懶人包
by
releaseey
IIJmio meeting 31 SIMフリースマホの昔と今
by
techlog (Internet Initiative Japan Inc.)
ChatGPTをもっと使いたい.pptx
by
TokioMiyaoka
Appium 2.0 ではじめるモバイルアプリテスト
by
Masayuki Wakizaka
長期照護
by
ssuserf1c7ba1
企業節流寶藏~開放資源導入實例解析 - Jason Cheng [2015/05/13]
by
Jason Cheng
ゲームAIとマルチエージェント(下)
by
Youichiro Miyake
11月のささみ: pgRoutingって何?
by
Taro Matsuzawa
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
by
Go Maeda
修論発表
by
harmonylab
UXデザインの海外最新「UXトレンドレポート2022」を読んで、考える
by
Yoshiki Hayama
Game Creators Conference 2019 Keiji Kikuchi
by
Keiji Kikuchi
プログラマが欲しい仕様書とは
by
Katsutoshi Makino
Viewers also liked
PPTX
Appium を使って iOS / Android の UI テストを共通化
by
Kenichi Tatsuhama
PPTX
Robotium を使った UI テストとレイアウト確認の効率化
by
Kenichi Tatsuhama
PPTX
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
PDF
テストがあればなんとかなる〜効率化までの道程〜
by
Takao Sumitomo
PDF
Unity testtool
by
大介 束田
PDF
テストの種類とBDD #33testing
by
Koji Hasegawa
PDF
User Scenario based UI testing with KIF
by
Yusuke Kita
PDF
AWS Device FarmでAndroidのUIテストをやってみた
by
Yasuhiro Tajiri
PPTX
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
PDF
20170302 tryswift tasting_tests
by
Kazuaki Matsuo
PDF
スマホUXラボ「ユーザテストLive! 見学会」
by
Tarumoto Tetsuya
PPTX
Wantedlyのテスト事情
by
Takao Sumitomo
PDF
Rubyを使ったスマホアプリのUIテスト
by
Kenichi Tatsuhama
PDF
全米一住みたい街ポートランドに学ぶ、創造・快適・環境先進都市の作り方
by
Takeshi Kakeda
PDF
AWS Device Farm を Jenkins CI から叩いてみた
by
Tatsuya Yamamoto
PPTX
UNICORNで爆速アプリ開発
by
修平 大野
PDF
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
by
Kazuhito Miura
PPTX
Robotium を使った UI テスト
by
Kenichi Tatsuhama
PDF
ごっとふぁーざーふぁしりてーしょんず
by
Kenji Tanaka
PDF
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
by
Shinobu Okano
Appium を使って iOS / Android の UI テストを共通化
by
Kenichi Tatsuhama
Robotium を使った UI テストとレイアウト確認の効率化
by
Kenichi Tatsuhama
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
テストがあればなんとかなる〜効率化までの道程〜
by
Takao Sumitomo
Unity testtool
by
大介 束田
テストの種類とBDD #33testing
by
Koji Hasegawa
User Scenario based UI testing with KIF
by
Yusuke Kita
AWS Device FarmでAndroidのUIテストをやってみた
by
Yasuhiro Tajiri
Java → Kotlin 変換 そのあとに。
by
Kenichi Tatsuhama
20170302 tryswift tasting_tests
by
Kazuaki Matsuo
スマホUXラボ「ユーザテストLive! 見学会」
by
Tarumoto Tetsuya
Wantedlyのテスト事情
by
Takao Sumitomo
Rubyを使ったスマホアプリのUIテスト
by
Kenichi Tatsuhama
全米一住みたい街ポートランドに学ぶ、創造・快適・環境先進都市の作り方
by
Takeshi Kakeda
AWS Device Farm を Jenkins CI から叩いてみた
by
Tatsuya Yamamoto
UNICORNで爆速アプリ開発
by
修平 大野
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜
by
Kazuhito Miura
Robotium を使った UI テスト
by
Kenichi Tatsuhama
ごっとふぁーざーふぁしりてーしょんず
by
Kenji Tanaka
DroidKaigiアプリをSpoonで全画面スクショするぞい\(^o^)/
by
Shinobu Okano
Similar to Sansan における Android アプリ自動テスト導入事例
PDF
Androidテスティング実践2 システムテスト編
by
株式会社 NTTテクノクロス
KEY
Androidリリース作業の効率化(2)
by
Kenichi Kambara
PPTX
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
by
Kenichi Tatsuhama
PPTX
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
PPTX
JaSST'16 Tokyo モバイルセッション
by
mirer
PPTX
アプリの不具合を少なくするために
by
Kenichi Tatsuhama
PDF
テストゼロからイチに進むための戦略と戦術
by
Y Watanabe
PDF
はてなにおける Android アプリのソフトウェアテスト
by
Yu Nobuoka
PDF
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
by
Yahoo!デベロッパーネットワーク
PDF
Awsで実現するseleniumテスト高速術
by
finoue
PDF
GUI自動テストの保守性を高めるには
by
Nozomi Ito
PPTX
自動テストとJenkinsの活用 公開版
by
baroqueworksdev
PDF
ぼくのかんがえた iOSテスト戦略
by
Naoki Umehara
PPTX
アプリ開発作業の効率改善
by
Kenichi Tatsuhama
PPTX
テストしなイカ? Seleniumで自動ブラウザテスト
by
Ohishi Mikage
PPTX
Android 開発, 運用時に使いたいライブラリやサービスの紹介
by
Kenichi Tatsuhama
PDF
「Selenium実践入門」で学ぶテスト自動化の世界
by
Nozomi Ito
PPT
テスト自動化ツール[Selenium]を検討してみて
by
裕史 川松
PDF
5分で分かるselenium conference berlin 2017
by
Toshiya Komoda
PDF
デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)
by
Developers Summit
Androidテスティング実践2 システムテスト編
by
株式会社 NTTテクノクロス
Androidリリース作業の効率化(2)
by
Kenichi Kambara
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
by
Kenichi Tatsuhama
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
JaSST'16 Tokyo モバイルセッション
by
mirer
アプリの不具合を少なくするために
by
Kenichi Tatsuhama
テストゼロからイチに進むための戦略と戦術
by
Y Watanabe
はてなにおける Android アプリのソフトウェアテスト
by
Yu Nobuoka
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
by
Yahoo!デベロッパーネットワーク
Awsで実現するseleniumテスト高速術
by
finoue
GUI自動テストの保守性を高めるには
by
Nozomi Ito
自動テストとJenkinsの活用 公開版
by
baroqueworksdev
ぼくのかんがえた iOSテスト戦略
by
Naoki Umehara
アプリ開発作業の効率改善
by
Kenichi Tatsuhama
テストしなイカ? Seleniumで自動ブラウザテスト
by
Ohishi Mikage
Android 開発, 運用時に使いたいライブラリやサービスの紹介
by
Kenichi Tatsuhama
「Selenium実践入門」で学ぶテスト自動化の世界
by
Nozomi Ito
テスト自動化ツール[Selenium]を検討してみて
by
裕史 川松
5分で分かるselenium conference berlin 2017
by
Toshiya Komoda
デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)
by
Developers Summit
More from Kenichi Tatsuhama
PDF
【技術的負債LT会】私たちの技術負債最前線〜過去と未来について〜 2024/08/01
by
Kenichi Tatsuhama
PDF
地方創生ワカモノ会合
by
Kenichi Tatsuhama
PDF
Google Analytics のデータ分析ハンズオン
by
Kenichi Tatsuhama
PDF
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
by
Kenichi Tatsuhama
PDF
知っておきたいFirebase の色んな上限について
by
Kenichi Tatsuhama
PDF
Android 開発の昔と今
by
Kenichi Tatsuhama
PDF
Firebase Extensions はじめの一歩
by
Kenichi Tatsuhama
PDF
Firebase & BigQuery で Android アプリの成⻑を支える
by
Kenichi Tatsuhama
PPTX
GDG DevFest Tokyo 2019 Day2 Special Hands-on
by
Kenichi Tatsuhama
PPTX
Firebase Summit 2019 Recap
by
Kenichi Tatsuhama
PPTX
Cloud Firestore を使って、Polling をやめたい話
by
Kenichi Tatsuhama
PPTX
Firebase hands on in Matsuyama
by
Kenichi Tatsuhama
PPTX
インドのインターネット環境との戦い方
by
Kenichi Tatsuhama
PPTX
インドの低速なネットワーク環境の攻略法
by
Kenichi Tatsuhama
PPTX
DroidKaigi 2018 参加報告会 Closing
by
Kenichi Tatsuhama
PPTX
企業スポンサー
by
Kenichi Tatsuhama
PPTX
参加したセッションのピックアップ
by
Kenichi Tatsuhama
PPTX
CFP(Call For Paper)を出す話
by
Kenichi Tatsuhama
PPTX
DroidKaigi 2018 参加報告会
by
Kenichi Tatsuhama
PPTX
DroidKaigi アプリの内部を見る
by
Kenichi Tatsuhama
【技術的負債LT会】私たちの技術負債最前線〜過去と未来について〜 2024/08/01
by
Kenichi Tatsuhama
地方創生ワカモノ会合
by
Kenichi Tatsuhama
Google Analytics のデータ分析ハンズオン
by
Kenichi Tatsuhama
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
by
Kenichi Tatsuhama
知っておきたいFirebase の色んな上限について
by
Kenichi Tatsuhama
Android 開発の昔と今
by
Kenichi Tatsuhama
Firebase Extensions はじめの一歩
by
Kenichi Tatsuhama
Firebase & BigQuery で Android アプリの成⻑を支える
by
Kenichi Tatsuhama
GDG DevFest Tokyo 2019 Day2 Special Hands-on
by
Kenichi Tatsuhama
Firebase Summit 2019 Recap
by
Kenichi Tatsuhama
Cloud Firestore を使って、Polling をやめたい話
by
Kenichi Tatsuhama
Firebase hands on in Matsuyama
by
Kenichi Tatsuhama
インドのインターネット環境との戦い方
by
Kenichi Tatsuhama
インドの低速なネットワーク環境の攻略法
by
Kenichi Tatsuhama
DroidKaigi 2018 参加報告会 Closing
by
Kenichi Tatsuhama
企業スポンサー
by
Kenichi Tatsuhama
参加したセッションのピックアップ
by
Kenichi Tatsuhama
CFP(Call For Paper)を出す話
by
Kenichi Tatsuhama
DroidKaigi 2018 参加報告会
by
Kenichi Tatsuhama
DroidKaigi アプリの内部を見る
by
Kenichi Tatsuhama
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.
ステッカー欲しい方は お声がけ下さい!!
Editor's Notes
#12
先日発表したばかりのEightの新機能を紹介します。 名刺交換を、スマホだけでやってしまおう!というものです。 超音波やBluetooth、Wi-Fiなどを組み合わせた(Nearby API™)という技術を利用して、近くにいるEightユーザーを検出します。 複数のユーザー間でも一気にまとめて交換できるので、こうしたイベントで大勢の方々と名刺交換をするときに活躍します。
#13
ということで早速、いまアプリを立ち上げて、私と名刺交換してみましょう!
Download