The usefulness of software monitors in testing large programs is discussed. Several types of testing strategies based on the use of monitors are surveyed. Since there is a computational overhead involved in employing monitors, attempts are made to minimize the number of monitors employed. This optimisation problem is formulated and analyzed in graph theoretic terms. Implementation aspects are considered through both discussion and examples.