Transcript
Page 1: Introdução ao Test Driven Development (TDD)

e design no mundo real

Page 2: Introdução ao Test Driven Development (TDD)

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.

Page 3: Introdução ao Test Driven Development (TDD)

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

Page 4: Introdução ao Test Driven Development (TDD)

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

Page 5: Introdução ao Test Driven Development (TDD)

Quais as ferramentas?

Page 6: Introdução ao Test Driven Development (TDD)
Page 7: Introdução ao Test Driven Development (TDD)

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

Page 8: Introdução ao Test Driven Development (TDD)

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

Page 9: Introdução ao Test Driven Development (TDD)

Exemplo - Calculadora1. Escrever o teste que ainda não compila

2. Criar a classe para o teste compilar

Page 10: Introdução ao Test Driven Development (TDD)

Exemplo - Calculadora3. Rode o teste e veja-o falhar

Page 11: Introdução ao Test Driven Development (TDD)

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

Page 12: Introdução ao Test Driven Development (TDD)

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

Page 13: Introdução ao Test Driven Development (TDD)

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

Page 14: Introdução ao Test Driven Development (TDD)

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

Page 15: Introdução ao Test Driven Development (TDD)

Exemplo - CalculadoraDeSalario

Page 16: Introdução ao Test Driven Development (TDD)

Exemplo - CalculadoraDeSalario Escrevendo um teste que não compila

Escreve o mínimo para o teste falhar

Page 17: Introdução ao Test Driven Development (TDD)

Exemplo - CalculadoraDeSalario Escrevendo o mínimo para o teste passar

Page 18: Introdução ao Test Driven Development (TDD)

Exemplo - CalculadoraDeSalario Refatorando

Page 19: Introdução ao Test Driven Development (TDD)

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

Page 20: Introdução ao Test Driven Development (TDD)

Bibliografia


Recommended