A static analyzer for finding dynamic programming errors
Software—Practice & Experience
Symbolic execution and program testing
Communications of the ACM
An empirical study of regression test selection techniques
ACM Transactions on Software Engineering and Methodology (TOSEM)
Regression test selection for Java software
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Automated Software Engineering
Generative Programming for Embedded Systems
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
ACM '76 Proceedings of the 1976 annual conference
DART: directed automated random testing
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
CUTE: a concolic unit testing engine for C
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Generalizing symbolic execution to library classes
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Software Abstractions: Logic, Language, and Analysis
Software Abstractions: Logic, Language, and Analysis
Compositional dynamic test generation
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
JDiff: A differencing technique and tool for object-oriented programs
Automated Software Engineering
Kiasan/KUnit: Automatic Test Case Generation and Analysis Feedback for Open Object-oriented Systems
TAICPART-MUTATION '07 Proceedings of the Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION
DySy: dynamic symbolic execution for invariant inference
Proceedings of the 30th international conference on Software engineering
Incremental state-space exploration for programs with dynamically allocated data
Proceedings of the 30th international conference on Software engineering
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Differential symbolic execution
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Symbolic execution with abstraction
International Journal on Software Tools for Technology Transfer (STTT)
Directed Test Suite Augmentation
APSEC '09 Proceedings of the 2009 16th Asia-Pacific Software Engineering Conference
Generalized symbolic execution for model checking and testing
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Factors affecting the use of genetic algorithms in test suite augmentation
Proceedings of the 12th annual conference on Genetic and evolutionary computation
Exploiting program dependencies for scalable multiple-path symbolic execution
Proceedings of the 19th international symposium on Software testing and analysis
Symbolic PathFinder: symbolic execution of Java bytecode
Proceedings of the IEEE/ACM international conference on Automated software engineering
Test generation to expose changes in evolving programs
Proceedings of the IEEE/ACM international conference on Automated software engineering
Differential static analysis: opportunities, applications, and challenges
Proceedings of the FSE/SDP workshop on Future of software engineering research
Execution generated test cases: how to make systems code crash itself
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Repairing structurally complex data
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Model-based safety analysis of simulink models using SCADE design verifier
SAFECOMP'05 Proceedings of the 24th international conference on Computer Safety, Reliability, and Security
Symbolic execution for software testing in practice: preliminary assessment
Proceedings of the 33rd International Conference on Software Engineering
Statically validating must summaries for incremental compositional dynamic test generation
SAS'11 Proceedings of the 18th international conference on Static analysis
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 2012 International Symposium on Software Testing and Analysis
Computing and visualizing the impact of change with Java PathFinder extensions
ACM SIGSOFT Software Engineering Notes
Scaling symbolic execution using ranged analysis
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
SymDrive: testing drivers without devices
OSDI'12 Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation
Green: reducing, reusing and recycling constraints in program analysis
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Verifying systems rules using rule-directed symbolic execution
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Partition-based regression verification
Proceedings of the 2013 International Conference on Software Engineering
Detecting inconsistencies in wrappers: a case study
Proceedings of the 2013 International Conference on Software Engineering
Memoise: a tool for memoized symbolic execution
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
Regression tests to expose change interaction errors
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
KATCH: high-coverage testing of software patches
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Continuous test suite augmentation in software product lines
Proceedings of the 17th International Software Product Line Conference
Path exploration based on symbolic output
ACM Transactions on Software Engineering and Methodology (TOSEM) - Testing, debugging, and error handling, formal methods, lifecycle concerns, evolution and maintenance
Launching generic attacks on iOS with approved third-party applications
ACNS'13 Proceedings of the 11th international conference on Applied Cryptography and Network Security
Maintaining the health of software monitors
Innovations in Systems and Software Engineering
Hi-index | 0.00 |
The last few years have seen a resurgence of interest in the use of symbolic execution -- a program analysis technique developed more than three decades ago to analyze program execution paths. Scaling symbolic execution and other path-sensitive analysis techniques to large systems remains challenging despite recent algorithmic and technological advances. An alternative to solving the problem of scalability is to reduce the scope of the analysis. One approach that is widely studied in the context of regression analysis is to analyze the differences between two related program versions. While such an approach is intuitive in theory, finding efficient and precise ways to identify program differences, and characterize their effects on how the program executes has proved challenging in practice. In this paper, we present Directed Incremental Symbolic Execution (DiSE), a novel technique for detecting and characterizing the effects of program changes. The novelty of DiSE is to combine the efficiencies of static analysis techniques to compute program difference information with the precision of symbolic execution to explore program execution paths and generate path conditions affected by the differences. DiSE is a complementary technique to other reduction or bounding techniques developed to improve symbolic execution. Furthermore, DiSE does not require analysis results to be carried forward as the software evolves -- only the source code for two related program versions is required. A case-study of our implementation of DiSE illustrates its effectiveness at detecting and characterizing the effects of program changes.