Patent ID: 8997064
Filing Date: 2015-03-31
Classification: G06F

Abstract:
1. A method of testing software, the method comprising: accessing software comprising a plurality of execution paths that each include one or more branching points; concretely executing the software using a first plurality of concrete inputs to traverse a first execution path of the plurality of execution paths of the software and using a second plurality of concrete inputs to traverse a second execution path of the plurality of execution paths of the software; capturing concrete execution results produced from concretely executing the software using the first and second pluralities of concrete inputs to generate a first path condition formula based on at least a portion of one of the first and second traversed execution paths of the software, the concrete execution results produced without solving a path condition formula for either of the first and second execution paths and indicating software statements traversed by the first and second execution paths of the software; and after capturing the concrete execution results using the first and second pluralities of concrete inputs, symbolically executing the software using one or more symbolic inputs based on the concrete execution results such that the concrete execution of the first and second execution paths and the symbolic execution are performed sequentially and not in parallel, wherein the symbolic execution comprises: for a first portion of one of the plurality of execution paths encountered during symbolic execution of the software: