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
65
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
45
BuddyBuild
tiagomartinho
0
41
Daily Journal
tiagomartinho
0
57
Everyone can code
tiagomartinho
0
38
Introduction to Machine Learning
tiagomartinho
0
50
Silicon Valley Tour
tiagomartinho
1
71
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
91
Francigenr
tiagomartinho
1
37
Artusi Learning
tiagomartinho
0
49
Other Decks in Technology
See All in Technology
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
290
OpenClawでPM業務を自動化
knishioka
2
370
Babylon.js Japan Activities (2026/4)
limes2018
0
140
FASTでAIエージェントを作りまくろう!
yukiogawa
4
190
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
5
1.3k
Microsoft Fabricで考える非構造データのAI活用
ryomaru0825
0
600
The essence of decision-making lies in primary data
kaminashi
0
220
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
680
Network Firewall Proxyで 自前プロキシを消し去ることができるのか
gusandayo
0
160
やさしいとこから始めるGitHubリポジトリのセキュリティ
tsubakimoto_s
3
2.1k
Cursor Subagentsはいいぞ
yug1224
2
130
MCPで決済に楽にする
mu7889yoon
0
170
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
150
The untapped power of vector embeddings
frankvandijk
2
1.7k
RailsConf 2023
tenderlove
30
1.4k
How STYLIGHT went responsive
nonsquared
100
6k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
From π to Pie charts
rasagy
0
160
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to make the Groovebox
asonas
2
2.1k
Leo the Paperboy
mayatellez
6
1.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
940
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!