All Downloads are FREE. Search and download functionalities are using the official Maven repository.

eu.stamp.botsing.fitnessfunction.FitnessFunctions Maven / Gradle / Ivy

Go to download

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