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
43
BuddyBuild
tiagomartinho
0
39
Daily Journal
tiagomartinho
0
54
Everyone can code
tiagomartinho
0
36
Introduction to Machine Learning
tiagomartinho
0
46
Silicon Valley Tour
tiagomartinho
1
69
Swift Peer Lab - try! Swift Tokyo
tiagomartinho
0
89
Francigenr
tiagomartinho
1
35
Artusi Learning
tiagomartinho
0
45
Other Decks in Technology
See All in Technology
【Oracle Cloud ウェビナー】クラウド導入に「専用クラウド」という選択肢、Oracle AlloyとOCI Dedicated Region とは
oracle4engineer
PRO
3
130
関係性が駆動するアジャイル──GPTに人格を与えたら、対話を通してふりかえりを習慣化できた話
mhlyc
0
140
自動テストのコストと向き合ってみた
qa
0
220
extension 現場で使えるXcodeショートカット一覧
ktombow
0
220
能登半島地震で見えた災害対応の課題と組織変革の重要性
ditccsugii
0
360
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
220
2025-10-09_プロジェクトマネージャーAIチャンス
taukami
0
100
Where will it converge?
ibknadedeji
0
200
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
78k
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
520
Azure Well-Architected Framework入門
tomokusaba
1
350
社内報はAIにやらせよう / Let AI handle the company newsletter
saka2jp
8
1.3k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
70
4.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
900
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
189
55k
How GitHub (no longer) Works
holman
315
140k
Rails Girls Zürich Keynote
gr2m
95
14k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Navigating Team Friction
lara
190
15k
A better future with KSS
kneath
239
18k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Music & Morning Musume
bryan
46
6.8k
RailsConf 2023
tenderlove
30
1.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!