DEV Community

Abel Costa
Abel Costa

Posted on

Fundamentos de TDD

Testes automatizados são a única forma que temos de garantir que um código realmente funciona. Eles nos permitem adotar um processo de desenvolvimento sustentável que ao longo do tempo não venha se tornar caótico. Teste te dão a coragem de refatorar quando for necessário, na verdade, adicionar uma suite de testes significativas deve ser o primeiro passo de uma refatoração. Muitas vezes o design e a tecnologia escolhidas para o projeto dificultam a introdução de testes automatizados, por isso nem sempre é possível utilizá-los, ainda que esse seja o cenário ideal de desenvolvimento ágil de software.

O que é um teste automatizado?

Um teste automatizado é nada além da execução automatizada de um trecho de código especifico que compara as entradas com a saida (retorno) e verifica se a mesma está de acordo com o que se era esperado.

Dado um conjunto de entradas, quando algo acontecer a saida deve cumprir as expectativas.

Na natureza do TDD temos três fases distintas:

  • given/arrange: Onde se definem todas as informações necessárias para executar o comportamento que será testado;
  • when/act: execução do comportamento testado
  • then/assert: verificação da execução, comparando os retornos com expectativas.

Exemplo

Deve ser feito um pedido com três itens:

Dado um novo pedido com 3 itens associados, um livro de R$ 50, um CD de R$ 20, e um DVD de R$ 30.

Quando o pedido for realizado

Então deve ser retornado uma confirmação do pedido contendo o valor total do mesmo e status aguardando pagamento.

Como funciona um TDD?

TDD não é um método de teste, mas sim uma metodologia de construção de um código fonte em pequenas etapas, onde os testes são escritos antes do código final. Dentro de um determinado ciclo.

TDD Cycle

As três leis do TDD

  1. Você não pode escrever nenhum código até ter escrito um teste que detecte uma possível falha.
  2. Você não pode escrever mais testes do que o suficiente para detectar uma falha
  3. Você não pode escrever mais testes o suficiente para atender os requisitos de sucesso

São basicamente esses três pontos que permitem você entender o TDD:

  • Escreva código de testes antes do código de produção
  • Escreva um código de produção para atender os requisitos do teste
  • Escreva um código de teste que faz o cenário atual de código de produção falhar (triângulação)

Top comments (0)