1. A computer-implemented method comprising: receiving on a software development computer a test case written in a declarative form, the test case comprising at least one action, a parameter for the at least one action and a value for the parameter, the test case comprising an abstraction of a test intent independent of software implementation; reading the at least one action of the test case, the parameter and the value; matching a name of the at least one action of the test case with a name of a method on a class in a first library, wherein the first library is associated with a first implementation of software, assigning the value of the parameter of the at least one action of the test case to a value of a parameter of the method in the first library; executing the method in the first library to test the first implementation of the software on the software development computer; matching the name of the at least one action of the test case with a name of a method on a class in a second library, wherein the second library is associated with a second implementation of software, wherein the first implementation of software is different than the second implementation of software, wherein the second library is different than the first library, assigning the value of the parameter of the at least one action of the test case to a value of a parameter of the method in the second library; and executing the method in the second library to test the second implementation of the software, wherein at any given point during creation of the test case, the test case is associated with a schema, wherein the schema establishes a finite set of valid actions and a finite set of valid signatures for each valid action of the finite set of valid actions are available.