This document discusses factors that affect testability and strategies for improving testability. It defines testability as the ability to produce tests to verify complex systems. Higher testability allows for more effective testing with the same resources. The document identifies controllability and observability as the main factors that determine a system's testability. It provides examples of how characteristics like complexity, non-determinism, and lack of visibility into state diminish testability. Techniques for improving testability include adding points of control and observation, using state test helpers, building tests into the system, and designing for well-structured and deterministic code.