This page describes how to run EvoSpex and Daikon in order to infer postconditions for the target subjects from the SF110 project. For performing the experiments on the subjects, the following actions are required:
Download the SF110 subjects
Uncompress the dowloaded file and create the environment variable SF110SRC pointing to the directory created when uncompressing
By doing ls $SF110SRC, the 16 projects analyzed in the paper should be listed. The steps described below focuses on the project 2_a4j (for the remaining subjects, the corresponding project name should be used instead of 2_a4j) and the following assumptions are made:
The project 2_a4j is compiled (if not, go to $SF110SRC/2_a4j and do ant compile)
The current directory is the evospex folder created when downloading our tool
EvoSpex was executed for each target method until it reached 30 generations or a 10 minute timeout was fulfilled. This execution was repeated 10 times, and then the postcondition assertion that repeated the most number of times was selected. For instance, to execute EvoSpex for project 2_a4j run:
./experiments/sf110/run-evospex-project.sh 2_a4j 10
The script will run EvoSpex 10 times for each of the analyzed methods of project 2_a4j. Each execution will be stored in the folder experiments/sf110/2_a4j/evospex-results.
To run Daikon, you will need to download the latest version (5.8.4) from this link and follow the instalation instructions. Then, ensure that the environment variable DAIKONDIR is pointing to the Daikon's installation folder. Finally, to execute Daikon for a single SF110 project, simply run the following script:
./experiments/sf110/run-daikon-project.sh 2_a4j
This execution will run Daikon performing the three usual steps described in this example. As a result, postconditions for each of the target methods will be generated and saved in the folder experiments/sf110/2_a4j/daikon-results. As described in our paper, it is important to remark that the test suite that Daikon is using to infer the postconditions, is exactly the same that was used to produce the valid/invalid states in our technique.