Gerard Meszaros, Consultant
By using effective automated testing (A.K.A. checking) applications can be evolved more safely as developers add functionality. But the structures of most software systems make it hard to automate tests in a way that doesn’t lead to fragile tests.
By preparing automated tests before building the functionality, we can force testability/checkability into the software architecture thereby making test automation both faster and less fragile. As a side benefit, it improves our software design by making it more modular (by making each part of the application testable in isolation).
Modular automated tests have worked well on projects where we have used this approach. It has led to less rework (because the automated tests describe what a successful outcome looks like) and less effort spent on automation. With legacy systems we have been able to drive the evolution of the architecture in a favorable direction by using automated tests for new (or even existing) functionality.
Example Driven Architecture is a people and process solution that can be applied to pretty well any system or application as long as we start early enough to influence the architecture.
Target audience: x