Design for testability in object-oriented systems

estability is the relative ease and expense of revealing software faults. This article maps the testability terrain for object-oriented development to assist the reader in finding relatively shorter and cheaper paths to high reliability. Software testing adds value by revealing faults. It is fundamentally an economic problem characterized by a continuum between two goals. A reliability -dtiven process uses testing to produce evidence that a pre-release reliability goal has been met. Time and money are expended on testing until the reliability goal is attained. This view of testing is typically associated with stringent, quantifiable reliability requirements. Other things being equal, a more testable system will reduce the time and cost needed to meet reliability goals. A resource-limited process views testing as a way to remove as many rough edges from a system as time or money permits. Testing continues until available test resources have been expended. Measurement of test adequacy or system reliability are incidental to the decision to release the system. This is the typical view of testing. Other things being equal, a more testable system provides increased reliability for a fixed testing budget.