SlideShare uma empresa Scribd logo
1 de 92
Iure Guimarães, 2009 [email_address] Siriusoft ®
Resolvendo o problema  certo
Resolvendo o problema  certo da maneira  correta
Códigos ruíns ,[object Object]
Códigos ruíns ,[object Object],[object Object]
Códigos ruíns ,[object Object],[object Object],[object Object]
O problema
Necessidades do cliente
Tarde demais
 
A  Solução
Caixa Branca TDD  não é Caixa Preta Regressão Caixa Cinza
TDD  não é limitado … Unitários F un cionais Aceitação
SOFTWARE  DESIGN
TFD  Refatoração
Experience is a harsh teacher because she gives the test first, the lesson afterward. _  Provérbio Chinês
O  resultado   é um reflexo do que foi  solicitado
Menos  tempo   gasto com a solução de defeitos
Confiança  na qualidade do próprio trabalho
Possibilita a  propriedade coletiva  do código
Desenvolvendo  incrementalmente
Nunca se afastando do  real objetivo
E o  resultado  é
E o  resultado  é ?
E o  resultado  é
E o  resultado  é
 
Teste Modele Implemente Teste
 
TDD Descubra o que você realmente quer fazer Modele
TDD Escreva um teste que expresse sua modelagem . Ele deverá  falhar Modele Teste
TDD Escreva o código Modele Teste Implemente
TDD Teste novamente. Desta vez para  passar Modele Teste Implemente Teste
TDD Refatore para melhorar a qualidade da solução Refatore Teste Implemente Teste
Modelagem “ Quando validado, o template “Olá, ${nome} com o valor “Iure” para a variável nome retornará a string “Olá, Iure”
Teste
Falha
Fazendo o teste  Passar
Faça  falhar  novamente  Triangulação com valores diferentes
Faça  Passar   novamente
Faça  falhar  novamente  Renomeando o titulo do teste
Faça  passar   novamente  Apenas funciona para a variável nome
Falhar…
Passar… Refatorar para HashMap
Não se esqueça de  Refatorar
Não se esqueça de  Refatorar Responsabilidades
Não se esqueça de  Refatorar Extract Method Responsabilidades
Não se esqueça de  Refatorar Extract Method Inner line Responsabilidades
Não se esqueça de  Refatorar Extract Method Inner line Responsabilidades Encapsulamento
Não se esqueça de  Refatorar Extract Method Inner line Extract Class Responsabilidades Encapsulamento
 
 
 
Spike Um jeito de tornar o desconhecido  conhecido XP Explorando as várias soluções
Spike Um jeito de tornar o desconhecido  conhecido XP Aprenda  escrevendo testes
Spiking Regex Aprenda  escrevendo testes
Como escrever testes e os fazer passar Estratégias para escolha do teste
Detalhes  x  Visão geral Solução vai de encontro com o que se imaginava Estrat égia para escolha do teste
Incerto  x  Familiar Pegando as frutas mais baixas, resultados mais rápidos Estrat égia para escolha do teste
Maior valor  x  Mais fácil Mais progresso com menos esforço Estrat égia para escolha do teste
Como escrever testes e os fazer passar Estratégias para implementação do teste
Estratégias para implementação do teste Solução paleativa: FAKE Não fique muito tempo no  vermelho
Estratégias para implementação do teste Triangulação Reduza o espaço da solução
Estratégias para implementação do teste Implementação  óbvia
Como escrever testes e os fazer passar Princípios importantes a serem seguidos
Princípios inportantes Vá para o  verde  o mais rápido possível
Princípios inportantes Vá mais devagar depois de um  erro
Princípios inportantes Jamais pule a  refatoração
Conceitos Essenciais
Conceitos Essenciais Fixtures correspondem ao  contexto  da aplicação
Conceitos Essenciais  - Fixtures Estado de todo o  ambiente  de execução
Conceitos Essenciais  - Fixtures Removem duplicação DRY
Conceitos Essenciais  - Fixtures Removem duplicação Don’t RY
Conceitos Essenciais  - Fixtures Removem duplicação Don’t Repeat Y
Conceitos Essenciais  - Fixtures Removem duplicação Don’t Repeat Yourself
Conceitos Essenciais  - Fixtures Removem duplicação DRY Compreensão do Código?
Conceitos Essenciais  - Fixtures Testes com  FOCO Identifique uma floresta por suas árvores
Conceitos Essenciais Objetos falsos  Colaboração / dependência Pretendem ser o que não são O cliente não tem idéia Acabam fazendo mais rápido do que os reais
Conceitos Essenciais Teste baseado no  Estado
Conceitos Essenciais Teste baseado na  interação Testa a interação entre um objeto e seus colaboradores
Conceitos Essenciais Teste baseado na  interação mocks stubs fakes Testa a interação entre um objeto e seus colaboradores
Conceitos Essenciais “ We lean on  interaction-based  testing to verify  how  an object talks to its collaborators; and we lean on  state-based  testing to verify  how well  the object listens.” J. B. Rainsberger, author of JUnit Recipes
Conceitos Essenciais Stubs Implementação mais simples possível HARD-CODED
Conceitos Essenciais Fakes Parecem patos, andam como patos e soam como patos.  MAS NÃO SAO PATOS
Conceitos Essenciais Mocks Incorpora asserções que verificam colaboração com outros objetos
Conceitos Essenciais Mocks Normalmente gerados dinamicamente por frameworks:  jMock ,  EashMock ,  FlexMock ,  MockPP
[object Object],[object Object],[object Object],[object Object],[object Object]
Quem é responsável ?
[object Object],[object Object],[object Object],[object Object]
 
Iure Guimarães, 2009 [email_address] Siriusoft ®
Bibliografia blog.briandicroce.com www.lispcast.com Introduction to TDD - Kirrily Robert

Mais conteúdo relacionado

Mais procurados

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
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareCarlos Santana
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean CodeAndré Leoni
 
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
 
Test Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosTest Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosMateus Parente
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Rômulo Augusto Santos
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Yasser Veleda
 
Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)Lucas Nery
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 

Mais procurados (20)

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
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Testes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicandoTestes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicando
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 
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...
 
Test Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosTest Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicos
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
Clean Code
Clean CodeClean Code
Clean Code
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)
 
Apresentacao teste
Apresentacao testeApresentacao teste
Apresentacao teste
 
Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)Introdução ao Test Driven Development (TDD)
Introdução ao Test Driven Development (TDD)
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Agile testing
Agile testingAgile testing
Agile testing
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 

Semelhante a TDD Resolvendo problemas da maneira correta

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
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de ProjetoEduardo Mendes
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
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
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Revolucao Agile - UFSCar
Revolucao Agile - UFSCarRevolucao Agile - UFSCar
Revolucao Agile - UFSCarLuiz Ribeiro
 
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018Tchelinux
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 

Semelhante a TDD Resolvendo problemas da maneira correta (20)

Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de Projeto
 
Clean Code
Clean CodeClean Code
Clean Code
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 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
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Clean code
Clean codeClean code
Clean code
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Revolucao Agile - UFSCar
Revolucao Agile - UFSCarRevolucao Agile - UFSCar
Revolucao Agile - UFSCar
 
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 

TDD Resolvendo problemas da maneira correta