7 Benefícios que a Experiência com TDD me Trouxe

Pedro Ramos
Qualyteam Engineering
3 min readFeb 11, 2019

Se você acompanha nossa página, já deve ter notado que a equipe da Qualyteam preza muito por testes automatizados. Eles dão segurança e estabilidade necessárias para práticas como integração e entrega contínuas.

Em relação, principalmente a testes de unidade, TDD (test-driven-development) ainda é um tema que gera dúvida entre desenvolvedores. Minha experiência com TDD me fez melhorar muito como desenvolvedor. Acredito que compartilhar um pouco das minhas percepções pode ajudar vocês a darem uma chance para essa prática que envolve não só a preocupação com testes, mas também com o design do código.

Que tal analisarmos 7 benefícios percebidos na adoção do TDD?

TDD goes beyond typing code

1. Evitar passar horas apenas escrevendo testes

- “Acabei, só faltam os testes.”

Então não acabou. Lá se vão algumas horas apenas escrevendo testes, o que pode ser frustrante. Ao praticar TDD, teste e implementação acabam sendo escritos de forma rapidamente intercalada, tornando o processo muito mais dinâmico.

2. Realmente fazer os testes

Principalmente quando ainda está se criando uma cultura de testes, às vezes ao chegar no final da implementação, percebe-se que o esforço pra cobrir tudo que você fez com testes é maior do que a sua motivação para escrevê-los.

3. Melhorar a especificação da aplicação

Testes podem e devem servir de especificação. O primeiro passo do TDD é justamente anotar os testes que serão necessários. Essa etapa ajuda a compreender melhor o que deve ser feito e escrever melhores especificações.

4. Planejar melhor a implementação

Pensar é parte essencial do trabalho de todo desenvolvedor. Ao orientar o desenvolvimento aos testes, consequentemente acaba-se pensando e planejando melhor a implementação de acordo com as especificações.

5. Sentir que fazê-los agrega valor

Testes têm valor. A questão é que isso dificilmente é percebido pela equipe antes de uma refatoração. Usá-los para guiar o desenvolvimento é uma ótima forma de enxergar este valor desde o início do processo.

6. Escrever código mais testável

Ao escrever código que precisa atender a um teste, naturalmente esse código vai ser mais testável. Quando o teste fica para o final, há um risco do código ficar mais difícil de testar. Com o tempo e após algumas refatorações, o código tende a perder sua testabilidade.

7. Evitar adaptar o teste ao código

Em uma suíte de teste, não é incomum encontrar testes que estejam cobrindo uma parte do código que na verdade é bug. Ao usar TDD, a chance de isso acontecer é muito reduzida, já que será escrito código para atender ao teste e não teste para atender ao código.

Estas foram algumas melhorias perceptíveis que vieram da minha experiência com TDD. Hoje me considero um desenvolvedor melhor e tenho mais confiança no que produzo. Certamente nem todos compartilham das mesmas percepções e gostaria muito de saber sobre as suas.

Vocês já praticaram TDD? Comentem um pouco sobre suas experiências com testes (ou a falta deles).

--

--