Use este identificador para citar ou linkar para este item: http://repositorio.ufc.br/handle/riufc/54192
Tipo: Dissertação
Título: Understanding the effectiveness of exception handling testing in long-lived Java libraries
Título em inglês: Understanding the effectiveness of exception handling testing in long-lived Java libraries
Autor(es): Lima, Luan Pereira
Orientador: Rocha, Lincoln Souza
Coorientador: Bezerra, Carla Ilane Moreira
Palavras-chave: Exception handling testing;Mutation analysis;Adequacy measurement;Effectiveness measurement;Exploratory Study
Data do documento: 2019
Citação: LIMA, Luan Pereira. Understanding the effectiveness of exception handling testing in long-lived Java libraries. 2019. 60 f. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal do Ceará, Fortaleza, 2019.
Resumo: Linguagens de programação modernas (por exemplo, Java e C#) fornecem recursos para separar o código de tratamento de erros do código regular, buscando melhorar a compreensão e manutenção do software. No entanto, a forma como o código Exception Handling (EH) é estruturado em tais linguagens pode levar a múltiplos fluxos de controle, diferentes e complexos, o que pode afetar a testabilidade do software. Estudos anteriores relataram que o código EH é normalmente negligenciado, não é bem testado e seu uso indevido pode levar à degradação da confiabilidade e falhas catastróficas. No entanto, pouco se sabe sobre a relação entre as práticas de teste e a eficácia do teste EH. Neste estudo exploratório, (i) medimos o grau de adequação do teste EH em relação aos critérios de cobertura de código (instrução, ramificação e método); e (ii) avaliou a eficácia do teste de EH medindo sua capacidade de detectar falhas injetadas artificialmente (isto é, mutantes) usando 7 operadores de mutação de EH. Nosso estudo foi realizado usando suítes de teste de 27 bibliotecas Java de vida longa de sistemas de código aberto. Nossos resultados mostram que as instruções e ramificações dentro de blocos de captura e instruções de lançamento são menos cobertas, com significância estatística, do que as instruções e ramificações gerais. Apesar disso, a maioria dos sistemas estudados apresentou suítes de teste capazes de detectar mais de 70% das falhas injetadas.
Abstract: Modern programming languages (e.g., Java and C#) provide features to separate error-handling code from regular code, seeking to enhance software comprehensibility and maintainability. Nevertheless, the way EH code is structured in such languages may lead to multiple, different, and complex control flows, which may affect the software testability. Previous studies have reported that EH code is typically neglected, not well tested, and its misuse can lead to reliability degradation and catastrophic failures. However, little is known about the relationship between testing practices and EH testing effectiveness. In this exploratory study, we (i) measured the adequacy degree of EH testing concerning code coverage (instruction, branch, and method) criteria; and (ii) evaluated the effectiveness of the EH testing by measuring its capability to detect artificially injected faults (i.e., mutants) using 7 EH mutation operators. Our study was performed using test suites of 27 long-lived Java libraries from open source systems. Our results show that instructions and branches within catch blocks and throw instructions are less covered, with statistical significance, than the overall instructions and branches. Nevertheless, most of the studied systems presented test suites capable of detecting more than 70% of the injected faults.
URI: http://www.repositorio.ufc.br/handle/riufc/54192
Aparece nas coleções:DCOMP - Dissertações defendidas na UFC

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
2019_dis_lplima.pdf821,33 kBAdobe PDFVisualizar/Abrir


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