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:
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:
- Trabalhei diretamente na camada de modelo.
- Pude focar meus esforços nos casos de teste, isoladamente, sem me preocupar com as outras funcionalidades a serem desenvolvidas.
- 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).
- Os teste unitários, passam a fazer parte do sistema e são artefatos valiosos para a detecção de possíveis bugs futuros.
- 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:
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,
Hahaha...disse td...
abçs
Postar um comentário