EvoSuite / evosuite

EvoSuite - automated generation of JUnit test suites for Java classes
http://www.evosuite.org
GNU Lesser General Public License v3.0
832 stars 341 forks source link

Symbolic Engine | Added DFS Exploration Algorithm + Improvements #342

Closed ilebrero closed 3 years ago

ilebrero commented 3 years ago

Details

Added a DFS strategy (Implementation is based on the legacy's module algorithm) and some tweaking to improve the general DSE exploration algorithm.

Changes

DSE Module

Exploration Algorithm

Stopping conditions

Fixes

Legacy DSE Module

Path Divergences

Experiments

Compared it against the legacy module. Even though the implementation should be the same, there's a significant difference in performance. For some reason path conditions are larger, cache hit rate is 0 which results in less coverage in the same amount of time.

(UPDATE) fixed experiments

The legacy module was adding the test cases to the resulting test suite as soon as it created them. The new module was storing them in a worklist instead, and adding them to the test suite only when they were retrieved for exploration. This resulted in a lot of test cases stored in the worklist that didn't end up in the resulting test suite.

gofraser commented 3 years ago

LGTM