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
Automated User Interface Testing
Search
Tiago Martinho
May 01, 2018
Technology
66
0
Share
Automated User Interface Testing
Tiago Martinho
May 01, 2018
More Decks by Tiago Martinho
See All by Tiago Martinho
Time Managment
tiagomartinho
0
46
BuddyBuild
tiagomartinho
0
42
Daily Journal
tiagomartinho
0
58
Everyone can code
tiagomartinho
0
38
Introduction to Machine Learning
tiagomartinho
0
51
Silicon Valley Tour
tiagomartinho
1
72
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
92
Francigenr
tiagomartinho
1
37
Artusi Learning
tiagomartinho
0
50
Other Decks in Technology
See All in Technology
260422_Sansan_Tech_Talk__関西_vol.3_データ活用のリアル__矢田__.pdf
sansantech
PRO
0
140
Shipping AI Agents — Lessons from Production
vvatanabe
0
300
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
170
独断と偏見で試してみる、 シングル or マルチエージェント どっちがいいの?
shichijoyuhi
1
210
Forget technical debt
ufried
0
130
Keeping Ruby Running on Cygwin
fd0
0
190
AI活用時代の事業判断高度化を導くエンジニアリング基盤 / 20260424 Atsushi Funahashi
shift_evolve
PRO
2
110
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
510
MySQL 9.7がやってきた ~これまでのあらすじと基本情報~ @ 日本MySQLユーザ会会2026年04月 / mysql97-yattekita
sakaik
0
130
[Oracle TechNight#99] 生成AI時代のAI/ML入門 ~ AIとオラクルデータベースの関係 (前半)
oracle4engineer
PRO
1
130
AIはハッカーを減らすのか、増やすのか?──現役ホワイトハッカーから見るAI時代のリアル【MEGU-Meet】
cscengineer
PRO
0
240
The 7 pitfalls of AI
ufried
0
120
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
260
Color Theory Basics | Prateek | Gurzu
gurzu
0
300
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
4 Signs Your Business is Dying
shpigford
187
22k
Documentation Writing (for coders)
carmenintech
77
5.3k
Faster Mobile Websites
deanohume
310
31k
For a Future-Friendly Web
brad_frost
183
10k
Agile that works and the tools we love
rasmusluckow
331
21k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
520
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
180
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
Building the Perfect Custom Keyboard
takai
2
740
Transcript
Tiago Martinho @martinho_t tiagomartinho Automated User Interface Testing
None
+ User POV Black Box Testing Offload Testers
- Flaky Expensive Slow
Unit Integration UI
100x 10x x
None
Anti-Pattern
func testLogin() { application.launch() let loginButton = application.buttons["login"] loginButton.tap() wait(for:
“label") label = application.labels[“label”] assertEqual("42", label.text) }
Objectives Robust Easy to write Easy to read
AAA Arrange Act Assert
UI Driver Application Acceptance Test
UI Driver Application Model Acceptance Test
Acceptance Test No tap, click, swipe No UI references Clear
state and asserts
func testDeleteAllChannels() { model.enforce(state: .notEmptyChannelsList) model.deleteAllChannels() model.assert(condition: .emptyChannelsList) }
func testDeleteAllChannels() { model.enforce(state: .notEmptyChannelsList) model.deleteAllChannels() model.assert(condition: .emptyChannelsList) }
func testDeleteAllChannels() { model.enforce(state: .notEmptyChannelsList) model.deleteAllChannels() model.assert(state: .emptyChannelsList) }
UI Driver Application Model Acceptance Test
Application Model Represents our App Does not depend on the
UI testing Framework
None
None
None
UI Driver Application Model Acceptance Test
UI Driver Drives the UI Knows nothing about our app
Can be replaced
None
None
None
+ Knowledge Base Short and Robust Tests Framework Independent
Tiago Martinho @martinho_t tiagomartinho Thank you!