COINSE (Computational Intelligence for Software Engineering) Lab focuses on the application of various computational intelligence techniques to problems in software engineering. We apply techniques such as genetic algorithm, machine learning, and Monte-Carlo methods, in order to solve problems such as automated test input generation, regression testing optimisation, automated design of debugging aides and code patches, etc. Our research aim is twofolds: to automate repetitive and error-probe human tasks in software engineering sing computational intellicenge, and to provide insights from a large volume of data that is beyond human comprehension.
Automated debugging techniques aim to inform the developer the location and the case of the failure based on the outcome of testing. Existing techniques have been designed manually; COINSE Lab showed that genetic programming can automatically evolve a fault localisation technique that is as strong as the human designed ones.
Developers cannot optimise their code to cater for production hardware and other environmental factors after the deployment. COINSE Lab is working on a technique that allows software to gradually optimise itself after deployment, so that it adapts to the live environment.
Measuring Test Diversity
One way to maximise the test effectiveness in limited time is to use the most diverse test set. Existing techniques either ignore this, or rely on random sampling of input values to promote diversity. COINSE Leb is working on Information Theoretic measure of test set diversity, so that we can measure the information contents in the test input values directly. This way, we can measure the test diversity even before the code has been written; and we can optimise the subset of test cases based on the diversity of the set.