1. A method for generating tests for an implementation of a program to insure that the implementation conforms to a natural language and computer readable program specification that specifies the functions the program will have to fulfill, defines the types and uses of variables, defines parameters and their relationships, and other system requirements, the method being carried out in a processor and including the steps of: (1) accepting as an input the natural language and computer readable program specification, wherein data relationships are expressed in the program specification with predefined syntax and semantics; (2) parsing the program specification in accordance with said predefined syntax and semantics to generate data structures and relationships between the data structures which represent parameters and functionality expressed in the program specification; (3) modeling the program specification by transforming the parsed program specification according to said semantics into a finite state machine (FSM), which represents data relationships in the program specification and which includes at least a starting state, an ending state, a plurality of intermediate states, and a set of transitions defining conditions under which the FSM is traversed from a given state to a subsequent state; (4) generating a test specification comprised of a set of computer readable path files, wherein the path files are generated by traversing paths in the FSM, each path file defining a path beginning at the starting state and ending at the ending state and including a unique traversal of said set of transitions and intermediate states and defining data and variables for one test; (5) generating executable program code as an implementation of the program specification and derived from the FSM, wherein the program code is in the form of a program shell; and (6) generating executable test programs for testing the implementation of the program specification, each test program being generated by merging into a copy of the program shell one of said path files.