/** * Add new fitness function (i.e., for new mutation) * * @param function * a {@link org.evosuite.ga.FitnessFunction} object. */ public void addFitnessFunction(FitnessFunction<T> function) { fitnessFunctions.add(function); localObjective.addFitnessFunction(function); }
private double getFitness(TestSuiteChromosome suite) { for (FitnessFunction<? extends Chromosome> ff : objective.getFitnessFunctions()) { TestSuiteFitnessFunction tff = (TestSuiteFitnessFunction) ff; tff.getFitness(suite); } return suite.getFitness(); }
private boolean removeCharacters(LocalSearchObjective<TestChromosome> objective, TestChromosome test, StringPrimitiveStatement p, int statement) { boolean improvement = false; backup(test, p); for (int i = oldValue.length() - 1; i >= 0; i--) { String newString = oldValue.substring(0, i) + oldValue.substring(i + 1); p.setValue(newString); logger.info(" " + i + " " + oldValue + "/" + oldValue.length() + " -> " + newString + "/" + newString.length()); if (objective.hasImproved(test)) { logger.info("Has improved"); backup(test, p); improvement = true; } else { logger.info("Has not improved"); restore(test, p); } } return improvement; }
int result = objective.hasChanged(test); if (result < 0) { backup(test, p);
+ newValue); if (objective.hasNotWorsened(test)) { return true; } else {
break; if (localSearchObjective.isDone()) { break;
/** * Indicates if the fitness of the individual has improved with respected to * parameter <code>fitnessBefore</code> * * @param fitnessBefore * the previous fitness of the individual * @param individual * the individual * @param objective * the local search objective * @return true if fitness improved, false otherwise */ private boolean hasImproved(double fitnessBefore, TestSuiteChromosome individual, LocalSearchObjective<TestSuiteChromosome> objective) { return objective.isMaximizationObjective() ? fitnessBefore < individual.getFitness() : fitnessBefore > individual.getFitness(); }
int result = objective.hasChanged(test); if (result < 0) { backup(test, p);
if (!objective.hasNotWorsened(test)) { logger.debug("Fitness has decreased, so restoring test"); restore(test);
break; if (objective.isDone()) { break;
private void runArrayExample(int length, double expectedFitness) throws ClassNotFoundException, ConstructionFailedException, NoSuchMethodException, SecurityException { TestCase test = getArrayTest(length); System.out.println("Test: "+test.toCode()); TestSuiteChromosome suite = new TestSuiteChromosome(); BranchCoverageSuiteFitness fitness = new BranchCoverageSuiteFitness(); BranchCoverageMap.getInstance().searchStarted(null); assertEquals(4.0, fitness.getFitness(suite), 0.1F); suite.addTest(test); //assertEquals(1.0, fitness.getFitness(suite), 0.1F); TestSuiteLocalSearch localSearch = TestSuiteLocalSearch.selectTestSuiteLocalSearch(); LocalSearchObjective<TestSuiteChromosome> localObjective = new DefaultLocalSearchObjective<TestSuiteChromosome>(); localObjective.addFitnessFunction(fitness); localSearch.doSearch(suite, localObjective); System.out.println("Fitness: "+fitness.getFitness(suite)); System.out.println("Test suite: "+suite); assertEquals(expectedFitness, fitness.getFitness(suite), 0.1F); BranchCoverageMap.getInstance().searchFinished(null); }
private boolean removeCharacters(LocalSearchObjective<TestChromosome> objective, TestChromosome test, StringPrimitiveStatement p, int statement) { boolean improvement = false; backup(test, p); for (int i = oldValue.length() - 1; i >= 0; i--) { String newString = oldValue.substring(0, i) + oldValue.substring(i + 1); p.setValue(newString); logger.info(" " + i + " " + oldValue + "/" + oldValue.length() + " -> " + newString + "/" + newString.length()); if (objective.hasImproved(test)) { logger.info("Has improved"); backup(test, p); improvement = true; } else { logger.info("Has not improved"); restore(test, p); } if(LocalSearchBudget.getInstance().isFinished()) break; } return improvement; }
/** * Applies DSE on the test case of the suite * * @param suite * @param testIndex * @param test * @param objective * @return */ private boolean applyDSE(TestSuiteChromosome suite, int testIndex, TestChromosome test, LocalSearchObjective<TestSuiteChromosome> objective) { TestSuiteLocalSearchObjective testSuiteObject = TestSuiteLocalSearchObjective .buildNewTestSuiteLocalSearchObjective(objective.getFitnessFunctions(), suite, testIndex); DSETestCaseLocalSearch dseTestCaseLocalSearch = new DSETestCaseLocalSearch(suite); boolean improved = dseTestCaseLocalSearch.doSearch(test, testSuiteObject); return improved; }
logger.info("Trying increment of " + p.getCode()); int change = objective.hasChanged(test); if(change != 0) changed = change; logger.info("Trying decrement of " + p.getCode()); change = objective.hasChanged(test); if (change < 0) { logger.info("Iterating because of improvement");
localObjective.addFitnessFunction(fitness); localSearch.doSearch(suite, localObjective); System.out.println("Fitness: "+fitness.getFitness(suite));
if (objective.hasImproved(test)) { backup(test, p);
/** * Applies AVM on the test case in the suite * * @param suite * @param testIndex * @param test * @param localSearchObjective * @return */ private boolean applyAVM(TestSuiteChromosome suite, int testIndex, TestChromosome test, LocalSearchObjective<TestSuiteChromosome> objective) { logger.debug("Local search on test " + testIndex + ", current fitness: " + suite.getFitness()); final List<FitnessFunction<? extends Chromosome>> fitnessFunctions = objective.getFitnessFunctions(); TestSuiteLocalSearchObjective testCaseLocalSearchObjective = TestSuiteLocalSearchObjective .buildNewTestSuiteLocalSearchObjective(fitnessFunctions, suite, testIndex); AVMTestCaseLocalSearch testCaselocalSearch = new AVMTestCaseLocalSearch(); boolean improved = testCaselocalSearch.doSearch(test, testCaseLocalSearchObjective); return improved; }
private void runFloatExample(float x, float y) throws ClassNotFoundException, ConstructionFailedException, NoSuchMethodException, SecurityException { TestCase test = getFloatTest(x, y); TestSuiteChromosome suite = new TestSuiteChromosome(); BranchCoverageSuiteFitness fitness = new BranchCoverageSuiteFitness(); BranchCoverageMap.getInstance().searchStarted(null); assertEquals(4.0, fitness.getFitness(suite), 0.1F); suite.addTest(test); assertEquals(1.0, fitness.getFitness(suite), 0.1F); TestSuiteLocalSearch localSearch = TestSuiteLocalSearch.selectTestSuiteLocalSearch(); LocalSearchObjective<TestSuiteChromosome> localObjective = new DefaultLocalSearchObjective<TestSuiteChromosome>(); localObjective.addFitnessFunction(fitness); localSearch.doSearch(suite, localObjective); System.out.println("Fitness: "+fitness.getFitness(suite)); System.out.println("Test suite: "+suite); assertEquals(0.0, fitness.getFitness(suite), 0.1F); BranchCoverageMap.getInstance().searchFinished(null); }
if (objective.hasImproved(test)) { backup(test, p); improvement = true; if (objective.hasImproved(test)) { backup(test, p); improvement = true;
TestSuiteFitnessFunction defaultFitness = (TestSuiteFitnessFunction) objective.getFitnessFunctions().get(0); for (FitnessFunction<? extends Chromosome> ff : objective.getFitnessFunctions()) { ((TestSuiteFitnessFunction) ff).getFitness(individual);