Use este identificador para citar ou linkar para este item: http://repositorio.roca.utfpr.edu.br/jspui/handle/1/16471
Título: Teste de mutação para programas concorrentes em elixir
Título(s) alternativo(s): Mutation testing for concurrent programs in elixir
Autor(es): Bordignon, Matheus Deon
Orientador(es): Silva, Rodolfo Adamshuk
Palavras-chave: Linguagens de programação funcional
Software - Desenvolvimento
Engenharia de software
Functional programming languages
Computer software - Development
Software engineering
Data do documento: 26-Nov-2019
Editor: Universidade Tecnológica Federal do Paraná
Câmpus: Dois Vizinhos
Referência: BORDIGNON, Matheus Deon. Teste de mutação para programas concorrentes em elixir. 2019. Trabalho de Conclusão de Curso (Bacharelado em Engenharia de Software) - Universidade Tecnológica Federal do Paraná, Dois Vizinhos, 2019.
Resumo: A capacidade de processamento dos computadores mostra-se cada vez mais insuficiente e incentiva o uso de programação concorrente para o desenvolvimento de aplicações que reduzam o tempo computacional. O Elixir é uma linguagem que suporta o desenvolvimento de aplicações concorrentes e distribuídas de forma dinâmica e moderna. A utilização da programação concorrente difere-se da programação convencional, adicionando características como a comunicação, sincronização e o não determinismo aos programas. As atividades de teste, que buscam garantir a qualidade e corretude dos programas, tornam-se mais complexas devido a estas características. O teste de mutação é um critério de teste que se baseia nos enganos cometidos por programadores durante o desenvolvimento do software e apresenta uma alta eficácia para revelar defeitos. Este trabalho tem por objetivo a definição de operadores de mutação para funções concorrentes em Elixir. Para isso, um benchmark de programas concorrentes em Elixir foi construído e validado para auxiliar na atividade de teste de software. Utilizando o benchmark, foi definida a taxonomia de falhas em Elixir, explorando as falhas produzidas pela funções concorrentes do Kernel e do módulo Task. Considerando as falhas da taxonomia e explorando enganos típicos de programadores durante o desenvolvimento, foi definido um conjunto de operadores de mutação para explorar aspectos de concorrência. Também, foi proposto um experimento para avaliar algumas características de qualidade dos operadores de mutação definidos e os resultados mostraram que o operador de mutação ReplSpawn gerou o maior número de mutantes, enquanto o operador DelReceive demonstrou mais completude na abrangência da taxonomia de falhas. No experimento também foi calculada a taxa de inclusão dos operadores de mutação de deleção em relação aos operadores DelSpawn e DelTaskStart.
Abstract: 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.
URI: http://repositorio.roca.utfpr.edu.br/jspui/handle/1/16471
Aparece nas coleções:DV - Engenharia de Software

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
DV_COENS_2019_2_10.pdf1,6 MBAdobe PDFThumbnail
Visualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.