É uma Exceção Testar Comportamento Excepcional? Uma Avaliação Empírica Utilizando Testes Automatizados em Java
O teste de software é uma atividade crucial para verificar a qualidade interna de um software. Durante os testes, os programadores frequentemente criam testes para o comportamento normal de uma determinada funcionalidade (por exemplo, um documento foi corretamente enviado para a nuvem?). Contudo, pouco se sabe se os programadores também criam testes para o comportamento excepcional (por exemplo, o que acontece se a rede falhar durante o envio do arquivo?). Para minimizar esta falha de conhecimento, neste artigo desenhamos e realizamos um estudo de método misto para entender como 417 projetos Java de código aberto estão testando o comportamento excepcional usando os frameworks JUnit e TestNG, e a biblioteca AssertJ. Verificamos que 254 (60,91%) projetos têm pelo menos um método de teste dedicado a testar o comportamento excepcional. Verificamos também que o número de métodos de teste de comportamento excepcional em relação ao número total de métodos de teste se situa entre 0% e 10% em 317 (76,02%) projetos. Além disso, 239 (57,31%) projetos testam apenas até 10% das exceções utilizadas no sistema em teste (System Under Test - SUT). Quando se trata de aplicações móveis, descobrimos que, em geral, os programadores prestam menos atenção aos testes de comportamento excepcionais quando comparados com os programadores de desktop/servidor e multiplataforma. Em geral, encontramos mais métodos de teste abrangendo exceções personalizadas (as criadas no próprio projeto) quando comparadas com as excepções padrão disponíveis no Java Development Kit (JDK) ou em bibliotecas de terceiros. Para triangular os resultados, realizamos uma pesquisa com 66 programadores dos projetos que estudamos. Em geral, os resultados da pesquisa confirmam os nossos resultados. Em particular, a maioria dos participantes concorda que os programadores negligenciam frequentemente testes de comportamento excepcionais. Como implicações, os nossos números podem ser importantes para alertar os desenvolvedores de que devem ser empregados mais esforços na criação de testes para o comportamento excepcional.
Testes, Exceções, Casos de Teste Excepcionais