e design no mundo real
O que é TDD? Uma prática onde os testes são escritos antes do código
de produção
Escreva primeiro o teste, faça o teste falhar, escreva o código para o teste passar…
… e escreva mais um teste, veja ele falhar, faça-o passar… e assim por diante.
Design incremental Novas funcionalidades são introduzidas em pequenos
passos
Além dos testes automatizados, o TDD oferece um feedback rápido sobre as mudanças no código
E também dá dicas sobre pontos de melhoria no design das classes
Por isso, TDD é mais sobre design de software do que sobre testes
Quais as vantagens?
Foco na funcionalidade
Aumento da cobertura de
testes
Testes Automatizados
Código de maior qualidade
(refatoração)
Melhora o design de
classes
Quais as ferramentas?
Porque refatorar?Depois que o teste falha, o objetivo é escrever o código
mais simples possível para o teste passar.
Uma vez que o teste passou, é necessário refatorar o código, buscando aprimorá-lo e evitando repetição de
código.
Depois de refatorar, rode o teste novamente
Como escrever um teste?1. Escreva um caso de teste para determinada
funcionalidade da classe
2. O teste não vai compilar, pois sua classe sequer existe!
3. Implemente o suficiente para o teste compilar
4. Rode o teste e veja-o falhar
5. Implemente o código mais simples póssível para o teste passar
6. Rode o teste e veja-o passar
7. Refatore o código em busca de melhorias
8. Rode o teste e o veja-o passar novamente
9. Repita todos os passos
Exemplo - Calculadora1. Escrever o teste que ainda não compila
2. Criar a classe para o teste compilar
Exemplo - Calculadora3. Rode o teste e veja-o falhar
Exemplo - Calculadora4. Escreva o mínimo para o teste passar
4. Rode o teste e veja-o passar
5. Refatore (se necessário) e depois escreve mais casos de testes
Devo sempre utilizar TDD? Depende. Utilize quando...
A classe lida com funcionalidades complexas
A solução do problema não está tão clara para o desenvolvedor
Dessa forma, o desenvolvedor fica mais focado no problema que sua classe deve resolver e não se perde com caminhos desnecessários
Talvez não seja muito vantajoso se...
A solução para o problema é bastante simples
Devo sempre utilizar TDD? TDD é uma prática que ao mesmo tempo auxilia nos
testes de unidade de classe
E conduz o desenvolvedor a pensar na melhor solução para o seu problema
Resumindo:
É importante conhecer TDD e suas vantagens. A experiência deve dizer quando será melhor utilizá-
lo ou não
Exemplo - CalculadoraDeSalarioRegras de negócio
Desenvolvedores:
20% de desconto caso o salário seja maior que R$ 3000
10% de descontro caso o salário seja menor que R$ 3000
DBAs e Testadores
25% de desconto caso o salário seja maior que R$ 2500
15% de desconto caso o salário seja menor que R$ 2500
Exemplo - CalculadoraDeSalario
Exemplo - CalculadoraDeSalario Escrevendo um teste que não compila
Escreve o mínimo para o teste falhar
Exemplo - CalculadoraDeSalario Escrevendo o mínimo para o teste passar
Exemplo - CalculadoraDeSalario Refatorando
ConclusãoTDD não diz respeito somente a testes
O desenvolvedor que observa o feedback da prática, pode aprimorar o design das suas classes seguindo os
princípios de Orientação a Objetos.
O conhecimento e experiência do desenvolvedor são essenciais para isso
Para uma melhor leitura dos feedbacks que TDD nos diz e realizar as as mudanças, o desenvolvedor deve
conhecer bem sobre design de projetos OO
Bibliografia
Top Related