1. A method, comprising the computer-implemented steps of: receiving a set of objects associated with a computer program application under test; 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; and testing the application by (a) automatically navigating the finite state machine 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.