Ekstazi is a tool for optimizing software testing. Ekstazi implements Regression Test Selection (RTS) for Java, which is a technique to detect a set of tests that can be skipped after a code change.
If you have Maven, building Ekstazi is trivial:
JAVA_TOOL_OPTIONS="-Djdk.attach.allowAttachSelf=true -Djava.security.manager=allow" mvn install
(-Djdk.attach.allowAttachSelf=true
is required from Java 11 and
-Djava.security.manager=allow
is required from Java 21.)
Building Ekstazi targets Java 8 bytecode specification. The following Java versions were used successfully to build Ekstazi code.
Ekstazi SHA | Java | Maven |
---|---|---|
16fffb9e | 8; 11; 17; 21 | 3.5.2 |
At this point, most of the instructions are located on the official Ekstazi web page.
The table below shows the known working combination. (Although we focus on Java LTS versions, other versions might work as well.)
Ekstazi SHA | Java | Maven | JUnit |
---|---|---|---|
16fffb9e | 8; 11 ✴️ ; 17 ✴️ ; 21 ✴️ | 3.5.2 | 3.8.2; 4.10; 4.13.2 |
✴️ Running these configuration requires setting an extra option on command line:
JAVA_TOOL_OPTIONS="-Djdk.attach.allowAttachSelf=true" mvn ...
You need an extra option for Java 21:
JAVA_TOOL_OPTIONS="-Djdk.attach.allowAttachSelf=true -Djava.security.manager=allow" mvn ...
The Ekstazi Logo was designed by Vladimir Petrovic. We also thank Aleksandar Milicevic for his feedback on this work and many members of the open-source community (especially Apache Commons Math developers, Apache CXF developers, and Apache Caml developers) for their willingness to communicate with us on topics related to Ekstazi.
If you have used Ekstazi in a research project, please cite the following paper:
@inproceedings{GligoricETAL15Ekstazi,
author = {Gligoric, Milos and Eloussi, Lamyaa and Marinov, Darko},
title = {Practical Regression Test Selection with Dynamic File Dependencies},
booktitle = {International Symposium on Software Testing and Analysis},
pages = {211--222},
year = {2015},
}
Feel free to get in touch if you have any comments: Milos Gligoric
<milos.gligoric@gmail.com>
.