TDD – Test Driven Development

TDD – Test Driven Development
Kent Beck – 2003

Qualidade não pode ser avaliada ou pretensamente alcançada através de testes em um produto já construido. Com o uso de  TDD temos por objetivo prevenir defeitos em primeiro lugar, desde antes e durante toda a construção do software, permitindo uma medida real de qualidade, que podem ser assim traduzidas:

1. A cada decisão construida e não testada, existe uma grande probabilidade da decisão ou da sua implementação estar errada;
2. Funcionalidades de software que não podem ser demonstradas através de testes automatizados não são confiáveis;
3. Testes garantem que refletiremos sobre o que e onde queremos chegar, independente da forma como a solução será implementada.

Comecei a entender o que de fato era TDD após assistir um Coding Dojo, você inicia pela classe de teste, evoluindo seu código aos poucos, sempre a partir do seu teste unitário. Algumas vantagens desta abordagem são:

• Ajuda na documentação: testes bem construidos são mais simples de ler pela equipe que o próprio código, como se fossem critérios de aceitação;
• Incentiva a simplicidade: como a solução vai surgindo pouco a pouco, a tendência é que se foque no imprescindível;
• Aumenta a confiança: todos os testes são montados antes e durante a construção do software, dando-lhe maior confiança;
• Facilita refactorings: quanto mais testes existem no sistema, maior é a segurança para fazer e entregar refactorings.

O código de testes têm 2 funções principais:
1. De especificação, para definir uma regra que seu software deve obedecer.
2. De validação, para verificar que a regra é obedecida pelo software.

Para tornar a construção de testes mais produtivas, existem no mercado frameworks e plugins, como por exemplo o jUnit e Mocks, que são objetos que simulam o comportamento de objetos reais de forma controlada.

O processo de criação de programação orientado a testes segue um ciclo contínuo de desenvolvimento, conforme a seguir referenciado. Estes 3 passos são repetidos até que não se consiga pensar em novos testes, pois a funcionalidade está 100% desenvolvida e testada:

  1. Escrevemos um teste que falhe, ainda para uma classe/método que não existe. Como se fossemos declarar os critérios de aceitação, pensamos primeiro no teste e só depois que o teste estiver pronto, crie somente o suficiente de código necessário para que ele compile e falhe ao rodar.
  2. O passo seguinte é fazer o teste passar, construa um mínimo de código de forma que o teste passe OK.
  3. Agora que temos o mínimo viável de código, refatore e melhore ele um pouco, otimizando-o naquilo que for possível, em pequenos passos. Existe uma técnica chamada FAKE IT,por duplicação através de constantes.

Na WikipPedia tem uma página com várias laudas, extensa e didática:
http://pt.wikipedia.org/wiki/Test_Driven_Development

Descobri uma página que diz que aqui na UFRGS, na sala 104 do Prédio 67, tem Coding DOJO toda Segundas-Feira as 15:30 da tarde … quem é da UFRGS tem que verificar e comentar aqui se isso esta rolando mesmo (site).

Uma frase recorrente é, “qual o desafio para nosso primeiro Coding DOJO?”, pois acabei com este impecilho, pois encontrei um site só de desafios sugeridos … lá diz que as sugestões foram utilizadas em 1577 Dojos, eu acredito: http://dojopuzzles.com/

Várias cidades, como Brasilia, RJ, Floripa, etc, tem blogs com a agenda e muito conteúdo  sobre TDD e Coding Dojos, achei o de Floripa muito legal, com conteúdo, vídeos, exemplos, livros e tudo o que precisa-se para iniciar:

Floripa – http://dojofloripa.wordpress.com/2007/09/10/tudo-sobre-tdd/
Rio de janeiro – http://dojorio.org/material/
Brasilia – http://www.dojobrasilia.org/pages/sobre_coding_dojo

Também encontrei um vídeo de uma palestra da LocaWeb sobre Dojo que eu gostei muito, é bem extenso, mas muito didático, eu sugiro dar uma olhada:

Anúncios

Uma resposta para “TDD – Test Driven Development

  1. Pingback: Um ano e meio de blog – Obrigado galera! | Jorge Horácio "Kotick" Audy

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s