1. A method, comprising the computer-implemented steps of: receiving a set of objects associated with a computer program application under test; prior to testing the application, automatically classifying the objects as state objects representing states of the application, or transition objects representing transitions in the application from one state to another state, or static information objects; linking the state objects with the transition objects to result in creating a model in memory of all states and transitions provided by the application; associating, in the model, one or more tests with one or more of the state objects; creating and storing, based on the states and transitions, a finite state machine that represents execution behavior of the application according to the model; selecting a set of states or transitions associated with application behavior that is unwanted for testing; testing the application by (a) automatically navigating the states and transitions of the finite state machine which are not in the set of states or transitions that are unwanted for testing and (b) providing state and transition data from the finite state machine to a graphical user interface functional test application that executes the one or more tests upon reaching the states represented by the state objects; wherein the set of objects are graphical user interface (GUI) objects and the automatically classifying comprises analyzing a GUI map; wherein the GUI map stores information about elements generated by the application based at least in part on information about states of the application, transitions in the application from one state to another state, or static information objects; wherein the method is performed by one or more computing devices.