Testable software has two inherent properties –
observability and controllability. Observability facilitates observation
of internal behavior of software to required degree of detail.
Controllability allows creation of difficult-to-achieve states prior to
execution of various tests. In this paper, we describe COTT, a
Controllability and Observability Testing Tool, to create testable
object-oriented software. COTT provides a framework that helps the
user to instrument object-oriented software to build the required
controllability and observability. During testing, the tool facilitates
creation of difficult-to-achieve states required for testing of difficultto-
test conditions and observation of internal details of execution at
unit, integration and system levels. The execution observations are
logged in a test log file, which are used for post analysis and to
generate test coverage reports.=""