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
52
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
33
BuddyBuild
tiagomartinho
0
29
Daily Journal
tiagomartinho
0
49
Everyone can code
tiagomartinho
0
28
Introduction to Machine Learning
tiagomartinho
0
40
Silicon Valley Tour
tiagomartinho
1
51
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
65
Francigenr
tiagomartinho
1
31
Artusi Learning
tiagomartinho
0
38
Other Decks in Technology
See All in Technology
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
300
EM完全に理解した と思ったけど、 やっぱり何も分からなかった話 / EM Night Fukuoka #1
hirutas
0
140
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
4
37k
20分で完全に理解するGrafanaダッシュボード
hamadakoji
5
850
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
680
データベース02: データベースの概念
trycycle
0
170
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
4
17k
いいたいことちゃんという
tkengo
0
140
地理空間データ可視化・解析・活用ソリューション Pacific Spatial Solutions (PSS)
pacificspatialsolutions
0
330
ServiceNow Knowledge Learning Rise up
manarobot
0
230
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
270
Improve Your Development Workflow with Gemini Code Assist
meteatamel
0
120
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
13
1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
19
6.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
GraphQLの誤解/rethinking-graphql
sonatard
54
9.3k
Designing with Data
zakiwarfel
96
4.8k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Being A Developer After 40
akosma
65
580k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
32
6k
4 Signs Your Business is Dying
shpigford
176
21k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
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!