XPManager - Test First Design

A técnica Test First Design define que qualquer método de um objeto que possa falhar deve ter um teste automatizado que garanta o seu funcionamento. É muito difícil saber previamente que métodos possam vir a falhar, a fim de que não se esqueça de ter um teste automatizado para métodos que sejam importantes e também não se perca tempo escrevendo testes para rotinas que não tem como conter erro, por serem extremamente simples. Apenas com a experiência se vai conseguindo distinguir o que deve ter um teste automatizado.

Os testes são importantes não apenas para certificar ao programador que a rotina que ele escreveu está certa, na XP eles tem um papel muito maior. Na XP, os unit tests fazem parte da modelagem do sistema, pois tanto a definição das funcionalidades quanto a documentação de um objeto é expressa por seus testes. Este é um dos motivos da XP precisar de pouca documentação, pois se alguém precisar saber qual a função de um objeto dentro do sistema, basta olhar seus unit tests para descobrir o que ele faz.

Numa rotina normal de desenvolvimento da XP, após os programadores receberem a story a ser implementada, eles passam a escrever os testes unitários para ela. Por isto se chama esta técnica de test first design.

Devem ser escritos primeiro os testes mais simples para o objeto (verificar se ele está criado, por exemplo), e executar o teste. O mesmo irá falhar, pois ainda não foi escrito o código para criação do objeto. Então, este código deve ser escrito, de maneira que passe no teste. Após passar por este teste, deve ser escrito outro, e depois codificado para que se passe neste, e assim sucessivamente, até que não se consiga pensar em mais nenhum unit test a ser criado.

A cada novo passo devem sempre ser executados todos os testes, a fim de verificar se a rotina recém inserida não estragou nada que estava funcionando. Assim, depois de encerrada a implementação, o código já vai estar integralmente testado, e vai dar segurança para que o programador possa ir adiante com maior velocidade.

Os testes automatizados são fundamentais para a XP, uma vez que dão suporte a outras técnicas da metodologia, como o refactoring e o collective code ownership. Sem testes automatizados, é muito difícil e penoso se trabalhar nestes dois princípios, pois não se tem a confiança necessária para saber se o código alterado não vai apresentar problemas, ou alterar algo que já estava funcionando.

Várias linguagens de programação oferecem frameworks de testes automatizados. No Java tem-se o jUnit, no Smalltalk o sUnit (ambos criados por Kent Beck) e no Delphi tem-se o dUnit. Estes são alguns exemplos, mas existem vários outros frameworks disponíveis.


Voltar