We build Evoobj on top of Evosuite. We can download the tool here. We can set different options to enable/disable Evoobj functionalities. Here is a tutorial to run Evoobj on target methods.
Ensure JDK 8 is installed.
Download the scripts and the target method list here.
Extract the 2 shell scripts (based on DynaMOSA approach) and method list text file into the same directory as the other SF100 project folders.
The Evosuite jar file, 2 shell scripts, method list text file and the 100 project folders should be in the same directory as seen in the screenshot below.
4. Run the two scripts with command ./<script-name>, as shown in the screenshot below.
5. When Evosuite is done, there will be two folders containing the results in excel files for the two experiments, each named with <script-name>. In the folders there will be two excel files for each project tested, as shown below. One of the excel file contains the results for all 10 iterations of the experiment, while the excel file with suffix _10times merges all 10 results into one row and calculates average results of the 10 iterations.
An example of the test results file 27_gangup_evotest.xlsx
An example of the test results file 27_gangup_evotest_10times.xlsx
Target method :
Object construction graph derived by Evoobj from the target branch:
By visiting each node in the above object construction graph, we can generate test skeleton as:
Coverage comparison for covering branches in the target method with DynaMOSA within 100s budget:
Evosuite:
Final coverage: 0.038461538461538464
Initial Coverage: 0.01282051282051282
Initialization Time: 1.588s
Used generations: 778
Evoobj:
Final coverage: 0.5641025641025641
Initial Coverage: 0.3076923076923077
Initialization Time: 20.849s
Used generations: 488
Target method :
Object construction graph derived by Evoobj from the target branch:
By visiting each node in the above object construction graph, we can generate test skeleton as:
Coverage comparison for covering branches in the target method with DynaMOSA within 100s budget:
Evosuite:
Final coverage: 0.115384615384615
Initial Coverage: 0.115384615384615
Initialization Time: 1.066s
Used generations: 1438
Evoobj:
Final coverage: 0.730769230769231
Initial Coverage: 0.273076923076923
Initialization Time: 13.351s
Used generations: 1101
Target method :
Object construction graph derived by Evoobj from the target branch:
By visiting each node in the above object construction graph, we can generate test skeleton as:
Coverage comparison for covering branches in the target method with DynaMOSA within 100s budget:
Evosuite:
Final coverage: 0.0970588235294118
Initial Coverage: 0.0882352941176471
Initialization Time: 1.415s
Used generations: 1333
Evoobj:
Final coverage: 0.547058823529412
Initial Coverage: 0.31764705882353
Initialization Time: 32.042s
Used generations: 428
Target method :
Object construction graph derived by Evoobj from the target branch:
By visiting each node in the above object construction graph, we can generate test skeleton as:
Coverage comparison for covering branches in the target method with DynaMOSA within 100s budget:
Evosuite:
Final coverage: 0.0882352941176471
Initial Coverage: 0.0882352941176471
Initialization Time: 7.597s
Used generations: 72
Evoobj:
Final coverage: 0.620588235294118
Initial Coverage: 0.208823529411765
Initialization Time: 36.846s
Used generations: 56
Target method :
Object construction graph derived by Evoobj from the target branch:
By visiting each node in the above object construction graph, we can generate test skeleton as:
Coverage comparison for covering branches in the target method with DynaMOSA within 100s budget:
Evosuite:
Final coverage: 0.126923076923077
Initial Coverage: 0.115384615384615
Initialization Time: 1.125s
Used generations: 1367
Evoobj:
Final coverage: 0.423076923076923
Initial Coverage: 0.269230769230769
Initialization Time: 16.441s
Used generations: 1003