Cobertura de Código

By Administrador, on 02-04-2008 00:00

Views : 34229

Favoured : None

Published in : Java, General

Olá, neste artigo vou falar um pouco sobre cobertura de código e mostrar uma ferramenta muito boa para usar com o eclipse.


Hoje em dia é muito comum a preocupação de muitos desenvolvedores com qualidade de software e com testes automatizados. E para melhorar a qualidade de um software existem várias ferramentas livre que auxiliam em diversas áreas, como métricas, cobertura de código, testes funcionais, analise de possíveis bugs (findBugs, PMD) e etc...
Trabalhei em uma empresa que se preocupava muito com a parte de testes unitários, o sistema tinha mais mil casos de testes, desde teste unitário até teste de tela. E com tantos testes como você sabe o que foi testado no sistema? Será que você não esta testando mais de uma vez a mesma coisa? Quanto do código está coberto por um teste unitário e quanto do código não está?
Para ajudar a responder a estas perguntas existem ferramentas que te auxiliam a verificar a cobertura de código de um sistema, mostrando por quais linhas de código seu teste está passando e por quais não estão.
Nesta área existem várias ferramentas que fazem cobertura de código como o Cobertura e o Coverlipse, sempre usei o Coverlipse para me ajudar a verificar o quanto do meu código está coberto por testes. Usei ele por um bom tempo, até a saida da versão 4 do JUnit, a partir desta versão o Coverlipse não suporta rodar testes do JUnit4 e validar a cobertura dos testes. Uma pena porque o Coverlipse na minha opnião era bem prático, era instalado no Eclipse(plug-in), e para rodar os testes era só selecionar o teste e clicar no botão "Run as Coverlipse Test", após rodar o(s) teste(s) o Coverlipse mostrava o relatório das classes com o percentual de cobertura e o número de vezes que o(s) método(s) foram chamados.
A ferramenta Cobertura também é muito boa, só que não tem plug-in para o Eclipse, para verificar a cobertura de código com ele tinha que ser pela linha de comando além de dar um pouco de trabalho para quem não usa o Maven.
Por fim, descobri uma ferramenta que funciona como plug-in para o Eclipse que suporta o JUnit4, TestNG e OSGi Framework, seu nome é EclEmma e pode ser encontrado no seguinte endereço: http://www.eclemma.org/index.html.

A instalação é bem simples, pode ser feita via update site ou apenas fazendo o download do zip e descompactando no diretório do Eclipse.
- Via update site é só ir em "Help > Software updates > Find and Install". Na janela que vai se abrir "Search for new features to install" e Next.
- Na próxima janela clique em "New Remote Site", no nome coloque "EclEmma" e na url o seguinte endereço: "http://update.eclemma.org/", clique em "OK" e depois em "Finish".






- Aguarde o download e a instalação e depois reinicie o Eclipse. Se tudo der certo você verá um botão ao lado do botão "Debug" do Eclipse:



Pronto, você já pode executar seus testes com a ferramenta. Selecione sua classe de teste, clique na seta do botão Coverage e vá na opção "Coverage as..." e depois em "JUnit test".


O EclEmma vai abrir no término dos testes a "Coverage" view com algumas informações como: a classe e/ou pacote, o percentual de cobertura, instruções cobertas e o total de instruções cobertas.




Você alterar os dados exibidos clicando na seta e selecionar por exemplo: "Show Package Roots" e "Line counters".



Tela de report de cobertura do sistema:



Ao analisar uma classe, as linhas em verde estão totalmente cobertas, as linhas em amarelo estão parcialmente cobertas e as em vermelho não estão cobertas.




Você pode ver todas as propriedades de cobertura de cada classe, basta clicar com o botão direito sobre a classe desejada e clicar em "Properties", na janela que vai abrir selecione "Coverage" e então é só conferir os valores.




Esse é o básico do funcionamento da ferramenta, com isso você já pode analisar o que esta sendo testado no sistema e o que não está e se há necessidade de aumentar a cobertura de código com mais testes ou não.
Outra coisa importante é que mesmo que tenhamos 100% das classes cobertas por um teste, isso não significa que nosso sistema esteja livre de bugs, o que esta ferramenta proporciona é apenas mais uma forma de aumentar a qualidade do sistema e uma maneira de tentar identificar partes do sistema que não foram testadas e precisam ser testadas.
Existem outras formas de aumentar a qualidade, como o uso de métricas. Na última Javamagazine tem uma matéria muito interessante sobre métricas e um plug-in para o Eclipse.

É isso, abraço.

Last update: 24-06-2008 11:24

Keywords : code coverage, cobertura de código, java, eclipse, plugin, plug-in, code, coverage, eclemma
User comments Save this to del.icio.us Related articles
PDF Imprimir E-mail