Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2771783.2771806acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Enhancing reuse of constraint solutions to improve symbolic execution

Published: 13 July 2015 Publication History
  • Get Citation Alerts
  • Abstract

    Constraint solution reuse is an effective approach to save the time of constraint solving in symbolic execution. Most of the existing reuse approaches are based on syntactic or semantic equivalence of constraints. For example, the Green framework can reuse constraints which have different representations but are semantically equivalent, through canonizing constraints into syntactically equivalent normal forms. KLEE reuses constraints based on subset/superset querying. However, both equivalence-based approach and subset/superset-based approach cannot cover some kinds of reuse where atomic constraints are not equivalent. Our approach, called GreenTrie, is an extension to the Green framework, which supports constraint reuse based on the logical implication relations among constraints. GreenTrie provides a component, called L-Trie, which stores constraints and solutions into tries, indexed by an implication partial order graph of constraints. L-Trie is able to carry out logical reduction and logical subset and superset querying for given constraints, to check for reuse of previously solved constraints. We report the results of an experimental assessment of GreenTrie against the original Green framework and the KLEE approach, which shows that our extension achieves better reuse of constraint solving result and saves significant symbolic execution time.

    References

    [1]
    James C. King. Symbolic execution and program testing. Communications of the ACM, 19(7):385–394, July 1976.
    [2]
    Ella Bounimova, Patrice Godefroid, and David Molnar. Billions and billions of constraints: whitebox fuzz testing in production. In Proceedings of the 2013 International Conference on Software Engineering, pages 122–131. IEEE Press, May 2013.
    [3]
    Thanassis Avgerinos, Alexandre Rebert, Sang Kil Cha, and David Brumley. Enhancing Symbolic Execution with Veritesting. In Proceedings of the 36th International Conference on Software Engineering - ICSE 2014, pages 1083–1094, Hyderabad, May 2014.
    [4]
    ACM Press.
    [5]
    Cristian Cadar and Koushik Sen. Symbolic execution for software testing: three decades later. Communications of the ACM, 56(2):82–90, 2013.
    [6]
    Corina S. Pasareanu and Willem Visser. A survey of new trends in symbolic execution for software testing and analysis. International Journal on Software Tools for Technology Transfer, 11(4):339–353, August 2009.
    [7]
    Saswat Anand. Techniques to facilitate symbolic execution of real-world programs. PhD thesis, Georgia Institute of Technology, 2012.
    [8]
    Koushik Sen, Darko Marinov, and Gul Agha. CUTE: A concolic unit testing engine for C. In Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering - ESEC/FSE-13, pages 263–272, New York, USA, September 2005. ACM Press.
    [9]
    Cristian Cadar, Vijay Ganesh, Peter M. Pawlowski, David L. Dill, and Dawson R. Engler. EXE:automatically generating inputs of death. In Proceedings of the 13th ACM conference on Computer and communications security, page 322, New York, USA, October 2006. ACM Press.
    [10]
    Cristian Cadar, Daniel Dunbar, and Dawson R Engler. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In Proceedings of USENIX Symposium on Operating Systems Design and Implementation, OSDI, pages 209–224. USENIX Association Berkeley, 2008.
    [11]
    Willem Visser, Jaco Geldenhuys, and Matthew B. Dwyer. Green: reducing, reusing and recycling constraints in program analysis. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering - FSE ’12 (2012), pages 1–11. ACM Press, 2012.
    [12]
    Guowei Yang, Corina S. Pasareanu, and Sarfraz Khurshid. Memoized symbolic execution. In Proceedings of the 2012 International Symposium on Software Testing and Analysis - ISSTA 2012, page 144, New York, New York, USA, 2012. ACM Press.
    [13]
    Jeremy Zawodny. Redis: Lightweight key/value store that goes the extra mile. Linux Magazine, 79, 2009.
    [14]
    Sarmad Makhdoom, Muhammad Adeel Khan, and Junaid Haroon Siddiqui. Incremental symbolic execution for automated test suite maintenance. In Proceedings of the 29th ACM/IEEE international conference on Automated software engineering - ASE ’14, pages 271–276, New York, USA, September 2014.
    [15]
    ACM Press.
    [16]
    Md. Hossain, Hyunsook Do, and Ravi Eda. Regression Testing for Web Applications Using Reusable Constraint Values. In Proceedings of 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation Workshops, pages 312–321. IEEE, March 2014.
    [17]
    Meixian Chen. Reusing constraint proofs for scalable program analysis. In Proceedings of the 2014 International Symposium on Software Testing and Analysis - ISSTA 2014, pages 449–452, New York, USA, July 2014. ACM Press.
    [18]
    F. Bodon and L. Rónyai. Trie: An alternative data structure for data mining algorithms. Mathematical and Computer Modelling, 38(7-9):739–751, October 2003.
    [19]
    Sally C Brailsford, Chris N Potts, and Barbara M Smith. Constraint satisfaction problems: Algorithms and applications. European Journal of Operational Research, 119(3):557–581, 1999.
    [20]
    Clark Barrett and Cesare Tinelli. CVC3. In Proceedings of the 19th International Conference on Computer Aided Verification, pages 298–302, Berlin, Germany, 2007. Springer.
    [21]
    Bruno Dutertre and Leonardo de Moura. A fast linear-arithmetic solver for DPLL(T). In Thomas Ball and Robert B. Jones, editors, Proceedings of 18th International Conference on Computer Aided Verification-CAV’2006, volume 4144 of Lecture Notes in Computer Science, pages 81–94, Berlin, Heidelberg, August 2006. Springer Berlin Heidelberg.
    [22]
    Pietro Braione, Giovanni Denaro, and Mauro Pezzè. Enhancing symbolic execution with built-in term rewriting and constrained lazy initialization. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering - ESEC/FSE 2013, pages 411–421, New York, USA, 2013. ACM Press.
    [23]
    Corina S. Pasareanu, Willem Visser, David Bushnell, Jaco Geldenhuys, Peter Mehlitz, and Neha Rungta. Symbolic PathFinder: integrating symbolic execution with model checking for Java bytecode analysis. Automated Software Engineering, 20(3):391–425, February 2013.
    [24]
    Saswat Anand, Corina S. Pasareanu, and Willem Visser. JPF-SE: a symbolic execution extension to Java PathFinder. In the 13th international conference on Tools and algorithms for the construction and analysis of systems, pages 134–138. Springer-Verlag, March 2007.
    [25]
    Tao Xie, Darko Marinov, Wolfram Schulte, and David Notkin. Symstra: a framework for generating object-oriented unit tests using symbolic execution. In the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems-TACAS’05, volume 3440, pages 365–381, Berlin, Heidelberg, April 2005. Springer Berlin Heidelberg.
    [26]
    Jaco Geldenhuys, Matthew B. Dwyer, and Willem Visser. Probabilistic symbolic execution. In Proceedings of the 2012 International Symposium on Software Testing and Analysis - ISSTA 2012, pages 166–176, New York, USA, July 2012. ACM Press.
    [27]
    Patrice Godefroid. Compositional Dynamic Test Generation. In Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL ’07, pages 47–54, New York, New York, USA, 2007. ACM.
    [28]
    Saswat Anand, Patrice Godefroid, and Nikolai Tillmann. Demand-driven compositional symbolic execution. In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems -TACAS ’08, pages 367–381. Springer, 2008.
    [29]
    Carlo Ghezzi, Amir Molzam Sharifloo, and Claudio Menghi. Towards Agile Verification. In Perspectives on the Future of Software Engineering, chapter Towards Ag, pages 31–47. Springer, 2013.
    [30]
    Carlo Ghezzi, Claudio Menghi, Amir Molzam Sharifloo, and Paola Spoletini. On requirement verification for evolving Statecharts specifications. Requirements Engineering, 19(3):231–255, 2014.
    [31]
    Domenico Bianculli, Antonio Filieri, Carlo Ghezzi, and Dino Mandrioli. Syntactic-semantic incrementality for agile verification. Science of Computer Programming, 97:47–54, January 2015.

    Cited By

    View all
    • (2024)Partial Solution Based Constraint Solving Cache in Symbolic ExecutionProceedings of the ACM on Software Engineering10.1145/36608171:FSE(2493-2514)Online publication date: 12-Jul-2024
    • (2023)Triereme: Speeding up hybrid fuzzing through efficient query schedulingProceedings of the 39th Annual Computer Security Applications Conference10.1145/3627106.3627173(56-70)Online publication date: 4-Dec-2023
    • (2023)Automated and Efficient Test-Generation for Grid-Based Multiagent Systems: Comparing Random Input Filtering versus Constraint SolvingACM Transactions on Software Engineering and Methodology10.1145/362473633:1(1-32)Online publication date: 23-Nov-2023
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ISSTA 2015: Proceedings of the 2015 International Symposium on Software Testing and Analysis
    July 2015
    447 pages
    ISBN:9781450336208
    DOI:10.1145/2771783
    • General Chair:
    • Michal Young,
    • Program Chair:
    • Tao Xie
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    In-Cooperation

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 13 July 2015

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. cache and reuse
    2. constraint solving
    3. symbolic execution

    Qualifiers

    • Research-article

    Funding Sources

    Conference

    ISSTA '15
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 58 of 213 submissions, 27%

    Upcoming Conference

    ISSTA '24

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)39
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Partial Solution Based Constraint Solving Cache in Symbolic ExecutionProceedings of the ACM on Software Engineering10.1145/36608171:FSE(2493-2514)Online publication date: 12-Jul-2024
    • (2023)Triereme: Speeding up hybrid fuzzing through efficient query schedulingProceedings of the 39th Annual Computer Security Applications Conference10.1145/3627106.3627173(56-70)Online publication date: 4-Dec-2023
    • (2023)Automated and Efficient Test-Generation for Grid-Based Multiagent Systems: Comparing Random Input Filtering versus Constraint SolvingACM Transactions on Software Engineering and Methodology10.1145/362473633:1(1-32)Online publication date: 23-Nov-2023
    • (2023)Intelligent Constraint Classification for Symbolic Execution2023 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER56733.2023.00023(144-154)Online publication date: Mar-2023
    • (2023)Better Predicates and Heuristics for Improved Commutativity SynthesisAutomated Technology for Verification and Analysis10.1007/978-3-031-45332-8_5(93-113)Online publication date: 19-Oct-2023
    • (2023)Adaptive solving strategy synthesis for symbolic executionJournal of Software: Evolution and Process10.1002/smr.2568Online publication date: 11-May-2023
    • (2022)FastKLEE: faster symbolic execution via reducing redundant bound checking of type-safe pointersProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3558919(1741-1745)Online publication date: 7-Nov-2022
    • (2022)SymTunerProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510185(2068-2079)Online publication date: 21-May-2022
    • (2022)Efficient Summary Reuse for Software Regression VerificationIEEE Transactions on Software Engineering10.1109/TSE.2020.302147748:4(1417-1431)Online publication date: 1-Apr-2022
    • (2022)Optimal Refinement-based Array Constraint Solving for Symbolic Execution2022 29th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC57359.2022.00042(299-308)Online publication date: Dec-2022
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media