End-to-end (E2E) testing is one of the more common approaches to testing software, but it is complex, fragile expensive and low quality. As soon as we accept that the best way to test our system is to deploy it all together, with everything else that it interacts with and then try broad-brush interactions with the whole lot, we have lost control.
To do a great job of testing software, we need much finer-grained control, and so we need to reject E2E testing. Great automated testing depends on us controlling the variables, and Acceptance Test-Driven Development (ATDD), Test-Driven Development (TDD) and Behavior-Driven Development (BDD) rely on our ability to synthesize inputs and collect outputs from our system so that we can test it. E2E testing stops us from doing that.
In this video, Dave Farley, author of best-selling books “Continuous Delivery” and “Modern Software Engineering”, discusses the problems of end-to-end testing and how best to overcome them with a more effective and more efficient approach.
Video producer: https://gotocon.com/
Interesting take on E2E testing! It’s refreshing to see a focus on alternatives like ATDD or TDD instead. I always thought E2E testing was the go-to for ensuring comprehensive coverage, but your perspective makes a lot of sense. Especially liked how you explained the need for finer control over variables.