Undergraduate Projects

GF-UG-1: A Pastebin for Unit Testing

Pastebin is a popular web application that allows developers to store
and share pieces of source code for a certain period of time. Newer
tools like ideone even allow code to be compiled and run. To take
this a step further, the aim of this project is to create a
pastebin-like web application that uses the EvoSuite tool to
automatically generate unit tests for the pasted Java code. Users
can paste Java classes, and receive JUnit tests they can share.

Skills required:

  • Good programming skills (Java, Python, or any other)

Initial reading and useful links:

GF-UG-2: A Parallel Genetic Algorithm for Test Generation

evo_bug_231F20

The EvoSuite tool automatically produces unit test suites for any given Java class using a Genetic Algorithm (GA) — an efficient search algorithm mimicking natural evolution, where a population of candidate solutions is evolved towards an optimisation target. This can be a slow process, which can be improved by evolving several populations in parallel, and exchanging information between populations. The aim of this project is to extend EvoSuite to make use of multi-core environments in order to evolve populations in a parallel GA.

Skills required:

  • Java

Initial reading and useful links:

GF-UG-3: Multi-objective Evolutionary Unit Test Generation

evo_bug_231F20Multi-objective optimisation (MOO) describes the process of optimizing a solution with respect to several conflicting goals at the same time. In unit test generation, one ideally wants to cover as much as possible code, yet tests should be short and quick — but fewer and smaller tests cover less code. The aim of this project is to implement an existing MOO algorithm (e.g., NSGA-II, SPEA2) as an extension of the Genetic Algorithm (GA) implemented in the EvoSuite tool.

Skills required:

  • Good programming skills (Java)

Initial reading and useful links:

GF-UG-4: Google Web Toolkit Unit Test Generation

The Google Web Toolkit (GWT) allows building complex browser-based applications entirely in Java, and for production translates the Java code to AJAX/JavaScript and Java based code. The aim of this project is to integrate the EvoSuite unit test generation tool in the GWT Eclipse plugin, such that web applications developed with GWT can have unit tests generated automatically while in development mode (i.e. while they are compiled as Java code).

Requires skills:

  • Good programming skills (Java)

Initial reading and useful links:

GF-UG-5: Parameter Control in a Genetic Algorithm for Test Generation

evo_bug_231F20Unit test generation based on Genetic Algorithms (GA) can automatically produce test suites with high code coverage, but the success of the technique is highly dependent on the configuration, and getting optimal parameters that are good for all problem instances is impossible. In particular, GAs can have dozens of parameters, and tuning such a tool is a major challenge. The aim of this project is to extend the GA in the EvoSuite unit test generation tool to adaptively change parameters during the search. As a result, parameters will no longer have to be manually chosen, but evolve together with the population of the GA towards whatever is most suitable for the problem at hand.

Required skills:

  • Good programming skills (Java)

Initial reading and useful links:

GF-UG-6: Eclipse QuickFixes for Automated Unit Tests

The Eclipse IDE nicely highlights statically detectable problems in
the source code (e.g. compile errors) and suggests corrections
(QuickFixes, e.g. one can automatically add imports). Automated unit testing can easily detect program crashes and other problems, and communicates with the developer through test cases: “Here are 100 unit tests that lead to a NullPointerException”. Rather than such tedious test cases, a much better way to communicate this information to the user would be in terms of code markers (like they are used for compiler warnings). Each such test warning can be associated with a quickfix, e.g. adding a throws declaration for an undeclared exception. The aim of this project is to write an Eclipse plugin that automatically runs the EvoSuite unit test generation tool in the background while writing Java programs, and to show markers for problems found together with potential QuickFixes.

Skills required:

  • Java
  • Eclipse

Initial reading and useful links: