1. A computer-implemented method for analyzing an application comprising a plurality of code fragments, and where the application requires user input and interacts with persistent state, the computer-implemented method comprising: generating an initial input and persistent state of an environment in which at least a portion of the code fragments are executing, wherein the persistent state is a configuration of information in the environment that outlives an execution of the application; executing the at least a portion of the code fragments that comprise the application with the initial input starting from the persistent state and associating execution information with the code fragments that have been executed; recording usage of persistent state by the code fragments that have been executed; examining at least one execution characteristics that these code fragments exhibited on execution; and generating additional user inputs for the application based on the execution information associated with the fragments that have been executed, and based on the execution characteristics which have been examined, and the usage of persistent state that has been recorded.