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
69
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Automated User Interface Testing
Tiago Martinho
May 01, 2018
More Decks by Tiago Martinho
See All by Tiago Martinho
Time Managment
tiagomartinho
0
52
BuddyBuild
tiagomartinho
0
46
Daily Journal
tiagomartinho
0
61
Everyone can code
tiagomartinho
0
45
Introduction to Machine Learning
tiagomartinho
0
54
Silicon Valley Tour
tiagomartinho
1
77
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
100
Francigenr
tiagomartinho
1
40
Artusi Learning
tiagomartinho
0
54
Other Decks in Technology
See All in Technology
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
660
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
420
TypeScript入門 2026
recruitengineers
PRO
3
690
Model Studio CLI × Token Plan
maigo999
0
190
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
500
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
9
3.1k
コーチングの奥義 何もしないテクニック
jinwatanabe
0
110
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
280
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
3
25k
Adding Right-to-Left support to your web application with CSS logical properties — Lessons from Redmine
vividtone
0
130
エンドユーザー視点で見る SansanのMeraki活用と内製自動化
sansantech
PRO
0
110
少人数チームで実現する、大規模AWSサーバーレス基盤における"揺らがない"信頼性運用
maimyyym
1
110
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Balancing Empowerment & Direction
lara
6
1.2k
My Coaching Mixtape
mlcsv
0
250
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Evolving SEO for Evolving Search Engines
ryanjones
0
260
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Tell your own story through comics
letsgokoyo
1
1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
480
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Making the Leap to Tech Lead
cromwellryan
135
10k
Why Our Code Smells
bkeepers
PRO
340
58k
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!