If the software is designed with testability in mind, it will more than likely be tested. When software is testable, we can verify its functionality, measure progress while developing it, and change it safely. In the end, the result is fast and reliable delivery.
Testability can be broken down into the following components:
Observability—Observe the tested program element in order to verify that it actually passes the test.
Controllability—Set the tested program element in a state expected by the test.
Smallness—The smaller the system or program element—with respect to the number of features and the size of the codebase—the less to test.