Below is a short reply to your question. As this group may not be the
best place to discuss Ekstazi, I would suggest that we continue the
discussion via emails or on the Ekstazi Google group
(
https://groups.google.com/forum/#!forum/ekstazi).
Infinitest and Ekstazi differ in several aspects. The two most
notable differences are 1) Infinitest collects dependencies
statically, while Ekstazi collects dependencies dynamically, and 2)
the (current) Infinitest implementation is oriented towards continuous
testing (and integration with IDEs), while the Ekstazi implementation
is oriented towards regression test selection (and integration with
build systems).
Infinitest is one of the best implementations of the test selection
algorithm known as class firewall
(
http://www.engr.sjsu.edu/gaojerry/course/287/Class-Firewall.pdf).
Although this algorithm can provide benefits (i.e., reduce test
execution time) in some cases, several research projects (e.g.,
http://www.cc.gatech.edu/home/orso/papers/orso.shi.harrold.FSE04.pdf)
showed that this algorithm selects (on average) many tests for
execution. In addition, static approaches to finding dependencies
have some limitations: supporting reflection, library changes, and
similar. Also, Infinitest uses timestamps to detect modified
dependencies, which has not been the best solution for several build
systems.
Ekstazi implements a new algorithm that collects dependencies
dynamically. This algorithm selects fewer tests than the algorithm
based on static dependencies. Additionally, this algorithm supports
reflection, library changes, etc. Finally, Ekstazi detects modified
dependencies based on the semantics of changes rather than on the
timestamps.
Milos