1. A computerized method for generating inputs for testing computer programs, the method comprising: receiving test domain information; generating a test input according to received test domain information; invoking a predicate on the test input; and summing costs assigned to data elements of the test input.