This paper presents a specification-based testing approach that compares software specifications defined at different levels of abstraction, e.g.  architecture and implementation, against specified system goals.  We believe that a goal-driven approach that connects several development artifacts through verification of specified goals provides useful traceability links between those artifacts as well as an ecient testing technique.  Our approach begins with a system goal graph in which high-level goals are step-wise refined into low-level functional goals that can be realized as code components.  Each of the architectural components is associated with a plan that describes the component’s functional behavior.  Source code is annotated with goals from plans and events that achieve the goals; code is then precompiled to emit those goals and events at run time.  Plans are automatically translated into a rule-based recognizer.  An oracle is produced from the pre- and post-conditions associated with the plan’s goals.  When the program executes, the goals and events emitted are automatically tested against the plans and expected results.  As components achieve their component-level plans, a higher-level plan recognizer, concerned with the integration of components, can verify correct system behavior over the interaction trace of a collection of lower-level plans.  A small example illustrates the concept.