1. A method for automated software testing and validation comprising: identifying a software application under test (AUT), the AUT including processes, each process having at least one user interface display; learning, for at least one process in the AUT, a test thread tree corresponding to the user interface displays in the process, each of the interface displays having at least one data object; generating, from the test thread tree, a grid enumerating a plurality of test cases indicative of the data objects in the process; and generating, from the test thread tree, a script indicative of the plurality of test cases, the script operable to be executed by a test engine.