| 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
|