This (https://doi.org/10.5281/zenodo.17950380) is a replication package for the paper:
Teralizer: Semantics-Based Test Generalization from Conventional Unit Tests to Property-Based Tests
Our work proposes a semantics-based test generalization approach that automatically transforms conventional unit tests into property-based tests by extracting specifications from implementations via single-path symbolic analysis. We demonstrate this approach through Teralizer, a prototype tool for Java that transforms JUnit tests into property-based jqwik tests.
- Links
- Package Contents
- Quick Start
- Verification Workflows
- Complete Reproduction
- Project Structure
- Citation
- License
| Resource | Location |
|---|---|
| Zenodo Archive | 10.5281/zenodo.17950380 |
| Paper (arXiv) | arXiv:2512.14475 |
| Artifact Repository | glockyco/Teralizer |
| Paper Repository | glockyco/Teralizer-Paper |
| Archive | Size | Contents |
|---|---|---|
teralizer-results |
~1 MB | Tables, figures, HTML notebooks |
teralizer-core |
~250 MB | Code, database dumps, reference outputs |
teralizer-projects-primary |
~45 MB | EqBench + commons-utils source code |
teralizer-projects-extended-sample |
~170 MB | 100 sampled RepoReapers projects |
teralizer-projects-extended |
~1.7 GB | All 1161 RepoReapers projects |
teralizer-data-primary |
~1.1 GB | Logs, tool reports, generalized tests |
teralizer-data-extended |
~260 MB | Logs, tool reports, generalized tests |
What to download:
- Browse results only:
teralizer-results - Verify analysis:
teralizer-core - Verify pipeline:
teralizer-core+teralizer-projects-extended-sample - Full reproduction:
teralizer-core+teralizer-projects-primary+teralizer-projects-extended
See REQUIREMENTS.md for system requirements and INSTALL.md for detailed setup instructions.
cd replication
./quick-start.shThis starts PostgreSQL, imports the database dumps, and launches Jupyter Lab.
Access points (open in browser after setup completes):
- Jupyter Lab: http://localhost:8888
- Database UI (Adminer): http://localhost:18080
- System: PostgreSQL
- Server: postgres
- Username: teralizer
- Password: teralizer
- Database: postgres_dev (or postgres_test)
Stopping services:
docker compose down # Stop containers (preserves data)
docker compose down -v # Stop and remove all dataThree workflows verify the artifact at increasing levels of depth:
| Workflow | What it does | Archives needed | Output |
|---|---|---|---|
| 1. Inspect | Browse pre-computed results | teralizer-results |
— |
| 2. Verify analysis | Re-run notebooks on existing data | teralizer-core |
verify/ |
| 3. Verify pipeline | Re-run data collection | teralizer-core + teralizer-projects-* |
replicate/ |
Workflow 2 should produce outputs identical to original/.
Workflow 3 outputs may differ due to resource limits and external factors (see Complete Reproduction).
Browse the pre-computed results without re-running anything.
-
Run quick-start:
cd replication && ./quick-start.sh
-
Verify database import:
./scripts/verify-results.sh
-
Explore:
- Jupyter: http://localhost:8888 — browse notebooks
- Adminer: http://localhost:18080 — query databases
- Files:
analysis/output/original/— pre-computed tables and figures
Confirm the analysis code produces identical results on the same data.
-
Re-run all notebooks:
./scripts/run-notebooks.sh verify
-
Compare outputs:
./scripts/verify-outputs.sh original verify
Expected: All outputs match exactly. The analysis is deterministic.
Confirm the data collection pipeline executes successfully.
-
Run pipeline on a subset of projects:
./scripts/run.sh --dataset extended --count 5
-
Run analysis on the new data:
./scripts/run-notebooks.sh replicate
-
Compare outputs (differences expected due to non-determinism):
./scripts/verify-outputs.sh original replicate
For full reproduction of all projects, see Complete Reproduction.
All evaluation figures and tables in the paper are generated by notebooks in analysis/notebooks/. Outputs are saved to analysis/output/ as LaTeX tables, PDF figures, and CSV data.
| Notebook | Paper Section | Description |
|---|---|---|
dataset-characteristics.ipynb |
Evaluation Setup | Dataset statistics and characteristics |
rq1-mutation-detection.ipynb |
RQ1, RQ2 | Mutation scores, constraint complexity |
rq2-test-suite-effects.ipynb |
RQ3 | Test suite size and runtime effects |
rq3-runtime-requirements.ipynb |
RQ4 | Teralizer efficiency analysis |
rq4-limitations.ipynb |
RQ5, RQ6 | Exclusion causes (primary + extended) |
Full reproduction requires significant compute time and may produce non-identical results due to:
- Machine-dependent resource limits (timeouts, memory)
- Evaluated projects with unavailable dependencies (artifacts removed from repositories)
- Evaluated projects with unpinned dependency versions (breaking changes in newer versions)
./scripts/run.sh --dataset extendedProcesses all 1161 RepoReapers projects. Runtime is relatively short because most projects fail to complete the full processing pipeline.
The primary dataset requires a two-phase workflow:
-
Generate tests (EvoSuite):
./scripts/run.sh --dataset primary --phase generation
-
Generalize tests:
./scripts/run.sh --dataset primary --phase generalization
./scripts/run-notebooks.sh replicate
./scripts/verify-outputs.sh original replicateteralizer/
├── README.md # This file
├── INSTALL.md # Installation instructions
├── REQUIREMENTS.md # System requirements
├── LICENSE-MIT # MIT license (code)
├── LICENSE-CC-BY-4.0 # CC BY 4.0 license (data, docs)
├── src/ # Teralizer Java source code
├── analysis/
│ ├── notebooks/ # Jupyter analysis notebooks
│ ├── src/ # Python analysis modules
│ └── output/ # Generated tables, figures, data
├── replication/
│ ├── docker-compose.yml # Docker services configuration
│ ├── quick-start.sh # One-command setup script
│ ├── datasets/ # Database dumps
│ └── scripts/ # Automation scripts
├── project-configs/ # Pipeline configuration files
└── docs/ # Architecture documentation
@misc{glock_2025_teralizer,
title={Teralizer: Semantics-Based Test Generalization from Conventional Unit Tests to Property-Based Tests},
author={Johann Glock and Clemens Bauer and Martin Pinzger},
year={2025},
eprint={2512.14475},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2512.14475},
}This artifact uses dual licensing:
| Component | License |
|---|---|
| Source code (Java, Python, scripts) | MIT |
| Data, documentation | CC BY 4.0 |
Analyzed projects retain their original licenses.