Good code must be both testable by its developers and usable in application test drivers and integration tests. We will explore and recommend approaches for designing APIs that result in both easily testable code and convenient interfaces for test drivers and integration tests. We will discuss specific techniques, simplified versions of examples from popular libraries such as BDE, and how to write generalized mocks.