dc.contributorSANTOS, André Luís de Medeiros
dc.contributorRIBEIRO, Márcio de Medeiros
dc.contributorhttp://lattes.cnpq.br/4226060363182113
dc.contributorhttp://lattes.cnpq.br/0084300900034108
dc.contributorhttp://lattes.cnpq.br/9300936571715992
dc.creatorOLIVEIRA, Leonardo Fernandes Mendonça de
dc.date2020-09-24T21:42:55Z
dc.date2020-09-24T21:42:55Z
dc.date2020-03-02
dc.date.accessioned2022-10-06T16:35:00Z
dc.date.available2022-10-06T16:35:00Z
dc.identifierOLIVEIRA, Leonardo Fernandes Mendonça de. Tackling the useless mutants problem. 2020. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2020.
dc.identifierhttps://repositorio.ufpe.br/handle/123456789/38088
dc.identifier.urihttp://repositorioslatinoamericanos.uchile.cl/handle/2250/3983627
dc.descriptionMutation testing is a fault-based testing criterion to assess and improve the quality of a test suite. Despite attracting much interest, the costs of using mutation testing are usually high, hindering its use in industry. Useless mutants (e.g., equivalent and duplicate) contribute to increase costs. The equivalent mutant problem has already been proven undecidable, and manually detecting equivalent mutants is an error-prone and timeconsuming task. The duplicate mutant, although eventually killed by some test, requires an unnecessary computational cost. This way, solutions, even partial, can help reducing these costs. In this work, we tackle the useless mutants problem from two perspectives. First, we propose improving the transformation rules embedded in the mutation operators to avoid useless mutants. We present i-rule, a common language to avoid the generation of equivalent (e-rule) and duplicate (d-rule) mutants. We also present a strategy to help mutation tool developers find out occurrence patterns that lead to new i-rules. We instantiate the strategy with 100 Java programs, which led us to find out 99 i-rules for three common mutation testing tools (MuJava, Major, and Pit). To evaluate the effectiveness of the i-rules on reducing costs, we implement 32 of them in the MuJava tool and execute with classes of well-known projects. The results show we reduced the number of mutants by almost 20% on average and saved time to generate the mutants, thus demonstrating the potential of our approach for reducing mutation costs. Second, we present an approach to suggest equivalent mutants by using automated behavioral testing. We perform static analysis to automatically generate tests directed for the entities impacted by the mutation. For each analyzed mutant, our approach can suggest the mutant as equivalent or non-equivalent. In the case of non-equivalent mutants, our approach provides the test cases capable of killing them. For the equivalent mutants suggested, we also provide a ranking of mutants with a strong or weak chance of the mutant being indeed equivalent. We implement our approach in a tool called Nimrod. To evaluate Nimrod, we execute it against a set of 1,542 mutants from eight open-source projects. The results indicate that the Nimrod is very effective in suggesting equivalent mutants. It reached more than 96% of accuracy in five out of eight studied subjects. Compared with manual analysis of the surviving mutants, Nimrod takes a third of the time to suggest equivalent and is 25 times faster to indicate non-equivalent.
dc.descriptionTeste de mutação é um critério, baseada em faltas, que serve para avaliar e melhorar a qualidade da suíte de testes. Apesar de atrair muito interesse, os custos para usar teste de mutação são geralmente altos, dificultando o sua adoção pela indústria. Mutantes inúteis (por exemplo, equivalentes e duplicados) contribuem para o aumento destes custos. Identificar todos os mutantes equivalentes de maneira automática não é possível, pois este problema foi provado indecidível. Contudo, deixar a detecção destes mutantes puramente manual é uma tarefa demorada e sujeita a erros. O mutante duplicado, embora eventualmente morto por algum teste, demanda um custo computacional desnecessário. Desta forma, soluções, mesmo que parciais, podem ajudar a reduzir estes custos. Neste trabalho, enfrentamos o problema dos mutantes inúteis a partir de duas perspectivas. Primeiro, propomos melhorar as regras de transformação embutidas nos operadores de mutação para evitar a geração de alguns mutantes inúteis. Para isso, apresentamos irule, uma definição para evitar a geração de mutantes equivalentes (e-rule) e duplicados (d-rule). Além disso, nós apresentamos uma estratégia para ajudar os desenvolvedores de ferramentas de mutação a descobrir padrões de ocorrência que levam a novas i-rules. Nós instanciamos a estratégia com 100 programas, o que nos levou a descobrir 99 i-rules em três ferramentas de teste de mutação (MuJava, Major, and Pit). Para avaliar a efetividade das i-rules na redução dos custos, nós implementamos as 32 delas na ferramenta MuJava e executamos com classes de projetos open-source. Nossa abordagem se mostrou promissora, pois conseguimos reduzir o número total de mutantes em quase 20%, em média, e economizamos tempo para gerar e compilar os mutantes. Na segunda abordagem, nós apresentamos uma técnica para sugerir mutantes equivalentes, utilizando testes gerados automaticamente. Nós primeiro realizamos análise estática para descobrir entidades impactadas pela mutação, e depois direcionamos a geração automática dos testes somente para estas entidades. Para cada mutante analisado, nossa abordagem pode sugeri-lo como equivalente ou não-equivalente. No caso de mutante não-equivalente, nossa abordagem fornece o caso de teste capaz de matá-lo. Para os mutantes sugeridos como equivalente, nós apresentamos um ranking indicando qual tem maior ou menor chance de ser realmente equivalente. Nós implementamos esta abordagem em uma ferramenta chamada Nimrod. Nós avaliamos o Nimrod com um benchmark de 1.542 mutantes de oito projetos open-source diferentes. Os resultados indicam que o Nimrod é muito eficaz na sugestão de mutantes equivalentes. Atingiu mais de 96% de precisão em cinco dos oito projetos estudados. Comparada à análise manual dos mutantes sobreviventes, o Nimrod leva um terço do tempo para sugerir um mutante como equivalente e é 25 vezes mais rápida para indicar um mutante não-equivalente.
dc.formatapplication/pdf
dc.languagepor
dc.publisherUniversidade Federal de Pernambuco
dc.publisherUFPE
dc.publisherBrasil
dc.publisherPrograma de Pos Graduacao em Ciencia da Computacao
dc.rightsopenAccess
dc.rightshttp://creativecommons.org/licenses/by-nc-nd/3.0/br/
dc.subjectEngenharia de software
dc.subjectTeste de software
dc.titleTackling the useless mutants problem
dc.typemasterThesis


Este ítem pertenece a la siguiente institución