Os testes te guiam — Alguns motivos a mais para você usar TDD e BDD

O TDD tem de ser simples

Quando a complexidade da aplicação aumenta, alguns testes e comportamentos que são difíceis de reproduzir se tornam códigos e dependências que também passam a ser difíceis de manter e acompanhar. Muitas vezes o problema dos testes está como eles evidenciam uma aplicação complicada demais e não flexível o suficiente para ser testada.

Os melhores frameworks e linguagens para teste

  1. Ruby
    O Ruby, principalmente no Rails ganha aqui não pela linguagem, mas pela sua comunidade que criaram ferramentas diversas para se testar e popularizou o BDD.
    O BDD faz com seu código seja bastante claro em relação ao teste que você está fazendo (assertivo) e a facilidade de se interagir com o comportamento real do usuário.
  2. Python
    Para mim é a melhor para testes juntamente com o Rails, ainda mais pela experiência que tive na Globo.com com a criação de Frameworks em Python em que contribuimos com a comunidade criando ferramentas de testes poderosas para realizar testes de interface utilizando linguagem natural.
  3. React
    O React, com o Jest e as bibliotecas que simulam o DOM fizeram com que ficasse muito fácil fazer asserções no conteúdo do DOM gerado pelo React. Também é bem prático testar componentes isolados e diferentes estados. Outro fator que surpreendi muito foi teste com react para aplicações nativas. O Jest tem também a ferramenta incrível de snapshot, que valida estados definidos em um determinado momento.

Práticas do TDD

O TDD para funcionar de forma eficiente precisa de muito pragmatismo pra se beneficiar de todo seu potencial. Precisamos definir também um escopo para ele. No fim, para mim não importa a quantidade de testes e cobertura e sim a resposta que você precisa para dar um passo a frente, e não se o teste é unitário, funcional ou de interface.

  1. Não é burrice você fazer um teste sabendo que ele vai quebrar, mas esperar seu resultado antes de dar o próximo passo mas resolver um problema de cada vez.
  2. O TDD faz você entender melhor o código dos outros
  3. Conseguimos também relembrar melhor nosso código quando usamos TDD. Eu tento muitas vezes deixar um teste falhando para corrigir no outro dia como sendo o próximo passo que preciso seguir para completar um código.
  4. Com o TDD nós podemos testar situações que não precisamos reproduzir. Se o retorno de um request, por exemplo, for x, eu posso testar diferentes retornos sem necessariamente passar todos os estados
  5. Uma das questões mais difíceis de praticar o TDD são aplicações com comportamentos randômicos, ou situações que não conseguimos reproduzir no fluxo direto

Teste antes, mas não se mate por não testar depois

O TDD, como a própria definição sugere (driven), é desenvolvimento orientado a testes. Sendo assim, o teste passa a ser a primeira parte do código. O processo é basicamente:

  1. Execute o código e veja que ele falha pelo motivo esperado
  2. Faça uma solução simples que garante que ele tenha o retorno desejado
  3. Execute o código e veja que o teste passa
  4. Mude a parte testada para que ele seja uma solução mais próxima da real
  5. Execute o código e veja que o teste passa

O TDD na veia

O fato é que sempre teremos uma resistência natural a uma nova abordagem de desenvolvimento e o TDD pode parecer um pouco “radical”, mas depois que você se acostuma com o processo, vê que ele passa a fazer parte do dia a dia e gera uma certa “desconfiança” natural ao seu código. Isto por que naturalmente com o TDD você começa a ver que para fazer grandes mudanças e refazer certas partes do sistema, pensar em não ter testes se torna algo abominável e assustador.

--

--

Citizen Scientist and Software Engineer, looking for the limits beyond mind and machine exploring the world

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store