1. A method for software testing and validation comprising the 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 that facilitates adaptation of a test script to the SAUT when changes are made to the SAUT; testing at least one object in the at least one region of the SAUT with the test script, the test script utilizing the abstract model to conduct the testing; altering the SAUT, the altering comprising one or more of the following: relocating the at least one region of the SAUT and redefining the at least one region of the SAUT; and re-executing the test script to test the at least one object in the at least one region by navigating the abstract model, the re-executing performed without regeneration of the abstract model.