
eu.stamp.botsing.fitnessfunction.FitnessFunctions Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of botsing-reproduction Show documentation
Show all versions of botsing-reproduction Show documentation
The reproduction plugin contains the evolutionary algorithm used to reproduce a crash.
The newest version!
package eu.stamp.botsing.fitnessfunction;
import eu.stamp.botsing.CrashProperties;
import eu.stamp.botsing.coverage.io.input.InputCoverageFactory;
import eu.stamp.botsing.coverage.io.output.OutputCoverageFactory;
import eu.stamp.botsing.reproduction.CrashReproductionGoalFactory;
import org.evosuite.ga.Chromosome;
import org.evosuite.ga.FitnessFunction;
import org.evosuite.testcase.TestFitnessFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class FitnessFunctions extends eu.stamp.botsing.commons.fitnessfunction.FitnessFunctions {
private static final Logger LOG = LoggerFactory.getLogger(FitnessFunctions.class);
public List getFitnessFunctionList(){
List goalsList = new ArrayList<>();
// crash coverage goals
CrashReproductionGoalFactory goalFactory = new CrashReproductionGoalFactory();
goalsList.addAll(goalFactory.getCoverageGoals());
if(CrashProperties.IODiversity){
// input coverage goals
InputCoverageFactory inputFactory = new InputCoverageFactory();
goalsList.addAll(inputFactory.getCoverageGoals());
// output coverage goals
OutputCoverageFactory outputFactory = new OutputCoverageFactory();
goalsList.addAll(outputFactory.getCoverageGoals());
}
return goalsList;
}
@Override
public boolean isCriticalGoalsAreCovered(Set> uncoveredGoals) {
for (FitnessFunction goal: uncoveredGoals){
if(goal instanceof IntegrationTestingFF || goal instanceof WeightedSum){
return false;
}
}
return true;
}
@Override
public void printCriticalTargets(Map, Double> front0) {
for(FitnessFunction> g: front0.keySet()){
if(g instanceof IntegrationTestingFF ){
LOG.info(""+g+": "+front0.get(g));
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy