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
0
65
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
44
BuddyBuild
tiagomartinho
0
40
Daily Journal
tiagomartinho
0
56
Everyone can code
tiagomartinho
0
38
Introduction to Machine Learning
tiagomartinho
0
49
Silicon Valley Tour
tiagomartinho
1
71
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
91
Francigenr
tiagomartinho
1
36
Artusi Learning
tiagomartinho
0
48
Other Decks in Technology
See All in Technology
僕、S3 シンプルって名前だけど全然シンプルじゃありません よろしくお願いします
yama3133
1
200
[JAWS DAYS 2026]私の AWS DevOps Agent 推しポイント
furuton
0
150
Abuse report だけじゃない。AWS から緊急連絡が来る状況とは?昨今の攻撃や被害の事例の紹介と備えておきたい考え方について
kazzpapa3
1
550
Claude Codeが爆速進化してプラグイン追従がつらいので半自動化した話 ver.2
rfdnxbro
0
520
Scrumは歪む — 組織設計の原理原則
dashi
0
130
AWSの資格って役に立つの?
tk3fftk
1
200
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
2
370
IBM Bobを使って、PostgreSQLのToDoアプリをDb2へ変換してみよう/202603_Dojo_Bob
mayumihirano
1
320
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
870
AI は "道具" から "同僚" へ 自律型 AI エージェントの最前線と、AI 時代の人材の在り方 / Colleague in the AI Era - Autonomous AI Seminar 2026 at Niigata
gawa
0
160
わからなくて良いなら、わからなきゃだめなの?
kotaoue
1
290
組織全体で実現する標準監視設計
yuobayashi
3
490
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.2k
Code Review Best Practice
trishagee
74
20k
Darren the Foodie - Storyboard
khoart
PRO
3
2.8k
GraphQLとの向き合い方2022年版
quramy
50
14k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
How to Ace a Technical Interview
jacobian
281
24k
Between Models and Reality
mayunak
2
230
Docker and Python
trallard
47
3.8k
Are puppies a ranking factor?
jonoalderson
1
3.1k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
WENDY [Excerpt]
tessaabrams
9
36k
Leo the Paperboy
mayatellez
4
1.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!