13. A method for generating test inputs for applying concolic testing in a program, the method comprising: receiving a program; performing a source-to-source transformation of the program; performing interpretation on the program based on a set of test input values; symbolically executing the program; recording a symbolic constraint for each of one or more conditional expressions encountered during execution of the program further comprising; for each variable occurrence in a Boolean control expression, creating a copy of the expression and setting all other variable occurrences in the expression to their concrete values from the execution, thereby generating a set of expressions where each expression in the set has only a single variable occurrence and each subexpression that does not depend on that variable is replaced with its concrete values; and including analyzing a string operation in the program to identify one or more possible execution paths, and generating symbolic inputs representing values of variables in each of the conditional expressions as a numeric expression and a string constraint including generating constraints on string values by modeling string operations using finite state transducers (FSTs) and supplying values from the program's execution in place of intractable sub-expressions; and generating new inputs to drive the program during a subsequent iteration based on results of solving the recorded string constraints; identifying a point of possible failure in the program, wherein the point includes a point where an API function is called to send a query to a database; and computing a backward slice from the point of failure, and wherein constraints are only recorded from the backward slice; adding all functions in which these points occur to a set of functions to be analyzed, wherein adding all functions comprises: resolving control dependencies by recording a stack trace at a beginning of a function call, and adding functions that called the function to the set of functions to be analyzed.
13. A method for generating test inputs for applying concolic testing in a program, the method comprising: receiving a program; performing a source-to-source transformation of the program; performing interpretation on the program based on a set of test input values; symbolically executing the program; recording a symbolic constraint for each of one or more conditional expressions encountered during execution of the program further comprising; for each variable occurrence in a Boolean control expression, creating a copy of the expression and setting all other variable occurrences in the expression to their concrete values from the execution, thereby generating a set of expressions where each expression in the set has only a single variable occurrence and each subexpression that does not depend on that variable is replaced with its concrete values; and including analyzing a string operation in the program to identify one or more possible execution paths, and generating symbolic inputs representing values of variables in each of the conditional expressions as a numeric expression and a string constraint including generating constraints on string values by modeling string operations using finite state transducers (FSTs) and supplying values from the program's execution in place of intractable sub-expressions; and generating new inputs to drive the program during a subsequent iteration based on results of solving the recorded string constraints; identifying a point of possible failure in the program, wherein the point includes a point where an API function is called to send a query to a database; and computing a backward slice from the point of failure, and wherein constraints are only recorded from the backward slice; adding all functions in which these points occur to a set of functions to be analyzed, wherein adding all functions comprises: resolving control dependencies by recording a stack trace at a beginning of a function call, and adding functions that called the function to the set of functions to be analyzed. 14. The method defined in claim 13 wherein resolving control dependencies comprises examining symbolic values and determining where branches terminate a function call, and further wherein adding those functions to the set of functions.