TDD: dicas para colocar em prática o desenvolvimento guiado por testes

Marca Empregadora Grupo OLX
Grupo OLX Tech
Published in
4 min readFeb 16, 2022

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:

A imagem apresenta o Ciclo do TDD em três círculos: primeiro é o Red que representa Falhar no Teste, dele sai uma seta para o próximo círculo; que é o Green, representando Passar no Teste, dele sai outra seta que vai para o próximo círculo; o Blue, que simboliza a etapa de Refatorar o Código, dele sai uma seta para o primeiro círculo, que volta para etapa inicial do processo e reinicia o ciclo.

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!

--

--