$30 off During Our Annual Pro Sale. View Details »
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
0
64
Automated User Interface Testing
Tiago Martinho
May 01, 2018
Tweet
Share
More Decks by Tiago Martinho
See All by Tiago Martinho
Time Managment
tiagomartinho
0
43
BuddyBuild
tiagomartinho
0
39
Daily Journal
tiagomartinho
0
54
Everyone can code
tiagomartinho
0
36
Introduction to Machine Learning
tiagomartinho
0
47
Silicon Valley Tour
tiagomartinho
1
69
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
89
Francigenr
tiagomartinho
1
35
Artusi Learning
tiagomartinho
0
45
Other Decks in Technology
See All in Technology
Data Hubグループ 紹介資料
sansan33
PRO
0
2.3k
TypeScript×CASLでつくるSaaSの認可 / Authz with CASL
saka2jp
2
170
あなたの知らないDateのひみつ / The Secret of "Date" You Haven't known #tqrk16
expajp
0
110
【保存版】「ガチャ」からの脱却:Gemini × Veoで作る、意図を反映するAI動画制作ワークフロー
nekoailab
0
120
TypeScript 6.0で非推奨化されるオプションたち
uhyo
15
5.8k
Digital omtanke på Internetdagarna 2025
axbom
PRO
0
160
MCP・A2A概要 〜Google Cloudで構築するなら〜
shukob
0
110
DGX SparkでローカルLLMをLangChainで動かした話
ruzia
1
200
Claude Code はじめてガイド -1時間で学べるAI駆動開発の基本と実践-
oikon48
37
18k
Agents IA : la nouvelle frontière des LLMs (Tech.Rocks Summit 2025)
glaforge
0
170
AIにおける自由の追求
shujisado
2
410
AI駆動開発2025年振り返りとTips集
knr109
1
150
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Faster Mobile Websites
deanohume
310
31k
What's in a price? How to price your products and services
michaelherold
246
12k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
360
Agile that works and the tools we love
rasmusluckow
331
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Making Projects Easy
brettharned
120
6.5k
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!