SlideShare uma empresa Scribd logo
1 de 13
TDD – TestDrivenDevelopment Gibran Silva  gibran.silva@gmail.com / @ggibran BacharelemCiência da Computação Arquiteto de Software ConsultorIndependente
Objetivo  O que é TDD?  Como Funciona Frameworks Benefícios Princípios
Curiosidade Uma pesquisa do Departamento de Comércio dos EUA, publicada em 2002, revelou que falhas de software são tão comuns e tão danosas que se estima que causem um prejuízo anual de mais de 60 bilhões de dólares para a economia americana.  O estudo também alega que, embora não seja possível remover todos os erros, mais de um terço destes custos poderia ser eliminado caso se utilizasse uma infra-estrutura de testes melhor, que permitisse identificar e remover defeitos mais cedo e de forma mais eficaz. Atualmente, calcula-se que cerca de 50% dos defeitos são encontrados apenas nas fases finais dos projetos, ou após os sistemas começarem a ser utilizados em produção. Retirado de National Institute of Standards and Technology O que é TDD?
O que é TDD? É uma técnica de desenvolvimento de software cujo processo é formado por pequenas iterações para o desenvolvimento de uma nova funcionalidade. TDD vem do conceito “test-first programming” do XP (Extreme Programming), mas acabou ganhando tando interesse que hoje é utilizado independente da adoção de XP. Não é um método para testar software, mas para construir software. O que é TDD?
Como Funciona? Ciclo em poucos minutos O que foi feito.
Frameworks ,[object Object]
Nunit – www.nunit.org
MbUnit – www.mbunit.org,[object Object]
“Espiral da Morte” do Teste ,[object Object],[object Object]
Princípios Exemplo de “Lista de Testes” para o caso de uso “Realizar Transferência Bancária”: Realizar uma transferência normal (bem sucedida); Tentar transferir uma quantidade superior ao saldo da conta de origem; Verificar atomicidade no caso de falha de sistema antes de concluir a operação; Conta de origem inativa; Conta de destino inativa; Valor transferido menor que zero; Princípios
Princípios Exemplo: Transferir uma quantidade superior ao saldo da conta de origem; [Test] [ExpectedException(typeof(SaldoInsuficiente))]  publicvoidTransferirValorSuperiorAoSaldoDaContaDeOrigem() { 	Decimal saldoInicial = 1000.0; Decimal valorTransferencia = 5000.0; ContacontaOrigem= newConta(SaldoInicial); ContacontaDestino = newConta(SaldoInicial); contaOrigem.Debitar(valorTransferencia); contaDestino.Creditar(valorTransferencia); } Princípios
Princípios Dados para Teste Não escolha números mágicos se eles não tiverem um significado específico no teste. Por exemplo, se não faz diferença utilizar “1”, “2” ou “1365”, preferia  “1”.  Evite passar o mesmo valor para diferentes parâmetros. Por exemplo, para testar um método Operacao(int x, int y), não utilize Operacao(2,2), pois “Operacao” pode inverter “x” e “y” e o teste ainda assim passar. Prefira, por exemplo, Operacao(2,3). Dê preferência a dados do mundo real, especialmente quando você tem algum sistema legado com dados que podem ser aproveitados Princípios
Dúvidas? Gibran Silva  gibran.silva@gmail.com / @ggibran BacharelemCiência da Computação Arquiteto de Software ConsultorIndependente

Mais conteúdo relacionado

Mais procurados

TechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerTechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerAlan Carlos
 
Workshop - Plano de Testes End to End com o Microsoft Test Manager
Workshop   - Plano de Testes End to End com o Microsoft Test ManagerWorkshop   - Plano de Testes End to End com o Microsoft Test Manager
Workshop - Plano de Testes End to End com o Microsoft Test ManagerAlan Carlos
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebRodrigo Veiga
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosVIVIANE RANGEL
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Robson Agapito Correa
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreCloves da Rocha
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoraçãoguest23778e
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerAlan Carlos
 
ALM - Testes Exploratórios no Microsoft Test Manager
ALM - Testes Exploratórios no Microsoft Test ManagerALM - Testes Exploratórios no Microsoft Test Manager
ALM - Testes Exploratórios no Microsoft Test ManagerAlan Carlos
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de DesempenhoBase2 Tecnologia
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testeselliando dias
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POAAline Zanin
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelManoel Pimentel Medeiros
 

Mais procurados (20)

TechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test ManagerTechNet - e-Book- Artigos sobre Test Manager
TechNet - e-Book- Artigos sobre Test Manager
 
Workshop - Plano de Testes End to End com o Microsoft Test Manager
Workshop   - Plano de Testes End to End com o Microsoft Test ManagerWorkshop   - Plano de Testes End to End com o Microsoft Test Manager
Workshop - Plano de Testes End to End com o Microsoft Test Manager
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas Web
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitos
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Test link
Test linkTest link
Test link
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do Mestre
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test Manager
 
ALM - Testes Exploratórios no Microsoft Test Manager
ALM - Testes Exploratórios no Microsoft Test ManagerALM - Testes Exploratórios no Microsoft Test Manager
ALM - Testes Exploratórios no Microsoft Test Manager
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste agora! Não deixe para depois!
Teste agora! Não deixe para depois!Teste agora! Não deixe para depois!
Teste agora! Não deixe para depois!
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de Desempenho
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testes
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel Pimentel
 

Destaque

#DevDojo Algarismos Romanos
#DevDojo Algarismos Romanos#DevDojo Algarismos Romanos
#DevDojo Algarismos Romanosflavio1110
 
#DevDojo - Algarismos Romanos
#DevDojo - Algarismos Romanos#DevDojo - Algarismos Romanos
#DevDojo - Algarismos Romanosflavio1110
 
The Near Future of CSS
The Near Future of CSSThe Near Future of CSS
The Near Future of CSSRachel Andrew
 
Classroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and AdolescentsClassroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and AdolescentsShelly Sanchez Terrell
 
The Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris LemaThe Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris LemaChris Lema
 
The Presentation Come-Back Kid
The Presentation Come-Back KidThe Presentation Come-Back Kid
The Presentation Come-Back KidEthos3
 

Destaque (6)

#DevDojo Algarismos Romanos
#DevDojo Algarismos Romanos#DevDojo Algarismos Romanos
#DevDojo Algarismos Romanos
 
#DevDojo - Algarismos Romanos
#DevDojo - Algarismos Romanos#DevDojo - Algarismos Romanos
#DevDojo - Algarismos Romanos
 
The Near Future of CSS
The Near Future of CSSThe Near Future of CSS
The Near Future of CSS
 
Classroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and AdolescentsClassroom Management Tips for Kids and Adolescents
Classroom Management Tips for Kids and Adolescents
 
The Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris LemaThe Buyer's Journey - by Chris Lema
The Buyer's Journey - by Chris Lema
 
The Presentation Come-Back Kid
The Presentation Come-Back KidThe Presentation Come-Back Kid
The Presentation Come-Back Kid
 

Semelhante a TDD - Desenvolvimento Orientado a Testes

Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
ybr789try
ybr789tryybr789try
ybr789tryteste
 
Testes de software
Testes de softwareTestes de software
Testes de softwareteste
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
 
Testes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de SoftwareTestes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de SoftwareSilas Gonçalves
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 

Semelhante a TDD - Desenvolvimento Orientado a Testes (20)

O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
ybr789try
ybr789tryybr789try
ybr789try
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Testes de Software.ppt
Testes de Software.pptTestes de Software.ppt
Testes de Software.ppt
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de software
Teste de software Teste de software
Teste de software
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Testes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de SoftwareTestes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de Software
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 

TDD - Desenvolvimento Orientado a Testes

  • 1. TDD – TestDrivenDevelopment Gibran Silva gibran.silva@gmail.com / @ggibran BacharelemCiência da Computação Arquiteto de Software ConsultorIndependente
  • 2. Objetivo O que é TDD? Como Funciona Frameworks Benefícios Princípios
  • 3. Curiosidade Uma pesquisa do Departamento de Comércio dos EUA, publicada em 2002, revelou que falhas de software são tão comuns e tão danosas que se estima que causem um prejuízo anual de mais de 60 bilhões de dólares para a economia americana. O estudo também alega que, embora não seja possível remover todos os erros, mais de um terço destes custos poderia ser eliminado caso se utilizasse uma infra-estrutura de testes melhor, que permitisse identificar e remover defeitos mais cedo e de forma mais eficaz. Atualmente, calcula-se que cerca de 50% dos defeitos são encontrados apenas nas fases finais dos projetos, ou após os sistemas começarem a ser utilizados em produção. Retirado de National Institute of Standards and Technology O que é TDD?
  • 4. O que é TDD? É uma técnica de desenvolvimento de software cujo processo é formado por pequenas iterações para o desenvolvimento de uma nova funcionalidade. TDD vem do conceito “test-first programming” do XP (Extreme Programming), mas acabou ganhando tando interesse que hoje é utilizado independente da adoção de XP. Não é um método para testar software, mas para construir software. O que é TDD?
  • 5. Como Funciona? Ciclo em poucos minutos O que foi feito.
  • 6.
  • 8.
  • 9.
  • 10. Princípios Exemplo de “Lista de Testes” para o caso de uso “Realizar Transferência Bancária”: Realizar uma transferência normal (bem sucedida); Tentar transferir uma quantidade superior ao saldo da conta de origem; Verificar atomicidade no caso de falha de sistema antes de concluir a operação; Conta de origem inativa; Conta de destino inativa; Valor transferido menor que zero; Princípios
  • 11. Princípios Exemplo: Transferir uma quantidade superior ao saldo da conta de origem; [Test] [ExpectedException(typeof(SaldoInsuficiente))] publicvoidTransferirValorSuperiorAoSaldoDaContaDeOrigem() { Decimal saldoInicial = 1000.0; Decimal valorTransferencia = 5000.0; ContacontaOrigem= newConta(SaldoInicial); ContacontaDestino = newConta(SaldoInicial); contaOrigem.Debitar(valorTransferencia); contaDestino.Creditar(valorTransferencia); } Princípios
  • 12. Princípios Dados para Teste Não escolha números mágicos se eles não tiverem um significado específico no teste. Por exemplo, se não faz diferença utilizar “1”, “2” ou “1365”, preferia “1”. Evite passar o mesmo valor para diferentes parâmetros. Por exemplo, para testar um método Operacao(int x, int y), não utilize Operacao(2,2), pois “Operacao” pode inverter “x” e “y” e o teste ainda assim passar. Prefira, por exemplo, Operacao(2,3). Dê preferência a dados do mundo real, especialmente quando você tem algum sistema legado com dados que podem ser aproveitados Princípios
  • 13. Dúvidas? Gibran Silva gibran.silva@gmail.com / @ggibran BacharelemCiência da Computação Arquiteto de Software ConsultorIndependente