agosto 02, 2010

TDD... eu recomendo!

Chega a requisição, de uma nova funcionalidade, para um dos sistemas em que estou envolvido.

O sistema em questão, gerencia a vida do aluno no programa de pós-graduação, stricto sensu, da UERJ. A requisição era algo do tipo:

"Os cursos de pós-graduação, devem poder lançar as notas dos alunos inscritos em suas turmas no semestre."

Meu caminho natural, para começar a atender este pedido, seria: (i) configurar os xmls do STRUTS, (ii) criar actions e (iii) criar telas do sistema. Basicamente, eu trabalharia primeiro as camadas de apresentação, controle e provavelmente de infraestrutura, para abrir caminho até a camada de modelo e a partir daí, iniciar a programação das regras de negócio.

Mas neste dia, decidi testar uma nova abordagem. Eu já tinha lido à respeito, ouvido falar e até aplicado em projetos acadêmicos, a técnica de Test Driven Development ou TDD.

Ao ler a requisição que me foi passada, percebi três funcionalidades principais que precisaria desenvolver: (i) listar para o usuário as turmas do semestre, (ii) listar os alunos da turma selecionada e (iii) permitir o lançamento das notas.

As três funcionalidades descritas acima, tornaram-se meus casos de teste e eu iniciei o desenvolvimento dos testes unitários utilizando as bibliotecas do JUnit.

Por mais que estivesse acostumado a fazer da forma antiga, enxerguei grandes vantagens utilizando o TDD:

  1. Trabalhei diretamente na camada de modelo.
  2. Pude focar meus esforços nos casos de teste, isoladamente, sem me preocupar com as outras funcionalidades a serem desenvolvidas.
  3. Quando parti para as camadas de apresentação e controle, já tinha certeza de que minhas regras de negócio estavam 100% funcionais e sem erros, tive apenas que lidar com erros técnicos (configurações do struts por exemplo) e de camada de apresentação (jsp's).
  4. Os teste unitários, passam a fazer parte do sistema e são artefatos valiosos para a detecção de possíveis bugs futuros.
  5. O desenvolvimento, pelo menos no meu caso, foi mais rápido.

Ao avaliar as vantagens obtidas utilizando o TDD, neste projeto, com certeza aplicarei a técnica em projetos futuros.

2 comentários:

Vinicius Morgado disse...

O TDD é uma daquelas coisas que você começa a utilizar e não sabe como viveu sem isso até então.

Tipo: já vivemos sem celular e internet. Dá para imaginar? hehe

Para mim, a fórmula DDD + TDD + [Patterns] é simplesmente imbatível.

Abs,

Rafael van Boekel disse...

Hahaha...disse td...

abçs