15. A machine for testing and validating a software application under test, the machine defining a computer, the computer having a processor and a non-transitory memory thereon, the computer further comprising: a computer program product operable on the computer and stored in the non-transitory computer memory for testing and validating software, the computer program product performing a process of building an abstract model of a software application under test and a process of testing at least one region of the software under test, the computer program product comprising the instructions of: enabling a user to define at least one specific region of the software application under test by tagging at least one hierarchical element and at least one child region of the specific region by tagging at least one child element of the at least one hierarchical element; enabling a user to tag test objects within the software application under test; building the abstract model using hierarchical elements, child elements and test objects, the hierarchical elements, child elements and test objects indexing at least one object in the at least one region of the software under test; executing a test script to test the at least one object in the at least one region by navigating the abstract model using one or more of the following: a hierarchical element, a child element, and a test object; altering the software application under test by relocating or redefining the at least one region of the software application under test; and re-executing the test strip to test the at least one object in the at least one region by navigating the abstract model using one or more of the following: the hierarchical element, the child element, and the test object, the re-executing performed without regeneration of the abstract model.
21. A machine according to claim 15 , wherein the software application under test is programmed in one of HTML, XML, XHTML, CHTML, or XAML.