eXtreme Architecture and Design for Test
eXtreme programming emphasizes test-first coding-you write the tests before writing the implementation code. You can apply the same approach in design when developing a complex system, including an architecture to support testing. To be successful, systems developed with agile methods must support a high level of testability and test automation. For large distributed systems, more sophisticated testing is needed to help determine which components may be contributing to failures. For such complex systems, you should architect the system for testing rather than add testing functionality as an afterthought. Ken Pugh presents a framework that employs polymorphic-style internal and external interface patterns to ease the work of testing and debugging. He also covers adding test-only functionality, test-only outputs, and test-only logging to interfaces. Take away a new appreciation and concrete design patterns for building test support into your software by design.
- An architectural framework for test automation throughout the software lifecycle
- Implementing test points in interfaces for long-term testability
- Think test-first in design to speed up development and simplify testing