1. A computer-implemented method of testing a target program using a symbolic test, the method comprising: creating a symbolic test that specifies a behavior of the target program's environment and a family of target program inputs for which to test the target program, wherein the symbolic test includes a call to a symbolic testing application programming interface (API) and a primitive provided by the symbolic testing API that designates data as being symbolic; compiling the symbolic test with the target program; and using a symbolic execution engine to execute the compilation of the symbolic test and the target program.