https://github.com/assert-kth/proze
proze is short for PROduction + parameteriZE http://arxiv.org/pdf/2407.00768
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.4%) to scientific vocabulary
Repository
proze is short for PROduction + parameteriZE http://arxiv.org/pdf/2407.00768
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Proze
See PROZE: Generating Parameterized Unit Tests Informed by Runtime Data (Deepika Tiwari, Yogya Gamage, Martin Monperrus and Benoit Baudry), In Proceedings of IEEE Conference on Source Code Analysis and Manipulation, 2024.
bibtex
@inproceedings{2407.00768,
title = {PROZE: Generating Parameterized Unit Tests Informed by Runtime Data},
booktitle = {Proceedings of IEEE Conference on Source Code Analysis and Manipulation},
year = {2024},
doi = {10.1109/SCAM63643.2024.00025},
author = {Deepika Tiwari and Yogya Gamage and Martin Monperrus and Benoit Baudry},
url = {http://arxiv.org/pdf/2407.00768},
}
Dataset 🔭
See https://github.com/ASSERT-KTH/proze-experiments
select: Select target methods
cd /path/to/proze/select/mvn clean installjava -jar target/select-version-jar-with-dependencies.jar /path/to/maven/project/- This generates a report called
report-<project-name>.json - This also generates a script called
run-<project-name>-test-classes.shwhich can be (copied into the project directory and) used to run only the test classes that we are interested in
- This generates a report called
- The report generated by
selectincludes methods that- are called directly by an
@Testmethod - take primitive and/or String arguments
- are called directly by an
instrument: Instrument target methods
cd /path/to/proze/instrument/python3 prepare.py /path/to/report/from/select.json- This generates a report called
method-wise-report-<project-name>.json
- This generates a report called
Run instrumentation script to generate aspect classes and prepare Glowroot configuration json file, follow one of these two (clean slate before each)
- A.
python3 instrument.py /path/to/method/wise/report.json - This captures method arguments + other data for all invocations of a method (until 3 MB)
- B.
python3 instrument.py /path/to/method/wise/report.json original - This captures method arguments only if method is directly invoked by an invoking test (no limit on size)
- A.
mvn clean install- This generates
target/instrument-version-jar-with-dependencies.jar
- This generates
(Skip this step if Glowroot downloaded already) Download Glowroot, create a directory called
pluginsin the directory that containsglowroot.jarCopy
instrument-version-jar-with-dependencies.jarinto/path/to/glowroot/plugins/
Test and production execution
Follow point 3A under
instrumentProduction: Add
-javaagent:/path/to/glowroot/glowroot.jarwhen running project jar- Invocation data is saved to
/tmp/proze-object-data/ - Rename this to
/tmp/proze-object-data-prod/
- Invocation data is saved to
Tests:
- Configure
maven-surefire-pluginas follows:<plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>-javaagent:/path/to/glowroot/glowroot.jar</argLine> </configuration> </plugin> mvn testorsh run-<project-name>-test-classes.sh(i.e., the script generated byselect)- Invocation data is saved to
/tmp/proze-object-data/ - Rename this to
/tmp/proze-object-data-test/
- Configure
Follow point 3B under
instrumentRe-run tests
- Invocation data is saved to
/tmp/proze-object-data/ - Rename this to
/tmp/proze-object-data-original/
- Invocation data is saved to
generate: Generate tests
cd /path/to/proze/generate/python3 analyze.py /path/to/method/wise/report.json- This generates
analyzed-method-wise-report-<project-name>.json
- This generates
mvn clean installjava -jar target/generate-version-jar-with-dependencies.jar /path/to/maven/project/ ./analyzed-method-wise-report-<project-name>.json- The generated test classes are prefixed with
TestProzeunderoutput/generated/<project-name>/ - Add these generated tests within a new module within the project
- The generated test classes are prefixed with
Owner
- Name: ASSERT
- Login: ASSERT-KTH
- Kind: organization
- Location: Sweden
- Website: https://github.com/ASSERT-KTH/
- Repositories: 87
- Profile: https://github.com/ASSERT-KTH
assertEquals("Research group at KTH Royal Institute of Technology, Stockholm, Sweden", description);
GitHub Events
Total
- Push event: 1
Last Year
- Push event: 1
Dependencies
- com.google.code.gson:gson 2.10.1
- fr.inria.gforge.spoon:spoon-core 10.4.2
- info.picocli:picocli 4.7.5
- org.apache.logging.log4j:log4j-api 2.7
- org.apache.logging.log4j:log4j-core 2.7
- org.apache.logging.log4j:log4j-slf4j-impl 2.7
- org.glowroot:glowroot-agent-plugin-api 0.13.6 provided
- com.google.code.gson:gson
- com.google.code.gson:gson
- fr.inria.gforge.spoon:spoon-core 10.4.2
- info.picocli:picocli 4.7.5
- org.apache.logging.log4j:log4j-api 2.7
- org.apache.logging.log4j:log4j-core 2.7
- org.apache.logging.log4j:log4j-slf4j-impl 2.7