A concolic unit testing engine for Java programs that combines concrete and symbolic execution to generate test inputs.
CATG is a concolic unit testing engine for Java programs that automatically generates test inputs by combining concrete execution with symbolic analysis. It instruments Java bytecode at runtime to log program execution and uses constraint solving to explore different code paths, helping developers achieve higher test coverage.
Java developers and software testers who need automated test generation tools, particularly those working on projects requiring thorough unit testing and edge-case discovery.
CATG provides an open-source, self-hosted alternative to commercial concolic testing tools, offering both online and offline execution modes with detailed coverage reporting through integration with JaCoCo.
a concolic testing engine for Java
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses concolic execution to automatically generate test inputs for Java classes with main methods, as demonstrated by the concolic.py script for exploring code paths.
Supports both online and offline concolic testing, allowing developers to choose between real-time analysis and trace-based approaches for different testing scenarios.
Integrates with JaCoCo to generate detailed coverage reports, providing visibility into code paths explored during test generation, as shown in the gradle jacocoTestReport command.
Employs ASM for runtime bytecode instrumentation, enabling non-intrusive logging of executed instructions without modifying source code.
Requires manual installation of multiple dependencies including CVC4 constraint solver, Python 2.7, and specific JAR files (e.g., ASM, Automaton), which complicates initial configuration.
Depends on Python 2.7, a deprecated version with security and compatibility issues, making it less suitable for modern development environments.
Primarily targets Java classes with main methods, which may not cover unit testing for individual methods or complex application architectures without main entry points.
Offline mode incurs a 2X slowdown compared to online mode, as admitted in the README, which can impact testing efficiency for large or time-sensitive projects.