Date of this Version
As the speed of microprocessors tails off, utilizing multiple processing cores per chip is becoming a common way for developers to achieve higher performance. However, writing concurrent programs can be a big challenge because of common concurrency faults. Because concurrency faults are hard to detect and reproduce, traditional testing techniques are not suitable. New techniques are needed, and these must be assessed. A typical method for assessing testing techniques is to embed faults in programs using mutation tools, and assess the ability of techniques to detect these. Although mutation testing techniques can be used to represent common faults, approaches for representing concurrency faults have not been created. In this paper, we introduce a methodology for injecting mutations related to concurrency faults, focusing on four common concurrency fault patterns as mutant operators. We implement the approach in the Eclipse IDE. We empirically study our approach's effectiveness by using it to seed various types of concurrency faults based on the four fault patterns in a set of programs. This approach generates many times more mutants than can be seeded by hand. We then execute the original programs and these mutants. We characterize the mutants in terms of detectability as part of our study. The results show that using the proposed tool, concurrent fault injection tool (CFIT) is feasible and efficient.
Adviser: Gregg Rothermel and Witty Srisa-an