skip to main content
10.1145/1273463.1273472acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
Article

Delta execution for efficient state-space exploration of object-oriented programs

Published:09 July 2007Publication History

ABSTRACT

State-space exploration is the essence of model checking and an increasingly popular approach for automating test generation. A key issue in exploration of object-oriented programs is handling the program state, in particular the heap. Previous research has focused on standard program execution that operates on one state/heap. We present Delta Execution, a technique that simultaneously operates on several states/heaps. It exploits the fact that many execution paths in state-space exploration partially overlap and speeds up the exploration by sharing the common parts across the executions and separately executing only the "deltas" where the executions differ.

We have implemented Delta Execution in JPF, a popular general-purpose model checker for Java programs, and in BOX, a specialized model checker that we have developed for efficient exploration of sequential Java programs. We have evaluated Delta Execution for (bounded) exhaustive exploration of ten basic subject programs without errors. The experimental results show that on average Delta Execution improves the exploration time 10.97x (over an order of magnitude) in JPF and 2.07x in BOX. We have also evaluated Delta Execution for one larger case study with errors, where the exploration time improved up to 1.43x.

References

  1. T. Andrews, S. Qadeer, S. K. Rajamani, J. Rehof, and Y. Xie. Zing: A model checker for concurrent software. In CAV, 2004.Google ScholarGoogle Scholar
  2. T. Ball, R. Majumdar, T. Millstein, and S. K. Rajamani. Automatic predicate abstraction of C programs. In PLDI, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. T. Ball and S. K. Rajamani. Bebop: A symbolic model checker for boolean programs. In SPIN, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Boyapati, S. Khurshid, and D. Marinov. Korat: Automated testing based on Java predicates. In ISSTA, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. R. E. Bryant. Symbolic boolean manipulation with ordered binary-decision diagrams. ACM Computing Surveys, 24(3), 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Cadar, V. Ganesh, P. M. Pawlowski, D. L. Dill, and D. R. Engler. EXE: Automatically generating inputs of death. In CCS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. E. M. Clarke, O. Grumberg, and D. A. Peled. Model Checking. The MIT Press, Cambridge, MA, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. C. Corbett, M. B. Dwyer, J. Hatcliff, S. Laubach, C. S. Pasareanu, Robby, and H. Zheng. Bandera: Extracting finite-state models from Java source code. In ICSE, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. C. Csallner and Y. Smaragdakis. JCrasher: An automatic robustness tester for Java. Software Practice and Experience, 34, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Daisy File System. Joint CAV/ISSTA Special Event on Specification, Verification, and Testing of Concurrent Software.Google ScholarGoogle Scholar
  11. M. d'Amorim, S. Lauterburg, and D. Marinov. Delta execution for efficient state-space exploration of object-oriented programs. Technical Report UIUCDCS-R-2007-2844, University of Illinois, Urbana, IL, April 2007.Google ScholarGoogle Scholar
  12. M. d'Amorim, C. Pacheco, T. Xie, D. Marinov, and M. D. Ernst. An empirical comparison of automated generation and classification techniques for object-oriented unit testing. In ASE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. d'Amorim, A. Sobeih, and D. Marinov. Optimized execution of deterministic blocks in Java PathFinder. In ICFEM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. P. T. Darga and C. Boyapati. Efficient software model checking of data structure properties. In OOPSLA, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Eclipse foundation. http://www.eclipse.org/.Google ScholarGoogle Scholar
  16. Foundations of Software Engineering at Microsoft Research. The AsmL test generator tool. http://research.microsoft.com/fse/AsmL.Google ScholarGoogle Scholar
  17. D. P. Friedman, M. Wand, and C. T. Haynes. Essentials of Programming Languages. MIT Press, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. P. Godefroid. Model checking for programming languages using Verisoft. In POPL, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. Godefroid, N. Klarlund, and K. Sen. DART: Directed automated random testing. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. K. Havelund and T. Pressburger. Model checking Java programs using Java PathFinder. International Journal on Software Tools for Technology Transfer, 2(4), 2000.Google ScholarGoogle Scholar
  21. G. J. Holzmann. The model checker SPIN. IEEE Trans. on Software Engineering, 23(5), 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. R. Iosif. Exploiting heap symmetries in explicit-state model checking of software. In ASE, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. J-Sim. http://www.j-sim.org/.Google ScholarGoogle Scholar
  24. J. R. Burch, E. M. Clarke, K. L. McMillan, D. L. Dill, and L. J. Hwang. Symbolic Model Checking: 1020 States and Beyond. In LICS, 1990.Google ScholarGoogle Scholar
  25. S. Khurshid, C. S. Pasareanu, and W. Visser. Generalized symbolic execution for model checking and testing. In TACAS, April 2003.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. V. Kuncak, P. Lam, and M. Rinard. Role analysis. In POPL, Jan. 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. F. Lerda and W. Visser. Addressing dynamic issues of program model checking. In SPIN '01, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. O. Lhotak and L. Hendren. Jedd: A BDD-based relational extension of Java. In PLDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. P. C. Mehlitz, W. Visser, and J. Penix. The JPF runtime verification system. http://javapathfinder.sourceforge.net/JPF.pdf.Google ScholarGoogle Scholar
  30. M. Musuvathi and D. L. Dill. An incremental heap canonicalization algorithm. In SPIN, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. M. Musuvathi, D. Park, A. Chou, D. R. Engler, and D. L. Dill. CMC: A pragmatic approach to model checking real code. In OSDI, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. A. J. Offutt, Z. Jin, and J. Pan. The dynamic domain reduction procedure for test data generation. Software Practice and Experience, 29(2), 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. C. Pacheco and M. D. Ernst. Eclat: Automatic generation and classification of test inputs. In ECOOP, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. C. E. Perkins and E. M. Royer. Ad-hoc on-demand distance vector routing. In Proc. IEEE Workshop on Mobile Computing Systems and Applications (WMCSA), pages 90--100. IEEE Computer Society Press, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Robby, M. B. Dwyer, and J. Hatcliff. Bogor: An extensible and highly-modular software model checking framework. In ESEC/FSE, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. R. Rugina. Quantitative shape analysis. In 11th International Static Analysis Symposium (SAS'04), Aug. 2004.Google ScholarGoogle ScholarCross RefCross Ref
  37. K. Sen, D. Marinov, and G. Agha. CUTE: A concolic unit testing engine for C. In ESEC/FSE, September 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Sobeih, M. Viswanathan, D. Marinov, and J. C. Hou. Finding bugs in network protocols using simulation code and protocol-specific heuristics. In ICFEM, volume 3785 of LNCS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. D. Stotts, M. Lindsey, and A. Antley. An informal formal method for systematic JUnit test case generation. In Proc. 2002 XP/Agile Universe, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. W. Visser, C. S. Pasareanu, and S. Khurshid. Test input generation with Java PathFinder. In ISSTA, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. W. Visser, C. S. Pasareanu, and R. Pelanek. Test input generation for red-black trees using abstraction. In ASE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. W. Visser, C. S. Pasareanu, and R. Pelanek. Test input generation for Java containers using state matching. In ISSTA, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. T. Xie, D. Marinov, and D. Notkin. Rostra: A framework for detecting redundant object-oriented unit tests. In ASE, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. T. Xie, D. Marinov, W. Schulte, and D. Notkin. Symstra: A framework for generating object-oriented unit tests using symbolic execution. In TACAS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. G. Yorsh, T. W. Reps, and S. Sagiv. Symbolically computing most-precise abstract operations for shape analysis. In TACAS, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  47. Y. Zhou, D. Marinov, W. Sanders, C. Zilles, M. d'Amorim, S. Lauterburg, R. M. Lefever, and J. Tucek. Delta execution for software reliability. To appear in HotDep, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Delta execution for efficient state-space exploration of object-oriented programs

              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
                ISSTA '07: Proceedings of the 2007 international symposium on Software testing and analysis
                July 2007
                258 pages
                ISBN:9781595937346
                DOI:10.1145/1273463

                Copyright © 2007 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: 9 July 2007

                Permissions

                Request permissions about this article.

                Request Permissions

                Check for updates

                Qualifiers

                • Article

                Acceptance Rates

                Overall Acceptance Rate58of213submissions,27%

                Upcoming Conference

                ISSTA '24

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader