1. A method for software testing and validation comprising the computer implemented steps of: identifying a software application under test (SAUT); generating, from the SAUT, an abstract model of at least one region of the SAUT, the abstract model including data which allows a test script to adapt to the nature of the SAUT; and testing the at least one region of the SAUT with the test script, wherein the test script utilizes the abstract model to conduct the testing.