Specification-based testing is important because it relates directly to what the program is supposed to do and can detect certain errors that are often not detected by traditional codebased testing techniques such as branch coverage and statement coverage. We have developed an automated testing tool, called ADLscope, that utilizes the formal specification of a program unit as the basis for test coverage measurement. A tester uses ADLscope to test Application Programmatic Interfaces (APIs) written inthe C programming language. The API must be formally specified in the Assertion Definition Language (ADL), a language developed at Sun Microsystems Laboratories. The tester uses ADLscope to generate coverage conditions from a program's ADL specifications. When the API is tested, ADL scope automatically measures how many of the coverage conditions have been covered by the tests. An uncovered condition usually means that certain aspects ofthe specification have not been thoroughly exercised by the implementation. The tester uses this information to develop new test data that exercise the uncovered conditions. In this paper, we focus on the following aspects of ADLscope: the design and implementation of ADLscope and the specification-based coverage metrics used in ADLscope.