skip to main content
10.1145/2245276.2231988acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Staged symbolic execution

Published:26 March 2012Publication History

ABSTRACT

Recent advances in constraint solving technology and raw computation power have led to a substantial increase in the effectiveness of techniques based on symbolic execution for systematic bug finding. However, scaling symbolic execution remains a challenging problem.

We present a novel approach to increase the efficiency of symbolic execution for systematic testing of object-oriented programs. Our insight is that we can apply symbolic execution in stages, rather than the traditional approach of applying it all at once, to compute abstract symbolic inputs that can later be shared across different methods to test them systematically. For example, a class invariant can provide the basis of generating abstract symbolic tests that are then used to symbolically execute several methods that require their inputs to satisfy the invariant. We present an experimental evaluation to compare our approach against KLEE, a state-of-the-art implementation of symbolic execution. Results show that our approach enables significant savings in the cost of systematic testing using symbolic execution.

References

  1. V. Adve et al. LLVA: A Low-level Virtual Instruction Set Architecture. In Proc. MICRO-36, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Anand et al. Symbolic Execution with Abstraction. Int. J. Softw. Tools Technol. Transf., 11, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. C. Boyapati et al. Korat: Automated Testing based on Java Predicates. In Proc. ISSTA, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. W. R. Bush et al. A Static Analyzer for Finding Dynamic Programming Errors. Softw. Pract. Exper., 30(7), 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Cadar and D. Engler. Execution Generated Test Cases: How to make systems code crash itself. In Proc. SPIN, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Cadar et al. EXE: Automatically Generating Inputs of Death. In Proc. CCS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. C. Cadar et al. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In Proc. OSDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. L. A. Clarke. Test Data Generation and Symbolic Execution of Programs as an aid to Program Validation. PhD thesis, University of Colorado at Boulder, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. B. Daniel et al. Automated Testing of Refactoring Engines. In Proc. ESEC/FSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. H. Do and G. Rothermel. On the Use of Mutation Faults in Empirical Assessments of Test Case Prioritization Techniques. IEEE Trans. Softw. Eng., 32, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. J. P. Galeotti et al. Analysis of Invariants for Efficient Bounded Verification. In Proc. ISSTA, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Gligoric et al. Test Generation through Programming in UDITA. In Proc. ICSE, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. P. Godefroid. Compositional Dynamic Test Generation. In Proc. POPL, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. P. Godefroid et al. DART: Directed Automated Random Testing. In Proc. PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. Godefroid et al. Automated Whitebox Fuzz Testing. In Proc. NDSS, 2008.Google ScholarGoogle Scholar
  16. D. Jackson. Software Abstractions: Logic, Language, and Analysis. The MIT Press, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. S. Khurshid et al. Generalized Symbolic Execution for Model Checking and Testing. In Proc. TACAS, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. C. King. Symbolic Execution and Program Testing. Commun. ACM, 19(7), 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. D. Marinov and S. Khurshid. TestEra: A Novel Framework for Automated Testing of Java Programs. In Proc. ASE, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J. Offutt et al. An Experimental Mutation System for Java. SIGSOFT Softw. Eng. Notes, 29(5), 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. K. Sen et al. CUTE: A Concolic Unit Testing Engine for C. In Proc. ESEC/FSE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. D. Shao et al. Whispec: White-box Testing of Libraries using Declarative Specifications. In Proc. LCSD, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. K. Sullivan et al. Software Assurance by Bounded Exhaustive Testing. In Proc. ISSTA, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. N. Tillmann and J. De Halleux. Pex: White box Test Generation for .NET. In Proc. TAP, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. W. Visser et al. Model Checking Programs. Automated Softw. Eng. J., 10(2), 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  1. Staged symbolic execution

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          SAC '12: Proceedings of the 27th Annual ACM Symposium on Applied Computing
          March 2012
          2179 pages
          ISBN:9781450308571
          DOI:10.1145/2245276
          • Conference Chairs:
          • Sascha Ossowski,
          • Paola Lecca

          Copyright © 2012 ACM

          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]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 26 March 2012

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          SAC '12 Paper Acceptance Rate270of1,056submissions,26%Overall Acceptance Rate1,650of6,669submissions,25%

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader