A test domain configuration module generates graphical user interfaces for
identifying information about desired tests such as data types and domain
configurations, and collects information used by other modules to
generate tests. The identified information may include, for example, an
abstract syntax, a static semantic, max counts on instances of data
types, or costs of field accesses or data types for max path costs or max
expression costs. A test input generator, generates test input for the
identified and configured data types. In one case, the generated test
inputs are generated as tree data structures. A predicate determines
whether a generated test input follows semantic conditions. A test input
evaluator counts instances of data types in, sums paths through, or sums
total costs of, the generated test inputs. A test acceptance module saves
test inputs acceptable to the predicate and the test input evaluator.