Teste de mutação para programas concorrentes em elixir - Bordignon, Matheus Deon (2019)
The processing capacity of computers has been insufficient and encourages the use of concurrent programming for the development of applications that reduce computational time. Elixir is a language that supports the development of concurrent and distributed applications in a dynamic and modern way. The use of concurrent programming differs from sequential programming, adding features such as communication, synchronization, and non-determinism to programs. Testing activities seek to guarantee the quality and correctness of the programs and they become more complex due to these characteristics presents in concurrent programs. Mutation testing is a test criterion based on mistakes made by programmers during software development and is highly effective in revealing defects. The aim of this work is the definition of mutation operators for concurrent functions in Elixir. For this, a benchmark of concurrent programs in Elixir was built and validated to aid in software testing activity. Using the benchmark, the fault taxonomy in Elixir was defined, exploiting the faults produced by the concurrent functions of the Kernel and the Task module. Considering the faults of the taxonomy and exploiting typical programmer mistakes during development, a set of mutation operators was defined to exploit concurrents aspects. Also, an experiment was proposed to evaluate some quality characteristics of the defined mutation operators and the results showed that the ReplSpawn mutation operator generated the largest number of mutants, while the DelReceive operator demonstred more completeness in the scope of fault taxonomy. The inclusion rate of the deletion mutation operators in relation to the DelSpawn and DelTaskStart operators was also calculated.