Mutation Operators for Concurrent Java (J2SE 5.0)

by Jeremy S. Bradbury, James R. Cordy, Juergen Dingel


The current version of Java (J2SE 5.0) provides a high level of support for concurreny in comparison to previous versions. For example, programmers using J2SE 5.0 can now achieve synchronization between concurrent threads using explicit locks, semaphores, barriers, latches, or exchangers. Furthermore, built-in concurrent data structures such as hash maps and queues, built-in thread pools, and atomic variables are all at the programmer’s disposal.

We are interested in using mutation analysis to evaluate, compare and improve quality assurance techniques for concurrent Java programs. Furthermore, we believe that the current set of method mutation operators and class operators proposed in the literature are insufficient to evaluate concurrent Java source code because the majority of operators do not directly mutate the portions of code responsible for synchronization. In this paper we will provide an overview of concurrency constructs in J2SE 5.0 and a new set of concurrent mutation operators. We will justify the operators by categorizing them with an existing bug pattern taxonomy for concurrency. Most of the bug patterns in the taxonomy have been used to classify real bugs in a benchmark of concurrent Java applications.

Bibliographic Information [Bibtex format]

Author = {Jeremy S. Bradbury AND James R. Cordy AND Juergen Dingel},
Booktitle = {Proc. of the 2nd Workshop on Mutation Analysis (Mutation 2006)},
Month = {Nov.},
Pages = {83--92},
Title = {Mutation Operators for Concurrent {Java} ({J2SE 5.0})},
Year = {2006}}

Paper: [PDF]   Technical Report: [PDF]   Presentation: [PDF]