Acceptance Testing !
The secret to fast, r0ck-solid, automated acceptance tests.
@paulstringer
Slide 2
Slide 2 text
Two Kinds Of Tests
Verify your code is correct
Validate you wrote the right code
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
“Defect Avoidance is more
powerful than defect removal”
– Levendal (1990)
Slide 5
Slide 5 text
iOS Acceptance Testing
Appium
Kif
Subliminal
Zuchinni
Calabash
Frank
UIAutomation
Cucumber
XCUITest
Slide 6
Slide 6 text
•Doesn’t scale (slow, fragile, complex)
•Very hard to exercise all business logic
•Very poor defect localisation
•Customer doesn’t write or read them
•Abandoned, revert to manual testing
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
BDD / ATDD
Executable
Specifications
Automated
Tests
Living
Documentation
Slide 9
Slide 9 text
“Are you doing BDD? Or are you
just using Cucumber?”
– Aslak Hellesøy
Slide 10
Slide 10 text
Courtesy of Aslak Hellesøy, - cucumber.io
Slide 11
Slide 11 text
Plan, Read, Write, Execute requirements
Works across platforms (Mac, iOS, Android)
An alternative, first UI to your App
Fully integrated standalone wiki and
acceptance testing framework
Slide 12
Slide 12 text
Demo
Slide 13
Slide 13 text
FitNesse
Fixtures System
Instructions
Web
Browser
UIKit
Views
View
Controllers
System
Touch Events
Human
Responses
Updates
CI
FitNesse
FitNesse
YourAcceptanceTests.App
Your.App
Slide 14
Slide 14 text
Clean Architecture
Affords the ability to independently validate behaviour separate from
annoying implementation details (e.g. Databases, Network or UI)
Slide 15
Slide 15 text
Final Thoughts
ATDD/BDD is the practice of customers writing the tests
Fully understanding requirements early saves effort later
Non UI based testing is fast, reliable and scales
Helps improve collaboration and understanding across
team and most importantly with the customer.
Good choice for long-term, complex software