Estou trabalhando em várias aplicações, principalmente as herdadas. Atualmente, sua cobertura de código é bastante baixa: geralmente entre 10 e 50%.
Desde várias semanas, temos discussões recorrentes com as equipes de Bangalore (a parte principal do desenvolvimento é realizada no exterior na Índia) a respeito das exclusões de pacotes ou classes para Cobertura (nossa ferramenta de cobertura de código, mesmo se atualmente estamos migrando para JaCoCo).
O ponto de vista deles é o seguinte: como eles não gravam nenhum teste de unidade em algumas camadas do aplicativo (1) , essas camadas devem ser simplesmente excluídas da medida de cobertura do código. Em outras palavras, eles querem limitar a medida de cobertura do código ao código que é testado ou deve ser testado .
Além disso, quando eles trabalham no teste de unidade para uma classe complexa, os benefícios - puramente em termos de cobertura de código - passam despercebidos em um aplicativo grande. Reduzir o escopo da cobertura do código tornará esse tipo de esforço mais visível ...
O interesse dessa abordagem é que teremos uma medida de cobertura de código que indica o status atual da parte do aplicativo que consideramos testável .
No entanto, meu ponto de vista é que, de alguma forma, estamos fingindo os números. Esta solução é uma maneira fácil de alcançar um nível mais alto de cobertura de código sem nenhum esforço. Outro ponto que me incomoda é o seguinte: se mostrarmos um aumento de cobertura de uma semana para outra, como podemos saber se essas boas notícias se devem ao bom trabalho dos desenvolvedores ou simplesmente a novas exclusões?
Além disso, não poderemos saber exatamente o que é considerado na medida de cobertura do código. Por exemplo, se eu tiver um aplicativo de 10.000 linhas de código com 40% de cobertura de código, posso deduzir que 40% da minha base de código foi testada (2) . Mas o que acontece se definirmos exclusões? Se a cobertura do código agora é de 60%, o que posso deduzir exatamente? Que 60% da minha base de código "importante" é testada? Como posso
No que me diz respeito, prefiro manter o valor "real" da cobertura do código, mesmo que não possamos nos alegrar com isso. Além disso, graças ao Sonar, podemos navegar facilmente em nossa base de código e conhecer, para qualquer módulo / pacote / classe, sua própria cobertura de código. Mas é claro que a cobertura global do código ainda será baixa.
Qual a sua opinião sobre esse assunto? Como você se sai em seus projetos?
Obrigado.
(1) Essas camadas geralmente estão relacionadas à UI / Java beans, etc.
(2) Eu sei que isso não é verdade. De fato, isso significa apenas que 40% da minha base de código