Great question, I'm also interested in the authors' answer.
From my experience, decoupling the layers in an application is the key to making your code testable. For instance, in an MVC style web application, don't pass the HTTPServletRequest outside of your Controller (e.g. action class in struts) or you will make it more difficult to unittest your Model etc.
Really interested to hear if you book addresses such issues.
TDD is a great way to develop emerging design. If the tests are written first, the design will naturally evolve. We are not experts in TDD, but can recommend good books on the subject. SDD (story driven development) will help ensure the code addresses business value and we talk about that. It also helps to build testability into the code.
We also cover automated testing in the correct layer, which is what I believe Paul is refering to. For example, if your tests can touch the API layer without going through the GUI, then the tests will be more robust and less fragile.
Co-author, with Lisa Crispin: Agile Testing: A Practical Guide for Testers and Agile Teams (Addison-Wesley, 2009) www.janetgregory.ca