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
38
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
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
880
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
株式会社ログラス - 会社説明資料【エンジニア】/ Loglass Engineer
loglass2019
4
65k
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
1.2k
データ分析エージェント Socrates の育て方
na0
6
1.8k
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
450
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.8k
複数サービスを支えるマルチテナント型Batch MLプラットフォーム
lycorptech_jp
PRO
1
870
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
380
Create Ruby native extension gem with Go
sue445
0
120
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
5
1.7k
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
510
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
RailsConf 2023
tenderlove
30
1.2k
Statistics for Hackers
jakevdp
799
220k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Side Projects
sachag
455
43k
BBQ
matthewcrist
89
9.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
Facilitating Awesome Meetings
lara
55
6.5k
Being A Developer After 40
akosma
90
590k
Agile that works and the tools we love
rasmusluckow
330
21k
Typedesign – Prime Four
hannesfritz
42
2.8k
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!