se logo Chair of Software Engineering
eth logo


Master Thesis

Type of project:
Master Thesis, September 2009 - March 2010

Lucas S. Silva

Automated Object-Oriented Software Testing using Genetic Algorithms and Static-Analysis

Supervising Assistant:
Yi Wei


It is estimated that 80% of software development cost is spent on detecting and fixing defects. To tackle this issue, a number of tools and testing techniques have been developed to improve the testing framework. Although techniques such as static analysis, random testing and evolutionary testing have
been used to automate the testing process, it is not clear what is the best approach. One way to view software testing is as an optimization problem, where the test cases are the parameters and the number of faults found, state coverage and number of tested features can be used as the optimization variables.

One commonly used optimization method is genetic Algorithms (evolutionary testing) , but previous research on evolutionary testing has mainly focused on procedural programming languages with simple test data inputs such as numbers. In this work, we present an evolutionary object-oriented testing approach that combines a genetic algorithm with static analysis to increase the number of faults found within a time frame. A total of 4,379 hours of experiments were executed to evaluate the effectiveness of the evolutionary testing approach implemented compared to a random testing strategy and a precondition-satisfaction strategy.

The results show that genetic algorithm combined with static analysis can increase the number of faults by 34% compared to the second best performing strategy. It also showed that  compared to the other two strategies, the chance of a test case generated by our evolutionary testing approach to find a fault is 320% higher.