Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs
AssigneeParasoft Corporation
InventorsAdam K. Kolawa, Roman Salvador
Life of this patent
Estimating the term…
Loading patent…
AssigneeParasoft Corporation
InventorsAdam K. Kolawa, Roman Salvador
Estimating the term…
A method and system for generating a test suite for a computer program written in the JAVA programming language. The JAVA program comprises program statements and program variables represented as JAVA source code and compiled by a JAVA compiler into JAVA bytecodes, including at least one input statement having one or more input variables, that are grouped into code blocks and stored in a program database. The test suite comprises sets of inputs. Each of the sets of inputs corresponds to a pth in the program. The program statements corresponding to a candidate code block are read from the program database. Each of the input variables for each input statement and each of the program variables that depend on them are represented in symbolic form as a symbolic memory value and transforming each program statement dependent on such an input variable into a symbolic expression. A trial set of inputs for each of the input statements is created by finding a solution to the symbolic expression obtained using dynamic symbolic execution. The trial set of inputs are stored into the test suite if coverage of the candidate code block was obtained. A dynamic symbolic execution consists of a symbolic execution of the program performed along the path that corresponds to the trial set of actual inputs. The first input to the program is generated randomly. From that first input, inputs satisfying any coverage criteria can be obtained by performing the above procedure iteratively.
A system for generating a test suite for use in testing a computer program written in the JAVA progamming language, the computer program having been compiled by a JAVA compiler into JAVA bytecodes, comprising:
A method using a computer for generating a test suite for a computer program written in the JAVA programming language, the computer program comprising program statements and program variables and being represented as JAVA bytecodes after being compiled by a JAVA compiler, the computer program including at least one input statement having one or more input variables, grouped into code blocks, the test suite comprising sets of inputs, each of the sets of inputs corresponding to each of the input statements, comprising the steps of:
A system for generating a test suite for a computer program written in the JAVA programming language, the computer program comprising program statements and program variables and represented as JAVA bytecodes after being compiled by a JAVA compiler, the computer program including at least one input statement having one or more input variables, grouped into code blocks and stored in a program database, the test suite comprising sets of inputs, each of the sets of inputs corresponding to each of the input statements, comprising:
A method of operating a computer system for performing dynamic symbolic execution by a symbolic virtual machine of a computer program written in the JAVA programming language and represented as JAVA bytecodes after being compiled by a JAVA compiler, the computer system having a memory, the method comprising the steps of:
A computer-implemented method of detecting runtime errors in a computer program written in the JAVA programming language, the computer program being represented by JAVA bytecodes after being compiled by a JAVA compiler, the computer-implemented method comprising the steps of:
A computer-implemented method of generating a test suite for a module of an incomplete application program written in the JAVA programming language having undefined external references or a missing main method, the application program being represented by JAVA bytecodes after being compiled by a JAVA compiler, the computer-implemented method comprising the steps of:
A computer-implemented method of inserting instrumentation information into JAVA bytecodes produced by compiling a computer program written in the JAVA programming language, comprising the steps of:
Dependencies are inferred from the claim text.