Mutation Operators for Concurrent Programs in Elixir
Matheus Deon Bordignon, Rodolfo Adamshuk Silva · 2020
Emerging programming languages encourage programmers to develop applications using concurrent programming. For instance, Elixir is a language that supports the development of concurrent and distributed applications. Concurrent programming differs from sequential programming by adding features such as communication, synchronization, and non-determinism to programs. Those features must be considered in the testing activity to guarantee the quality and correctness of programs. Mutation testing is a test criterion based on mistakes made by programmers during software development and is highly effective in revealing defects. This paper presents a set of mutation operators for concurrent programs in Elixir that can be applied to functions present in the Kernel and Task modules. The set was defined based on a taxonomy of faults defined for concurrent programs in Elixir. As proof of concept, the mutation operators were applied to a benchmark of Elixir programs to demonstrate the mutation testing process.