TDD: dicas para colocar em prática o desenvolvimento guiado por testes
Um tema que definitivamente divide a opinião de pessoas desenvolvedoras ao redor do mundo é o TDD (Test Driven Development) ou, em português, Desenvolvimento Guiado por Testes.
Enquanto alguns profissionais acreditam que o TDD é um processo repetitivo e limitador, outros afirmam que ele dá a segurança necessária para voar com liberdade, sem correr o risco de cair na hora do “vamos ver”.
Mas como você já deve ter percebido pelo título, hoje vamos falar tudo que há de bom nessa metodologia e como você pode colocá-la em prática não só nas suas tarefas, mas também na cultura do seu time. Será que vamos te convencer?
O que é TDD e por que utilizá-lo?
Em poucas palavras, TDD consiste em escrever os testes unitários antes do código de produção. Pode parecer um pouco anti-intuitivo, mas essa prática ajudará você a construir testes não enviesados. Dizemos isso, porque implementando testes posteriormente existem maiores chances de você criá-los para passar.
E tem mais: escrever o teste antes da função está de acordo com o Princípio de Responsabilidade Única (Single Responsibility Principle). Esse design pattern defende que cada módulo, classe ou função tem responsabilidade sobre apenas uma funcionalidade. O que também contribui para tornar seu código mais limpo.
Muito legal, né? Agora vamos ver como conquistar tudo isso!
Etapas do Testing Driven Development
Para que o TDD funcione bem, é fundamental que você siga todas as etapas que esse método propõe:
Juntas, elas formam um ciclo que deve ser repetido inúmeras vezes para que você lide individualmente com pequenas partes de código. Dessa forma, o seu foco acaba sendo maior e a sua evolução é muito mais assertiva.
Red: seu teste vai falhar
No momento de montar os testes, tente deixar as suas declarações mais completas possíveis. Isso vai ajudar seus colegas a entenderem rapidamente a função do teste, além de identificar rapidamente quais são as variáveis de entrada e saída, além do método chamado.
Beleza, agora vamos supor que você queria criar um método que realize uma soma. No entanto, antes de chamá-lo, você terá que fazer um teste para ele. Assim que isso acontecer, o programa irá emitir a mensagem “ReferenceError: sum is not defined”. O que era o previsto, pois o método ainda não existe.
Green: o sinal abriu, pode passar
Nessa fase você deve se contentar em fazer as alterações mínimas para que o teste passe. Ah, e lembre-se de garantir que o seu código não quebre os testes que já existem, combinado?
Inclusive, existem algumas abordagens que podem te ajudar a desenvolver testes mais robustos em TDD. Em vez de, por exemplo, começar direto pelos testes unitários, você pode escrever testes de ponta-a-ponta que vão direcionar o seu código para a direção certa.
Blue: porque refatorar faz bem à saúde
Bom, agora chegamos no último momento do desenvolvimento guiado por testes: a refatoração. Ela é muito necessária porque o processo acaba deixando o código bem complexo. Então é importante aplicar algumas técnicas de Clean Code (Código Limpo).
Após os ajustes, execute novamente os testes para ter certeza de que tudo está ok.
Para facilitar ainda mais a sua vida
Existem algumas regrinhas que você deve respeitar quando for estruturar o seu TDD, como o Triple A ou A Triplo. Veja o que cada A significa:
- Arrange/arranjar: aqui você define tudo que é necessário para que o seu teste funcione. Insira as variáveis (V1, V2 e Expected), linhas de código, tests doubles, etc;
- Act/agir: agora é hora de rodar! Chame o método que você queira provar. Nesse caso seria a função Sum.
- Assert/afirmar: por fim, observe se o teste falhou ou passou.
Se você chegou até aqui, é provável que tenha se identificado com o Desenvolvimento Guiado por Testes, né? Isso é muito importante, pois quanto mais envolvido ou envolvida você estiver nesse processo, melhor será o seu desempenho.
Além disso, o TDD é uma metodologia que deve permear a cultura do time e incentivar as pessoas a basearem suas decisões e ações em dados reais e não somente em suposições e hipóteses. Isso sem contar a agilidade e a qualidade das entregas, né? Uma baita necessidade nos dias de hoje.
Aproveitando a deixa, que tal você vir trabalhar em um lugar que te dá liberdade para testar e arriscar? Inscreva-se no nosso banco de talentos!