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
66
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
49
BuddyBuild
tiagomartinho
0
42
Daily Journal
tiagomartinho
0
58
Everyone can code
tiagomartinho
0
41
Introduction to Machine Learning
tiagomartinho
0
52
Silicon Valley Tour
tiagomartinho
1
75
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
97
Francigenr
tiagomartinho
1
38
Artusi Learning
tiagomartinho
0
51
Other Decks in Technology
See All in Technology
cccccc
moznion
0
1.7k
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
0
680
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
180
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
310
初めてのDatabricks勉強会
taka_aki
2
230
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
140
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
1
200
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
160
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
1
360
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
960
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
1
110
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
120
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
170
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
180
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
400
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Bash Introduction
62gerente
615
220k
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!