Good
Fast
Cheap
Good
Fast
Cheap
C_______
E____
R_____
C_______
E____
R_____
"You need the monitoring system to be substantially more reliable than the failure prone system or you don't gain reliability, just complexity."
- some reddit user
Tests must be more reliable than the code being tested
(that's surprisingly hard to do)
How do you test that a car starts?
What does it take to run your test?
A fully working car!
How do you test a website works?
What does it take to run your test?
A fully working website!
C_______
E____
R_____
C_______
E____
R_____
Confidence
E____
R_____
"Come, make UI testing work for us!"
AKA, the start of the End-to-End Death Spiral
"Why are our tests always failing?"
Many layers = difficulty pinpointing change
"Getting behind the aircraft"
"Nice to have, but not for us"
Because testing was not properly invested in...
Confidence
E____
R_____
Confidence
E____
Reliability
High Confidence, High Reliability
Confidence
Easy
Reliability
Test the server on the server, not the browser
Treat back-end as black box
UI tests only check that user actions "work"
Confidence
Easy
Reliability
GUI Based test tools
Confidence
Easy
Reliability
Confidence
Easy
Reliability
Confidence
Easy
Reliability
Confidence
Easy
Reliability