Vou contar para vocês porque o JUnit salvou a minha vida e a da minha equipe em uma rotina de impressão de relatórios problemática que consumia além de tempo a energia da equipe. Uma situação comum no ambiente de trabalho e que mostra a importância de ser criativo nas soluções e pensar fora da caixa.
É preciso entender que os testes de software compreendem uma importante etapa no desenvolvimento de soluções. É a partir dos testes que as funcionalidades implementadas são validadas. E ainda, é a partir de testes que se pode verificar se os requisitos e regras de negócio correspondem ao especificado.
No entanto, existem diferentes técnicas que os analistas de testes podem aplicar em distintas fases de desenvolvimento. Para cada tipo de teste existe um propósito, para o teste de carga o propósito é verificar a resposta da aplicação á uma grande quantidade de acessos simultâneos. O teste de stress objetiva testar como a aplicação se comporta em ambientes e situações não previstas na documentação.
Temos ainda o teste de performance que cumpre o propósito de analisar se o tempo de resposta da aplicação está dentro do esperado. Principalmente para aplicações desenvolvidas de forma modular o teste de integração verifica se combinadas módulos ou funcionalidades funcionaram corretamente. O teste de integração compreende uma série de testes de unidade.
Os testes de unidade têm o propósito de testar um trecho de código, ele testa um nível do componente ou uma classe. E neste cenário que se insere o JUnit.
PORQUE UTILIZAR TESTES UNITÁRIOS
O teste unitário é a etapa do desenvolvimento em que cada componente ou classe são testados de forma isolada, para então serem integrados e passarem pelo teste de integração. No contexto da programação orientada a objetos, os testes unitários se ocupam de métodos, classes e objetos. Ele se concentra na menor unidade do projeto, o que você há de concordar, possibilita uma rápida correção da rota e até de forma relativamente simples.
Entre os motivos para integrar o teste unitário aos seus projetos ou a sua equipe está a possibilidade que ele nos dá de agir preventivamente contra o surgimento de bugs. O que em contrapartida torna o seu código mais confiável. E por estarmos continuamente testando trechos de código além de testarmos situações de sucesso e falha podemos implementar as alterações com mais confiança e sem medo, antes que os pequenos problemas se tornem um grande problema.
O QUE TESTAR?
Não existe uma resposta fechada a esta pergunta, mas podemos seguir algumas orientações e exercitar a nossa criatividade. Se o teste unitário se concentra na menor unidade do projeto, é lógico que comecemos então pelo mais simples subindo gradativamente até alcançar o alto nível de complexidade.
Existe uma recomendação para que se realize os testes unitários todos os dias e várias vezes ao dia. Desse modo, seguindo esta orientação, grandes problemas e alto nível de complexidade podem ser domados antes que fujam ao controle da equipe. Faça testes suficientes, mas não exagere, porque testar dez condições se cinco já satisfazem a necessidade daquele momento. Métodos triviais só devem ser testados, por exemplo, se respondem pela validação de dados, por exemplo. Seja cuidadoso sem ser exagerado e não negligencie nenhuma etapa do processo.
JUNIT
Após esta sucinta introdução acerca de testes e em especial sobre testes unitários, estamos prontos para compreender o JUnit.
O JUnit é um framework Orientado a Objeto para a execução de testes unitário em código Java. O JUnit é incrível, ele consegue por exemplo, verificar se cada unidade do código responde da forma como se espera. Com ele podemos criar, executar e apresentar os resultados dos testes de forma automática. E o melhor, é gratuito.
A melhor forma de trabalhar com o JUnit ou as melhores práticas para realizar testes unitários é a elaboração de uma lista das funcionalidades que se deseja testar. E, novamente, no caso da Orientação a Objetos testa-se métodos, classes e objetos. E para cada item da lista escreva uma classe de teste. Rode o JUnit. Falhe no Teste. Escreva um novo código de teste. Refatore o código. Escreva mais um teste. Repita o processo para cada item da lista.
EM POUCAS PALAVRAS
Os testes unitários estão cada vez mais sendo utilizados, talvez pelo surgimento de frameworks para várias linguagens de programação. Espero que você tenta compreendido a importância de testes em diferentes etapas do desenvolvimento e principalmente a importância dos testes unitários.