Previous MSc Theses
"Automated Mutation Testing for Concurrent Software." P. Gray. C. Revie. Department of Computer and Information Sciences, University of Strathclyde. 2019. Download PDF (BibTeX) SD
Abstract:
Concurrency allows for multiple computations to be executed within a program at once (Mois 2015). Programmers utilise this feature for the benefits in performance, however, execution of these computations is inherently unpredictable and can lead to a variety of problems. Farchi et al. (2003) define ’bug patterns’ as the implementation of common errors that programmers encounter when using concurrency. Bradbury et al. (2006) build on this concept by introducing a variety of ’mutation operators’ that can be applied to concurrent features in Java. A mutation operator defines a mechanism that alters a segment of code for the purpose of evaluating the effectiveness of a system’s testing suite. If after applying a mutation to a code segment, the tests proceed to fail, then the tests have successfully identified a change in behaviour of the system; the mutation has been killed. However, if the tests continue to pass despite the changes in code, then tests have been unsuccessful at catching a mutation and therefore have not been designed effectively.
Having reviewed the relevant literature, the objectives of this project were to build an automatic mutation tool, apply mutations to different concurrent software systems and evaluate the effectiveness of the corresponding unit tests. The mutation tool was successfully built and was tested on two different systems: the Banking and Incrementer systems. The results of these experiments indicate that it is possible to achieve high levels of support for concurrent software with mutation scores of 86% and 100%, respectively for the Banking system and the Incrementer system. These scores represent the number of mutations that were successfully caught by unit tests compared to the total number of mutations applied to the system.