Constraint-Based Automatic Test Data Generation
IEEE Transactions on Software Engineering
Simplification by Cooperating Decision Procedures
ACM Transactions on Programming Languages and Systems (TOPLAS)
Art of Software Testing
Introduction to Algorithms
Test input generation for java containers using state matching
Proceedings of the 2006 international symposium on Software testing and analysis
Using model checking with symbolic execution to verify parallel numerical programs
Proceedings of the 2006 international symposium on Software testing and analysis
Differential symbolic execution
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
EXE: Automatically Generating Inputs of Death
ACM Transactions on Information and System Security (TISSEC)
A few billion lines of code later: using static analysis to find bugs in the real world
Communications of the ACM
Electronic Notes in Theoretical Computer Science (ENTCS)
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Pex: white box test generation for .NET
TAP'08 Proceedings of the 2nd international conference on Tests and proofs
KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Symbolic PathFinder: symbolic execution of Java bytecode
Proceedings of the IEEE/ACM international conference on Automated software engineering
Directed incremental symbolic execution
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Practical, low-effort equivalence verification of real code
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
An Analysis and Survey of the Development of Mutation Testing
IEEE Transactions on Software Engineering
SAGE: whitebox fuzzing for security testing
Communications of the ACM
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Probabilistic symbolic execution
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Reliability analysis in symbolic pathfinder
Proceedings of the 2013 International Conference on Software Engineering
Precision reuse for efficient regression verification
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Multi-solver support in symbolic execution
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Maintaining the health of software monitors
Innovations in Systems and Software Engineering
User-defined backtracking criteria for symbolic execution
ACM SIGSOFT Software Engineering Notes
Hi-index | 0.00 |
The analysis of constraints plays an important role in many aspects of software engineering, for example constraint satisfiability checking is central to symbolic execution. However, the norm is to recompute results in each analysis. We propose a different approach where every call to the solver is wrapped in a check to see if the result is not already available. While many tools use some form of results caching, the novelty of our approach is the persistence of results across runs, across programs being analyzed, across different analyses and even across physical location. Achieving such reuse requires that constraints be distilled into their essential parts and represented in a canonical form. In this paper, we describe the key ideas of our approach and its implementation, the Green solver interface, which reduces constraints to a simple form, allows for reuse of constraint solutions within an analysis run, and allows for recycling constraint solutions produced in one analysis run for use in other analysis runs. We describe how we integrated Green into two existing symbolic execution tools and demonstrate the reuse we achieve in the different settings.