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
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
44
BuddyBuild
tiagomartinho
0
40
Daily Journal
tiagomartinho
0
55
Everyone can code
tiagomartinho
0
37
Introduction to Machine Learning
tiagomartinho
0
47
Silicon Valley Tour
tiagomartinho
1
70
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
90
Francigenr
tiagomartinho
1
36
Artusi Learning
tiagomartinho
0
47
Other Decks in Technology
See All in Technology
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
生成AI時代にこそ求められるSRE / SRE for Gen AI era
ymotongpoo
5
3.2k
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
150
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
720
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
400
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
410
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
430
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.3k
Red Hat OpenStack Services on OpenShift
tamemiya
0
100
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
570
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
Prompt Engineering for Job Search
mfonobong
0
160
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
350
Become a Pro
speakerdeck
PRO
31
5.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
210
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Paper Plane
katiecoart
PRO
0
46k
Accessibility Awareness
sabderemane
0
51
We Are The Robots
honzajavorek
0
160
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!