JCrasher: an automatic robustness tester for Java
Abstract
JCrasher is an automatic robustness testing tool for Java code. JCrasher examines the type information of a set of Java classes and constructs code fragments that will create instances of different types to test the behavior of public methods under random data. JCrasher attempts to detect bugs by causing the program under test to ‘crash’, that is, to throw an undeclared runtime exception. Although in general the random testing approach has many limitations, it also has the advantage of being completely automatic: o supervision is required except for off‐line inspection of the test ases that have caused a crash. Compared to other similar commercial and research tools, JCrasher offers several novelties: it transitively analyzes methods, determines the size of each tested method's parameter‐space and selects parameter combinations and therefore test cases at random, taking into account the time allocated for testing; it defines heuristics for determining whether a Java exception should be considered as a program bug or whether the JCrasher supplied inputs have violated the code's preconditions; it includes support for efficiently undoing all the state changes introduced by previous tests; it produces test files for JUnit, a popular Java testing tool; and it can be integrated in the Eclipse IDE. Copyright © 2004 John Wiley & Sons, Ltd.
Integrity signals
Registry
Cites
Statistics
Claims the paper makes
Cites
Claessen, K., & Hughes, J. (2011) · ACM SIGPLAN Notices · doi:10.1145/1988042.1988046 · Cited by 1,018 · see citing works
(2000) · doi:10.1145/351240.351266 · Cited by 753 · see citing works
Boyapati, C., Khurshid, S., & Marinov, D. (2002) · ACM SIGSOFT Software Engineering Notes · doi:10.1145/566171.566191 · Cited by 597 · see citing works
Black Box Testing: Techniques for Functional Testing of Software and Systems
Beizer, B., & Wiley, J. (1996) · IEEE Software · doi:10.1109/ms.1996.536464 · Cited by 452 · see citing works
Boyapati, C., Khurshid, S., & Marinov, D. (2002) · ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA) · doi:10.1145/566172.566191 · Cited by 302 · see citing works
TEST-INFECTED: PROGRAMMERS LOVE WRITING TESTS
Beck, K. L., & Gamma, E. (2000) · Cambridge University Press eBooks · doi:10.1017/cbo9780511550881.029 · Cited by 274 · see citing works
An empirical study of the robustness of Windows NT applications using random testing
Forrester, J. E., & Miller, B. P. (2000) · Cited by 266 · see citing works
Hierarchical GUI test case generation using automated planning
Memon, A. M., Pollack, M. E., & Soffa, M. L. (2001) · IEEE Transactions on Software Engineering · doi:10.1109/32.908959 · Cited by 265 · see citing works
A Simple and Practical Approach to Unit Testing: The JML and JUnit Way
Cheon, Y., & Leavens, G. T. (2002) · Lecture notes in computer science · doi:10.1007/3-540-47993-7_10 · Cited by 228 · see citing works
Black-box testing: Techniques for functional testing of software and systems
Horch, J. W. (1996) · Control Engineering Practice · doi:10.1016/0967-0661(96)83722-1 · Cited by 200 · see citing works
Automated robustness testing of off-the-shelf software components
Kropp, N. P., Koopman, P. J., & Siewiorek, D. P. (1998) · doi:10.1109/ftcs.1998.689474 · Cited by 185 · see citing works
A framework for practical, automated black‐box testing of component‐based software†
Edwards, S. H. (2001) · Software Testing Verification and Reliability · doi:10.1002/stvr.224 · Cited by 101 · see citing works
Tool-Assisted Unit Test Selection Based on Operational Violations
Xie, T., & Notkin, D. S. (2003) · Cited by 64 · see citing works
Test Case Generation as an AI Planning Problem
Howe, A. E., von Mayrhauser, A., & Mraz, R. (1997) · Automated Software Engineering · doi:10.1023/a:1008607721339 · Cited by 62 · see citing works
The International Conference on Dependable Systems and Networks (DSN 2007)
(2006) · IEEE/IFIP International Conference on Dependable Systems and Networks (DSN) · doi:10.1109/dsn.2006.28 · Cited by 60 · see citing works
An Informal Formal Method for Systematic JUnit Test Case Generation
Stotts, D., Lindsey, M. R., & Antley, A. (2002) · Lecture notes in computer science · doi:10.1007/3-540-45672-4_13 · Cited by 52 · see citing works
Building a Java virtual machine for server applications: The Jvm on OS/390
Dillenberger, D. E., Bordawekar, R. R., Clark, C. W., III, et al. (2000) · IBM Systems Journal · doi:10.1147/sj.391.0194 · Cited by 40 · see citing works
ADL—an interface definition language for specifying and testing software
Sankar, S., & Hayes, R. (1994) · doi:10.1145/185084.185096 · Cited by 38 · see citing works
Robustness testing and hardening of CORBA ORB implementations
Pan, J., Koopman, P. J., Huang, Y., et al. (2002) · IEEE/IFIP International Conference on Dependable Systems and Networks (DSN) · doi:10.1109/dsn.2001.941400 · Cited by 35 · see citing works
Tool-assisted unit test selection based on operational violations
Xie, T., & Notkin, D. S. (2004) · IEEE/ACM International Conference on Automated Software Engineering (ASE) · doi:10.1109/ase.2003.1240293 · Cited by 24 · see citing works
ADL—an interface definition language for specifying and testing software
Sankar, S., & Hayes, R. (1994) · ACM SIGPLAN Notices · doi:10.1145/185087.185096 · Cited by 12 · see citing works
Eager Class Initialization for Java
Kozen, D. C., & Stillerman, M. (2002) · Lecture notes in computer science · doi:10.1007/3-540-45739-9_5 · Cited by 10 · see citing works
Flagged first, then by citations
Cited by
Sorted by citations
Fraser, G., & Arcuri, A. (2013) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2012.14 · Cited by 586 · see citing works
Fairness testing: testing software for discrimination
Galhotra, S., Brun, Y., & Meliou, A. (2017) · Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering · doi:10.1145/3106237.3106277 · Cited by 405 · see citing works
An Empirical Evaluation of Using Large Language Models for Automated Unit Test Generation
Schäfer, M., Nadi, S., Eghbali, A., & Tip, F. (2024) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2023.3334955 · Cited by 431 · see citing works
“This fact has inspired extensive research on techniques for automated test generation including fuzzing [5], [6], feedback-directed random test generation [7], [8], [9], [10], [11], dynamic symbolic execution [12], [13], [14], [15], and search-based and evolutionary techniques [16], [17].”
BackgroundMethodSymstra: A Framework for Generating Object-Oriented Unit Tests Using Symbolic Execution
Xie, T., Marinov, D., Schulte, W., & Notkin, D. (2005) · Lecture Notes in Computer Science · doi:10.1007/978-3-540-31980-1_24 · Cited by 287 · see citing works
Shamshiri, S., Just, R., Rojas, J. M., Fraser, G., McMinn, P., & Arcuri, A. (2015) · 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE) · doi:10.1109/ase.2015.86 · Cited by 230 · see citing works
Bhatia, S., Gandhi, T., Kumar, D., & Jalote, P. (2024) · Proceedings of the 1st International Workshop on Large Language Models for Code · doi:10.1145/3643795.3648396 · Cited by 55 · see citing works
Dsc+Mock: a test case + mock class generator in support of coding against interfaces
Islam, M., & Csallner, C. (2010) · Proceedings of the Eighth International Workshop on Dynamic Analysis · doi:10.1145/1868321.1868326 · Cited by 30 · see citing works
Self-citationDelta execution for efficient state-space exploration of object-oriented programs
d'Amorim, M., Lauterburg, S., & Marinov, D. (2007) · Proceedings of the 2007 international symposium on Software testing and analysis · doi:10.1145/1273463.1273472 · Cited by 26 · see citing works
- Authors
- Csallner, C., & Smaragdakis, Y.
- Affiliations
- Georgia Institute of Technology (US)
- Corresponding author
- Smaragdakis, Yannis
- Venue
- Software: Practice and Experience
- Publisher
- Wiley
- Published
- 2004-06-07
- Volume
- 34
- Issue
- 11
- Pages
- 1025-1050
- ISSN
- 0038-0644 (ISSN-L)
- 1097-024X
- OpenAlex
- W2172260321
- Cited by
- 426
- References
- 22
- Citations by year
- 2026: 3 · 2025: 5 · 2024: 8 · 2023: 9 · 2022: 7 · 2021: 10 · 2020: 19 · 2019: 7 · 2018: 28 · 2017: 17 · 2016: 22 · 2015: 25 · 2014: 37 · 2013: 26 · 2012: 24
- FWCI
- 71.41
- Type
- journal article
- Language
- en
- Open access
- closed
- Locations
- Software Practice and Experience (publishedVersion)
- Topics
- Physical Sciences › Computer Science › Software › Software Testing and Debugging Techniques
- Physical Sciences › Computer Science › Information Systems › Software Engineering Research
- Physical Sciences › Computer Science › Computer Networks and Communications › Software System Performance and Reliability
- Keywords
- robustness testing, Java, random testing, accident detection, parameter space analysis, test case generation, software testing tools
About these checks
Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.
Statistics and arithmetic are recomputed, not judged.
Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.
What counts as a claim ›How we measure confidence ›How we check this ›
Are you an author, or do you see a problem with this page? Request a review