Testes unitários com junit
Introdução
Teste de software é o processo de executar um sistema de maneira controlada, a fim de revelar seus defeitos e avaliar sua qualidade. Um teste unitário consiste em testar unidades individuais de uma aplicação a fim de descobrir defeitos nas mesmas. O nível de abstração destas unidades depende muito do tipo de sistema sendo desenvolvido. Segundo [Burnstein, 2003], o processo de teste unitário deve envolver as seguintes atividades: Planejamento, Especificação e Projeto dos casos de teste, Preparação do código auxiliar e Execução propriamente dita.
Sistemas de software estão sujeitos à constante evolução, bem como as tecnologias sobre as quais eles são construídos. No entanto, faltam métodos e técnicas apropriados para dar apoio à evolução desses sistemas. Os benefícios que podem ser obtidos com o uso de conjuntos consistentes de testes automatizados durante a realização de manutenção corretiva, adaptativa, preventiva e perfectiva são dos mais diversos. Considera-se que um teste foi satisfeito quando a funcionalidade avaliada por ele é corretamente implementada, o que deve ocorrer logo após a implementação do teste. Implementam-se os testes da lista de casos de testes até que a funcionalidade almejada tenha sido obtida, ou seja, até que todos os testes que a avaliam tenham sido satisfeitos.
Técnicas
Existem muitas maneiras de se testar um software. Mesmo assim, existem as técnicas que sempre foram muito utilizadas em sistemas desenvolvidos sobre linguagens estruturadas que ainda hoje têm grande valia para os sistemas orientados a objeto. Apesar de os paradigmas de desenvolvimento ser completamente diferentes, o objetivo principal destas técnicas continua a ser o mesmo, encontrar falhas no software. Abaixo estão descritas algumas das técnicas mais conhecidas.
Caixa-branca
Também chamada de teste estrutural ou orientada à lógica, a técnica de caixa-branca avalia o comportamento interno do componente de software. Essa técnica