TDD - Test Driven Devlopment
Desenvolvimento Orientado a Teste.
É um dos pilares do Extreme Programing.
Geralmente o teste é escrito antes da funcionalidade.
O objetivo é antecipar erros a nível de desenvolvimento.
Consiste em testar e refatorar em pequenos ciclos, onde se escreve o teste antes do código, faz o mesmo passar e refatora o código.
É importante escrever o teste primeiro, porque a função tem que ser exportada, e para conseguir testar um código, ele precisa ser testável. Nem todo código é testável, e para que seja testável, é necessário fazer coisas dentro do código para que possibilite os testes.
O teste automatizado é uma garantia a nivel de deploy, e evita passar erros para o QA. Não descarta a presença de um tester (QA). O próprio QA de automatização pode auxiliar o desenv. escrevendo esses testes.
Ciclo de Vida
- 1. Write a test that fails (Red)
Pensar em como deve ser o comportamento, regras.
- 2. Make the code work (Green)
- 3. Eliminate redundancy (Refactor)
- Testes Unitários
- Testes de Integração
Foco
- Feedback rápido
- Maior segurança em alterações e novas funcionalidades
- Código mais limpo (Entrega com mais qualidade)
- Produtividade (Menos tempo corrigindo bug)
Vantagens
- Jest
- React-testing-Library
- Shallow
- Enzyne
- Chai
- Mocha
- Selenium
- Puppeteer
Bibliotecas
// Código fonte à ser testado
src/math.js
// Padrão TDD
// Diretório chamado "test"
// Arquivo chamado "math.test.js"
// Nome do arquivo a ser testado + ".test.js"
test/math.spec.js