Começando com Test-Driven Development
“Como posso começar a aplicar Test-Driven Development?” Essa pergunta ecoa nas minhas sessões de treinamento como uma chamada de função recursiva. Embora minha resposta padrão sempre tenha sido “Comece corrigindo bugs,” descobri uma abordagem ainda mais envolvente: Advent of Code.
Minha abordagem padrão: corrigindo um bug existente
Vamos examinar um exemplo simples. Imagine que você tem uma função de calculadora:
Quando alguém tenta dividir por zero, nossa aplicação quebra sem cerimônia. Isso apresenta uma oportunidade perfeita para TDD – podemos escrever um teste expressando nosso comportamento desejado:

Meu teste vai falhar, é claro, porque meu código falha. Agora posso corrigir meu código e fazer meu teste passar.
A Abordagem Gamificada: Advent of Code
Como um autoproclamado geek com afinidade por puzzles, descobri que o Advent of Code é o terreno de treinamento perfeito para TDD. Cada puzzle fornece:
-
Uma amostra de entrada
-
Uma saída esperada
Essa estrutura naturalmente te guia para a mentalidade de TDD – você escreve seu teste baseado no exemplo antes de implementar sua solução. É como ter uma especificação embutida!

Quer dizer, não só é uma boa forma de aprender TDD, mas também é divertido. Você está aprimorando suas habilidades de desenvolvimento, resolvendo um puzzle e praticando uma técnica muito valiosa.
Conforme você avança pelos desafios, pode começar a experimentar mais com TDD e talvez reduzir a granularidade de alguns dos seus testes. Por exemplo, você pode precisar fazer o parse de uma entrada de texto complexa em um Map para resolver o problema, e então isso poderia ser um teste por si só.
Ferramentas Que Melhoram a Experiência
Em Elixir (minha linguagem preferida), o operador pipe (|>) é particularmente poderoso para TDD:

Aquele pequeno triângulo basicamente diz: pegue a saída da função acima e passe para a função seguinte. Essa sintaxe elegante permite que você esboce o fluxo de alto nível da sua solução antes de mergulhar nos detalhes de implementação.
Combine isso com ferramentas como mix test.watch, que automaticamente executa os testes quando arquivos mudam, e você tem um ciclo de feedback rápido que faz o TDD parecer natural e intuitivo.
Pronto para Começar?
Escolha sua linguagem de programação preferida e mergulhe! Você pode explorar meu repositório do Advent of Code 2024 para inspiração:
https://github.com/mariomelo/advent_of_code24
Lembre-se: O objetivo não é perfeição, mas prática. Cada puzzle é uma oportunidade de fortalecer seus músculos de TDD enquanto se diverte!
Para insights mais profundos sobre TDD, confira o excelente artigo sobre Software Design: Tidy First?
Software Design: Tidy First? - Canon TDD
Bom código!