00 CAMPUS ARISTÓTELES CALAZANS SIMÕES (CAMPUS A. C. SIMÕES) IC - INSTITUTO DE COMPUTAÇÃO Dissertações e Teses defendidas na UFAL - IC
Use este identificador para citar ou linkar para este item: http://www.repositorio.ufal.br/jspui/handle/123456789/10769
Tipo: Dissertação
Título: É uma exceção testar comportamento excepcional? Uma avaliação empírica utilizando testes automatizados em Java
Autor(es): Dias, Francisco Dalton Barbosa
Primeiro Orientador: Ribeiro, Márcio de Medeiros
metadata.dc.contributor.referee1: Santos Neto, Baldoino Fonseca dos
metadata.dc.contributor.referee2: Gheyi, Rohit
Resumo: Executar testes de software é uma atividade crucial para avaliar a qualidade interna de um sistema. Durante os testes, os desenvolveres geralmente criam testes para o comportamento esperado de uma determinada funcionalidade (e.g., o arquivo foi corretamente enviado para a nuvem”). No entanto, pouco é conhecido se os desenvolvedores também criam testes para comportamentos excepcionais (e.g., o que acontece se a conexão de rede for interrompida enquanto o arquivo é enviado?). Para minimizar essa lacuna de conhecimento, neste trabalho nós desenhamos e executamos um estudo de método misto para entender se e até que ponto 417 projetos Java de código aberto estão testando o comportamento excepcional usando os frameworks JUnit e TestNG, e a biblioteca AssertJ. Através de uma análise estática, nós descobrimos que 254 (60,91%) projetos possuem ao menos um método de teste dedicado ao comportamento excepcional. Também descobrimos que o número de métodos de testes para o comportamento excepcional em relação ao total de testes está entre 0% e 10% em 317 (76,02%) projetos. Além disso, 239 (57,31%) projetos testam apenas até 10% das exceções usadas no código do sistema em teste —System Under Test (SUT)—. Quando avaliamos aplicativos para dispositivos móveis, nós observamos que, em geral, os desenvolveres dedicam menos atenção aos testes de comportamentos excepcionais quando comparados aos desenvolvedores de aplicações para desktop/servidores e multi-plataforma. Em geral, nós encontramos mais métodos de testes cobrindo exceções customizadas (as que são criadas dentro do próprio projeto) do que as exceções padrões disponíveis no Java Development Kit (JDK) ou em bibliotecas de terceiros. Além disso, nós também realizamos uma análise dinâmica em um subconjunto de 39 projetos, com dados de cobertura de linha publicamente disponíveis, para investigar se e até que ponto as suítes de testes excercitam os throw statements encontrados no código do sistema testado. Os resultados da nossa análise dinâmica indicam que as suítes de testes não exercitam a maioria dos throw statements, mesmo em projetos onde parece haver preocupações relacionadas à cobertura de código. Nós também enriquecemos o entendimento sobre como os desenvolvedores escrevem seus testes de comportamentos excepcionais em termos de construções do JUnit, TestNG, e do AssertJ. Para triangular os resultados, nós conduzimos uma pesquisa com 66 desenvolvedores dos projetos que estudamos. Em geral, os resultados da pesquisa confirmaram nossas descobertas. Em particular, a maioria dos participantes concordam que os desenvolvedores frequentemente negligenciam testes de comportamentos excepcionais. Como implicações, nossos números podem ser importantes para alertar os desenvolvedores de que mais esforço deve ser feito na criação de testes para comportamentos excepcionais.
Abstract: Software testing is a crucial activity to check the internal quality of a software. During testing, developers often create tests for the normal behavior of a particular functionality (e.g., was this file properly uploaded to the cloud?). However, little is known whether developers also create tests for the exceptional behavior (e.g., what happens if the network fails during the file upload?). To minimize this knowledge gap, in this work we designed and performed a mixed-method study to understand whether and to what extent 417 open source Java projects are testing the exceptional behavior using the JUnit and TestNG frameworks, and the AssertJ library. Through static analysis, we found that 254 (60.91%) projects have at least one test method dedicated to test the exceptional behavior. We also found that the number of test methods for exceptional behavior with respect to the total number of test methods lies between 0% and 10% in 317 (76.02%) projects. Also, 239 (57.31%) projects test only up to 10% of the used exceptions in the System Under Test (SUT). When it comes to mobile apps, we found that, in general, developers pay less attention to exceptional behavior tests when compared to desktop/server and multi-platform developers. In general, we found more test methods covering custom exceptions (the ones created in the own project) when compared to standard exceptions available in the Java Development Kit (JDK) or in third-party libraries. Moreover, we also performed a dynamic analysis on a subset of 39 projects, with publicly available line coverage reports, to investigate whether and to what extent the test suites exercises the throw statements found in the SUT. The results of the dynamic analysis indicate that the test suites do not exercise the most of throw statements, even in projects where there seem to have concerns about code coverage. We also enriched the understanding of how developers write their exceptional behavior tests in terms of constructs from JUnit, TestNG, and AssertJ. To triangulate the results, we conduct a survey with 66 developers from the projects we study. In general, the survey results confirm our findings. In particular, the majority of the respondents agrees that developers often neglect exceptional behavior tests. As implications, our numbers might be important to alert developers that more effort should be placed on creating tests for the exceptional behavior.
Palavras-chave: Java (Linguagem de programação de computador) - Comportamento excepcional
Software - Testes
Exceptions
Exceptional behavior
Software testing
Testes de software
CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Idioma: por
País: Brasil
Editor: Universidade Federal de Alagoas
Sigla da Instituição: UFAL
metadata.dc.publisher.program: Programa de Pós-Graduação em Informática
Citação: DIAS, Francisco Dalton Barbosa. É uma exceção testar comportamento excepcional? Uma avaliação empírica utilizando testes automatizados em Java. 2023. 53 f. Dissertação (Mestrado em Informática) – Programa de Pós-Graduação em Informática, Instituto de Computação, Universidade Federal de Alagoas, Maceió, 2020.
Tipo de Acesso: Acesso Aberto
URI: http://www.repositorio.ufal.br/jspui/handle/123456789/10769
Data do documento: 29-mai-2020
Aparece nas coleções:Dissertações e Teses defendidas na UFAL - IC



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