Abstract:Concurrent programs are composed of multiple concurrent execution flows, which usually share storage space in an explicit or implicit manner. Uncertainty in the execution order of flows poses challenges for concurrent program testing. Mutation testing is a fault-based testing technique that is widely adopted to evaluate the adequacy of test suites and the effectiveness of test techniques. A key issue to applying mutation testing to concurrent programs is how to efficiently derive a large number of mutants that simulate possible concurrency-specific faults. This study proposes a mutation testing framework for concurrent programs and presents an automated concurrent mutant generation system called CMuJava. An empirical study is conducted to evaluate the correctness and adequacy of mutant sets generated by CMuJava and the mutant generation efficiency of CMuJava. The experimental results show that CMuJava can not only generate correct and adequate mutants, but also significantly improve the efficiency of manual mutant generation.