Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[Jana Moudra] Hands-on with UI testing for Andr...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Google Developers Group Lviv
September 09, 2016
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[Jana Moudra] Hands-on with UI testing for Android developers
Presentation from GDG DevFest Ukraine 2016.
Learn more at:
https://devfest.gdg.org.ua
Google Developers Group Lviv
September 09, 2016
More Decks by Google Developers Group Lviv
See All by Google Developers Group Lviv
[Elad Bezalel] Angular Material CDK
gdglviv
1
170
[Zac Sweers] Breaking the Android ClassLoader
gdglviv
1
260
[Daniel Galpin] Adventures in Navigation
gdglviv
2
590
[Rebecca Franks] Practical Image Processing in Android
gdglviv
1
490
[Mateusz Herych] Architecture for App Bundles
gdglviv
2
150
[Andrea Falcone] Iterative Mobile Development
gdglviv
2
140
[Yonatan Levin] Keynote: The world of change and your significance in it
gdglviv
1
160
[Denys Tkalich] Using BigQuery as a data warehouse in B2B startup
gdglviv
1
140
[Mete Atamel] Google Assistant powered by Containers, Machine Learning and .NET on Google Cloud
gdglviv
1
180
Other Decks in Technology
See All in Technology
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
1
680
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
190
AIのReact習熟度を測る
uhyo
2
190
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
610
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
120
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
840
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.2k
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
280
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
230
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
170
LLMと共に進化するプロセスを目指して
ymatsuwitter
13
4k
脆弱性対応、どこで線を引くか
rymiyamoto
1
370
Featured
See All Featured
Abbi's Birthday
coloredviolet
2
8k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
570
Raft: Consensus for Rubyists
vanstee
141
7.5k
A Soul's Torment
seathinner
6
2.9k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
The SEO identity crisis: Don't let AI make you average
varn
0
490
Six Lessons from altMBA
skipperchong
29
4.3k
Exploring anti-patterns in Rails
aemeredith
3
400
Transcript
UI TESTING for Android Developers Jana Moudrá @Janamou +JanaMoudra
Eh, tests?
Motivation
I tested the app myself...
Not repeatable Time consuming Error-prone Manual Testing
WE WANT TO AUTOMATE
UI testing lets you ensure that your app meets its
functional requirements and achieves a high standard of quality... Source: developer.android.com/training/testing/ui-testing/index.html
ANDROID!
UI Automator vs Espresso Simulates user interactions UI Testing on
Android
src/androidTest/java folder JUnit 4 tests Runs on same device as
app Android tests how to
UI AUTOMATOR
For many apps System apps No app source code Interacts
with visible elements UI Automator
Android 4.3 (18) or higher Works with AndroidJUnitRunner UI Automator
requirements
android { defaultConfig { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } } UI Automator
setup build.gradle
dependencies { androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' } UI Automator setup
build.gradle
android:contentDescription for ImageView etc. android:hint for EditText UI Automator accessibility
UI Automator Viewer <android-sdk>/tools/
assertEquals(hiButton.getText(), "Hi"); UI Automator asserts
UiDevice UiSelector UiObject UiCollection UiScrollable Configurator UI Automator API
ESPRESSO
For a single app Not for system apps App source
code Espresso
Android 2.2 (8) or higher Works with AndroidJUnitRunner Espresso requirements
android { defaultConfig { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } } Espresso setup
build.gradle
dependencies { androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' } Espresso setup build.gradle
For Settings/Developer Options: Window animation scale Transition animation scale Animator
duration scale Turn off Animations
ActivityTestRule ViewMatchers ViewActions ViewAssertions Espresso API
Espresso Intents - extension for validation and mocking of Intents
Espresso Contrib - additional features for great tests (RecyclerView) Even more Espresso
WHICH SHOULD I USE?
Black box vs White box Multiple apps vs Single app
Without source code vs With source code UI Automator vs Espresso
Use gestures Retrieve attributes Set text No manipulation What can
I do with UI tests?
Monkey Espresso Test Recorder Firebase Test Lab Other tools
Robolectric Appium Calabash Selendroid Other libraries
NO MORE UNTESTED APPS! Jana Moudrá @Janamou +JanaMoudra
UI TESTING WORKSHOP Jana Moudrá @Janamou +JanaMoudra
1. UI Automator 2. Espresso 3. Test recorder 4. Monkey
Workshop summary
github.com/Janamou/android-testing-codelab Repository
None
• reynermedia, cc, https://www.flickr.com/photos/89228431@N06/1128559 2553/ Image credits