Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Empirical Software Engineering
  3. Defects4J

Defects4J

MITPerl

A database of reproducible real-world Java bugs and a framework for controlled software engineering experiments.

GitHubGitHub
982 stars374 forks0 contributors

What is Defects4J?

Defects4J is a database and experimental infrastructure for software engineering research. It provides a collection of real, reproducible bugs from open-source Java projects, along with tools to checkout, compile, test, and analyze these bugs in a controlled manner. It solves the problem of inconsistent or synthetic benchmarks by offering a standardized platform for evaluating techniques like automated testing and program repair.

Target Audience

Software engineering researchers and practitioners focusing on empirical studies, automated testing, program repair, fault localization, and test generation who need a reliable benchmark of real-world Java faults.

Value Proposition

Developers and researchers choose Defects4J because it offers a large, curated set of real faults with guaranteed reproducibility, a comprehensive CLI for controlled experimentation, and rich metadata—making it the de facto standard benchmark for many software engineering research areas.

Overview

A Database of Real Faults and an Experimental Infrastructure to Enable Controlled Experiments in Software Engineering Research

Use Cases

Best For

  • Evaluating automated program repair (APR) techniques on real Java bugs
  • Benchmarking fault localization algorithms against known defects
  • Assessing test generation tools like EvoSuite or Randoop
  • Conducting controlled experiments in software testing research
  • Studying bug patterns and characteristics in open-source Java projects
  • Teaching software testing and debugging with reproducible examples

Not Ideal For

  • Teams needing a live bug-tracking system for ongoing development workflows
  • Projects using languages other than Java or older Java versions (pre-11)
  • Environments where strict timezone or dependency management is infeasible

Pros & Cons

Pros

Real, Curated Bugs

Contains over 854 real, minimized bugs from 17 popular Java projects like JFreeChart and Gson, each validated with a single fixing commit and triggering test, ensuring authenticity for research.

Comprehensive Experimentation CLI

Provides a command-line interface to checkout, compile, test, and analyze bugs, with built-in scripts for coverage, mutation analysis, and test generation, enabling consistent experimental setups.

Rich Metadata Export

Allows exporting detailed properties via commands like export and query, including modified classes, classpaths, and trigger tests, facilitating deep analysis without manual extraction.

Standardized Reproducibility

Specifies Java 11 and timezone (America/Los_Angeles) requirements, and excludes broken/flaky tests, guaranteeing bug reproducibility across controlled environments as noted in the README.

Cons

Complex Setup Process

Requires Java 11, Git, Subversion, Perl with cpanm dependencies, and manual initialization via init.sh, which can be time-consuming and error-prone for quick adoption.

Timezone and Version Lock-in

Must run in America/Los_Angeles timezone and with Java 11; deviations can cause non-reproducible bugs, and deprecated bugs exist due to Java version changes, limiting flexibility.

Niche, Research-Focused Design

Primarily tailored for academic experiments like automated program repair; lacks features for practical development tools such as IDE integration or real-time debugging aids.

Frequently Asked Questions

Quick Stats

Stars982
Forks374
Contributors0
Open Issues49
Last commit3 months ago
CreatedSince 2015

Tags

#perl#java#test-generation#benchmarking#testing-framework

Built With

P
Perl
g
git
S
Subversion
J
Java

Included in

Empirical Software Engineering475
Auto-fetched 7 hours ago

Related Projects

Unix historyUnix history

Continuous Unix commit history from 1970 until today

Stars7,243
Forks498
Last commit6 months ago
mzdatamzdata

Multi-extract and Multi-level Dataset of Mozilla Issue Tracking History

Stars7
Forks1
Last commit10 years ago
OCL Expressions on GitHubOCL Expressions on GitHub

A Data Set of OCL Expressions on GitHub

Stars6
Forks3
Last commit3 years ago
Findbugs-mavenFindbugs-maven

The Bug Catalog of the Maven Ecosystem

Stars2
Forks3
Last commit11 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub