SlideShare una empresa de Scribd logo
1 de 20
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 - Calculadora 
1. Escrever o teste que ainda não compila 
2. Criar a classe para o teste compilar
Exemplo - Calculadora 
3. Rode o teste e veja-o falhar
Exemplo - Calculadora 
4. 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 - CalculadoraDeSalario 
Regras 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ão 
TDD 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

Más contenido relacionado

La actualidad más candente

Reconhecendo suas habilidades como Testador
Reconhecendo suas habilidades como Testador Reconhecendo suas habilidades como Testador
Reconhecendo suas habilidades como Testador Elias Nogueira
 
Agile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimAgile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimElias Nogueira
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Iure Guimaraes
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDDWebgoal
 
Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDDIsmael
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
E você pensava que tdd era coisa de javaneiro
E você pensava que tdd era coisa de javaneiroE você pensava que tdd era coisa de javaneiro
E você pensava que tdd era coisa de javaneiroPaulo Alves Junior
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehaveIsmael
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...GessdaSilvaMachado
 
Meetup SP - O QA & a Especificação Por Exemplo
Meetup SP - O QA & a Especificação Por ExemploMeetup SP - O QA & a Especificação Por Exemplo
Meetup SP - O QA & a Especificação Por ExemploSamanta Cicilia
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
Medindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeterMedindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeterJúlio de Lima
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 

La actualidad más candente (20)

Reconhecendo suas habilidades como Testador
Reconhecendo suas habilidades como Testador Reconhecendo suas habilidades como Testador
Reconhecendo suas habilidades como Testador
 
Agile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimAgile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fim
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Trabalho xp
Trabalho xpTrabalho xp
Trabalho xp
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDD
 
Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDD
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
E você pensava que tdd era coisa de javaneiro
E você pensava que tdd era coisa de javaneiroE você pensava que tdd era coisa de javaneiro
E você pensava que tdd era coisa de javaneiro
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehave
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...
 
Meetup SP - O QA & a Especificação Por Exemplo
Meetup SP - O QA & a Especificação Por ExemploMeetup SP - O QA & a Especificação Por Exemplo
Meetup SP - O QA & a Especificação Por Exemplo
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 
BDD
BDDBDD
BDD
 
BDD em Ação
BDD em AçãoBDD em Ação
BDD em Ação
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Medindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeterMedindo a performance de aplicações web com JMeter
Medindo a performance de aplicações web com JMeter
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 

Similar a Introdução ao Test Driven Development (TDD)

TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoRenan Carvalho
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Maurício Aniche
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTiago Link
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilElias Nogueira
 
Test Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosTest Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosMateus Parente
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012Igor Abade
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 

Similar a Introdução ao Test Driven Development (TDD) (20)

TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu código
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
 
Test Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosTest Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicos
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012BDD e TDD na prática com SpecFlow e Visual Studio 2012
BDD e TDD na prática com SpecFlow e Visual Studio 2012
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 

Introdução ao Test Driven Development (TDD)

  • 1. e design no mundo real
  • 2. 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.
  • 3. 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
  • 4. 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
  • 6.
  • 7. 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
  • 8. 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
  • 9. Exemplo - Calculadora 1. Escrever o teste que ainda não compila 2. Criar a classe para o teste compilar
  • 10. Exemplo - Calculadora 3. Rode o teste e veja-o falhar
  • 11. Exemplo - Calculadora 4. 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
  • 12. 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
  • 13. 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
  • 14. Exemplo - CalculadoraDeSalario Regras 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
  • 16. Exemplo - CalculadoraDeSalario  Escrevendo um teste que não compila  Escreve o mínimo para o teste falhar
  • 17. Exemplo - CalculadoraDeSalario  Escrevendo o mínimo para o teste passar
  • 19. Conclusão TDD 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