Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Tiago Martinho @martinho_t tiagomartinho Automated User Interface Testing
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
+ User POV Black Box Testing Offload Testers
Slide 4
Slide 4 text
- Flaky Expensive Slow
Slide 5
Slide 5 text
Unit Integration UI
Slide 6
Slide 6 text
100x 10x x
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
Anti-Pattern
Slide 9
Slide 9 text
func testLogin() { application.launch() let loginButton = application.buttons["login"] loginButton.tap() wait(for: “label") label = application.labels[“label”] assertEqual("42", label.text) }
Slide 10
Slide 10 text
Objectives Robust Easy to write Easy to read
Slide 11
Slide 11 text
AAA Arrange Act Assert
Slide 12
Slide 12 text
UI Driver Application Acceptance Test
Slide 13
Slide 13 text
UI Driver Application Model Acceptance Test
Slide 14
Slide 14 text
Acceptance Test No tap, click, swipe No UI references Clear state and asserts
Slide 15
Slide 15 text
func testDeleteAllChannels() { model.enforce(state: .notEmptyChannelsList) model.deleteAllChannels() model.assert(condition: .emptyChannelsList) }
Slide 16
Slide 16 text
func testDeleteAllChannels() { model.enforce(state: .notEmptyChannelsList) model.deleteAllChannels() model.assert(condition: .emptyChannelsList) }
Slide 17
Slide 17 text
func testDeleteAllChannels() { model.enforce(state: .notEmptyChannelsList) model.deleteAllChannels() model.assert(state: .emptyChannelsList) }
Slide 18
Slide 18 text
UI Driver Application Model Acceptance Test
Slide 19
Slide 19 text
Application Model Represents our App Does not depend on the UI testing Framework
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
UI Driver Application Model Acceptance Test
Slide 24
Slide 24 text
UI Driver Drives the UI Knows nothing about our app Can be replaced
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
+ Knowledge Base Short and Robust Tests Framework Independent
Slide 29
Slide 29 text
Tiago Martinho @martinho_t tiagomartinho Thank you!