Designing Software For Testability: A forgotten design pattern
Designing for Testability - Rohit Nayak