1. An automated software testing system for testing a running application from a viewpoint of user of a graphical user interface of the running application, comprising: a programmed processor; a plurality of meta-layer implementations, executed by the programmed processor, defining controls of the graphical user interface using algorithms, each of the meta-layer implementations receiving at least one abstraction layer object as input and generating a second at least one abstraction layer object as output responsive to the algorithm for at least one of an associated identity, property, collection or meta-object; and a plurality of declarative function modules for defining each algorithm for each of the plurality of meta-layer implementations, each of the plurality of declarative function modules encapsulating a predetermined result responsive to execution of the declarative function without providing any detail of how the predetermined result is achieved.