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. 18. The method defined in claim 13 wherein recording a constraint results in selective recording of constraints for scaling beyond single functions.