9870270 To test a piece of software, a set of possible inputs is selected, the software is executed on each of them, and the results are checked against the specification. This research addresses the following two issues involving the development of cost-effective testing techniques: evaluation of the effectiveness of existing testing techniques and development of efficient methods for checking test results against their specifications. The first provides data to help practitioners make informed choices between competing testing techniques; the second lowers the cost of testing certain types of programs, allowing more thorough testing within a given budget. The research on evaluation of cost-effectiveness of testing techniques is based on a probabilistic approach, since most testing techniques involve some random choice among alternatives. Models of cost are incorporated into several probabilistic measures of effectiveness. The work on checking test results focuses on testing data abstractions, an increasingly important kind of program unit. New techniques for partially checking test results are developed and their effectiveness is investigated analytically and through experimentation.***