This page describes some of the different research areas I’ve been involved in to date.

Automatic Test Case Generation

Automatic Test Case Generation aims to develop techniques through which machines test their own software.

By recasting the test case generation problem to that of a search problem, test cases may be automatically discovered that fulfill different testing criteria. My work has also sought to integrate this process with that of human developers, with concerns such as readability of the generated test cases high on the agenda.

Database Testing

A database is one of the most important assets a business can own, so it is important that methods that protect and maintain its validity are tested, along with procedures used to access it.

In this work I have developed testing criteria for relational database schemas, along with automated test data generation approaches to fulfill them and mutation approaches to evaluate them.

Presentation Failures in Responsive Web Sites

Responsive web design is a relatively new approach to laying out the contents of a web page that “expands” and “contracts” to the size of display being used. In theory, the same version of the website should be viewable on a smaller device like a mobile phone, up to a large desktop display.

However, designing responsive web pages is an error prone task. One small change to the web site’s HTML or CSS usually means that the web page needs to be rechecked at every viewport resolution to be completely sure that bugs have not been introduced. This is a new project, but to date, we have developed an approach capable of alerting developers to potentially unintentional changes, and have developed the “ReDeCheck” tool to implement the idea and provide support to web developers.

Agent-Based Modelling

Agent-based modelling is a way of modelling a system from the “bottom-up” through the eyes of an individual, as opposed to “top-down” methods such as through systems of equations.

Agent-based modelling is a paradigm that not only makes it easy to model certain types of systems, but also to better understand how they work. For example, we have applied agent-based models to better understand how skin cells work. I am also interested in verifying the behaviour of the models when simulated.