skip to main content
research-article

The Dart, the Psyco, and the Doop: Concolic Execution in Java PathFinder and its Applications

Published: 06 February 2015 Publication History

Abstract

JDart is a concolic execution extension for Java PathFinder. Concolic execution executes programs with concrete values while recording symbolic constraints. In this way, it combines the benefits of fast concrete execution, with the possibility of generating new concrete values, triggered by symbolic constraints, in order to exercise additional, potentially rare, program behaviors. As is typical with concolic execution engines, JDart can be used for test-case generation. Beyond this basic mode, it has also been used as a component of other tools. In this paper, we describe the main features of JDart, provide usage examples, and give an overview of applications that use JDart. We particularly concentrate on our efforts into making JDart robust enough to handle large, complex systems.

References

[1]
E. T. Barr, T. Vo, V. Le, and Z. Su. Automatic detection of floating-point exceptions. In POPL, pages 549--560, 2013.
[2]
A. Biere, A. Cimatti, E. M. Clarke, O. Strichman, and Y. Zhu. Bounded model checking. Advances in computers, 58:117--148, 2003. 3 https://bitbucket.org/psycopaths/jpf-jdart
[3]
C. Cadar, D. Dunbar, and D. Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI, pages 209--224, 2008.
[4]
L. De Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS, pages 337--340, 2008.
[5]
M. Dimjašević and Z. Rakamarić. JPF-Doop: Combining concolic and random testing for Java. In JPF Workshop, 2013. Extended abstract.
[6]
H. Erzberger, T. A. Lauderdale, and Y.-C. Chu. Automated conflict resolution, arrival management and weather avoidance for ATM. In International Congress of the Aeronautical Sciences, 2010.
[7]
P. Garg, F. Ivančić, G. Balakrishnan, N. Maeda, and A. Gupta. Feedback-directed unit test generation for C/C++ using concolic execution. In ICSE, pages 132--141, 2013.
[8]
D. Giannakopoulou, F. Howar, M. Isberner, T. Lauderdale, Z. Rakamarić, and V. Raman. Taming test inputs for separation assurance. In ASE, 2014.
[9]
D. Giannakopoulou, Z. Rakamarić, and V. Raman. Symbolic learning of component interfaces. In SAS, pages 248--264, 2012.
[10]
P. Godefroid, N. Klarlund, and K. Sen. DART: Directed automated random testing. In PLDI, pages 213--223, 2005.
[11]
P. Godefroid, M. Y. Levin, and D. Molnar. SAGE: Whitebox fuzzing for security testing. Queue, 10(1):20:20--20:27, Jan. 2012.
[12]
F. Howar, D. Giannakopoulou, and Z. Rakamarić. Hybrid learning: Interface generation through static, dynamic, and symbolic analysis. In ISSTA, pages 268--279, 2013.
[13]
F. Ivančić, M. Ganai, S. Sankaranarayanan, and A. Gupta. Numerical stability analysis of floating-point computations using software model checking. In MEMOCODE, pages 49--58, 2010.
[14]
K. Jayaraman, D. Harvison, and V. Ganesh. jFuzz: A concolic whitebox fuzzer for Java. In NFM, 2009.
[15]
K. Káhkónen, T. Launiainen, O. Saarikivi, J. Kauttio, K. Heljanko, and I. Niemelá. LCT: An open source concolic testing tool for Java programs. In Workshop on Bytecode Semantics, Verification, Analysis and Transformation (BYTECODE), pages 75--80, 2011.
[16]
J. C. King. Symbolic execution and program testing. Commun. ACM, 19(7):385--394, 1976.
[17]
C. Pacheco, S. Lahiri, M. Ernst, and T. Ball. Feedback-directed random test generation. In ICSE, pages 75--84, 2007.
[18]
C. S. Pasareanu, N. Rungta, and W. Visser. Symbolic execution with mixed concrete-symbolic solving. In ISSTA, pages 34--44, 2011.
[19]
C. S. Păsăreanu, P. C. Mehlitz, D. H. Bushnell, K. Gundy-Burlet, M. Lowry, S. Person, and M. Pape. Combining unit-level symbolic execution and system-level concrete execution for testing NASA software. In ISSTA, pages 15--26, 2008.
[20]
K. Sen and G. Agha. CUTE and jCUTE: Concolic unit testing and explicit path model-checking tools. In CAV, pages 419--423, 2006.
[21]
K. Sen, D. Marinov, and G. Agha. CUTE: A concolic unit testing engine for C. In ESEC/FSE, pages 263--272, 2005.
[22]
N. Tillmann and J. d. Halleux. Pex|white box test generation for .NET. In TAP, pages 134--153, 2008.
[23]
W. Visser, K. Havelund, G. P. Brat, S. Park, and F. Lerda. Model checking programs. Autom. Softw. Eng., 10(2):203--232, 2003.

Cited By

View all
  • (2021)Sound and Complete Concolic Testing for Higher-order FunctionsProgramming Languages and Systems10.1007/978-3-030-72019-3_23(635-663)Online publication date: 23-Mar-2021
  • (2016)JDartProceedings of the 22nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems - Volume 963610.1007/978-3-662-49674-9_26(442-459)Online publication date: 2-Apr-2016
  • (2016)Exact Heap Summaries for Symbolic ExecutionProceedings of the 17th International Conference on Verification, Model Checking, and Abstract Interpretation - Volume 958310.1007/978-3-662-49122-5_10(206-225)Online publication date: 17-Jan-2016

Index Terms

  1. The Dart, the Psyco, and the Doop: Concolic Execution in Java PathFinder and its Applications

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGSOFT Software Engineering Notes
    ACM SIGSOFT Software Engineering Notes  Volume 40, Issue 1
    January 2015
    237 pages
    ISSN:0163-5948
    DOI:10.1145/2693208
    Issue’s Table of Contents

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 06 February 2015
    Published in SIGSOFT Volume 40, Issue 1

    Check for updates

    Author Tags

    1. Concolic Execution
    2. White-box Testing

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)6
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 08 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2021)Sound and Complete Concolic Testing for Higher-order FunctionsProgramming Languages and Systems10.1007/978-3-030-72019-3_23(635-663)Online publication date: 23-Mar-2021
    • (2016)JDartProceedings of the 22nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems - Volume 963610.1007/978-3-662-49674-9_26(442-459)Online publication date: 2-Apr-2016
    • (2016)Exact Heap Summaries for Symbolic ExecutionProceedings of the 17th International Conference on Verification, Model Checking, and Abstract Interpretation - Volume 958310.1007/978-3-662-49122-5_10(206-225)Online publication date: 17-Jan-2016

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media