SlideShare uma empresa Scribd logo
1 de 44
   Agilidade e XP
   TDD
   TDD em .Net
   TDD na prática
   Referências
   Indivíduos e interação mais que processos e
    ferramentas
   Software funcionando mais que
    documentação abrangente
   Colaboração com o cliente mais que
    negociação de contratos
   Responder a mudanças mais que seguir um
    plano
   Kent Beck (XP, TDD)
   Mike Beedle
   Arie van Bennekum
   Alistair Cockburn
   Ward Cunningham
   Martin Fowler (Patterns, Refactoring)
   James Grenning
   Jim Highsmith
   Andrew Hunt
   Ron Jeffries
   Jon Kern
   Brian Marick
   Robert Martin (Clean Code, Agile)
   Steve Mellor
   Ken Schwaber (Scrum)
   Jeff Sutherland
   Dave Thomas
   Custo

   Tempo

   Qualidade

   Escopo*
   Simples, leve, rápido e divertido

   São as práticas que mais agradam os
    programadores e que causaram maior
    “barulho” nas empresas e na comunidade

   O primeiro livro de XP é o livro do Kent Beck
   Comunicação
   Simplicidade
   Feedback
   Respeito
   Coragem
   Espaço aberto (todos juntos com o cliente, sem
    baias, war rooms, flipcharts, lousas e etc)
   Programação em pares (nivelamento de
    conhecimento técnico e do projeto)
   Movimente as pessoas
   Cliente sempre próximo
   Código coletivo
   Metáfora do sistema
   TDD
   Padrões de código
   TDD (desenvolvimento guiado a testes)
   Modelagem simples (KISS - Keep it simple,
    stupid!)
   Ser simplista não é não pensar no futuro mas
    não faça aquilo que não é necessário
   Refatorar sempre, sem misericórdia
   Pequenos releases
   Metáfora do sistema
   Padrões de código
   Integração continua (controle de versão,
    servidor de build, testes, inspeção de código
    e feedback)
   Cliente sempre próximo
   Pequenos releases
   Programação em pares
   Código coletivo
   Jogos de planejamento (planning poker)
   Semanas de 40 horas
   Ritmo sustentável
   Pequenos releases
   Jogos de planejamento (planning poker)
   Código coletivo
   Programação em pares
   Refatorar sempre, sem misericórdia
   Integração contínua
   TDD
   Desenvolvimento guiado por testes
   O primeiro livro sobre o assunto também foi
    escrito pelo Kent Beck
   A prática mais viciante e uma das mais
    importantes do XP
   Fácil de explicar mas difícil de aprender (dói)
    e leva tempo, mas de retorno garantido
   Código mais claro
   Testes são documentações executáveis
   Testes garantem funcionalidades do domínio
    do problema
   Se algum teste parou de rodar, sabemos que
    algo deu errado
   Independência de uma camada gráfica para
    testar as camadas mais baixas(negócios, db,
    etc)
   Economia de tempo e dinheiro em
    manutenção
   Você deve criar uma grande quantidade de
    testes
   Nenhum código vai para produção sem ter
    um teste correspondente
   O teste SEMPRE é escrito antes
   Rode seus testes com frequencia
   O teste te diz que código de produção você
    deve escrever
   Primeiro eu codifico o teste, depois codifico o
    código de produção
   Não escreva código de produção até que você
    tenha escrito um teste unitário falho
   Não escreva mais do que um teste que já seja
    suficiente para falhar, não compilar é uma
    falha
   Não escreva no código de produção mais do
    que o suficiente para passar no seu teste
    falho
   Testar é fácil, se está difícil escrever um teste
    o código está mal feito
   TDD nos leva a usar boas práticas de
    modelagem e arquitetura
   TDD nos leva a um baixo acoplamento
   TDD nos leva a desenvolver para interfaces
   Refatore sem medo, afinal você está coberto
    pelos testes
   Sempre que encontrar um bug escreva um
    teste que o exponha
   Os testes devem evoluir, assim como o
    código evolui
   Testes que não são atualizados são apenas
    código legado
   Aprender a escrever testes é também um
    processo gradativo
   Crie testes as Exceptions
   Reescrever o código de forma que fique mais
    fácil o seu entendimento e por consequência
    a sua manutenção
   Ninguém faz nada perfeito da primeira vez
   Na verdade não existe código perfeito, ele
    sempre tem alguma coisa que pode melhorar
   Será que eu não introduzi bugs quando
    refatorei?
   Tanto o código de teste quanto o código de
    produção devem ser constantemente
    refatorados
   Durante o processo do TDD o código de
    produção é revisto várias vezes
   Criar testes me garante que posso refatorar a
    vontade, pois os testes vão me avisar caso eu
    insira algum bug
   Classes com nomes que sejam substantivos
   Métodos com nomes que sejam verbos
   Propriedades com nomes que sejam
    substantivos
   Variáveis com nomes que sejam substantivos
   Nomes que tenham significado de negócio
   Convenções de nomes
   Evite comentários no código, se você precisa
    comentar é porque seu código não está claro
    então reescreva
   Apenas um Assert por teste
   Um conceito por teste
   F.I.R.S.T.
    ◦ Fast – rápidos de rodar
    ◦ Independent – independentes entre si
    ◦ Repeatable – fáceis de executar a qualquer
      momento
    ◦ Self-Validating – fácil de descobrir se deu certo ou
      não
    ◦ Timely – teste deve ser feito pouco antes do código
      de produção
   São objetos fake que permitem que o teste
    seja isolado em apenas uma classe
   Serve para remover dependências que o teste
    pode ter como, banco de dados, web
    services, outras classes, entre outros
   Une classes e componentes em tempo de
    execução
   Permite que quando estivermos rodando os
    testes apontemos para classes stubs e
    quando o código for executado em produção
    volte para as classes originais
   Não é indispensável, mas é útil
   TDD veio do Java mas ...

   Apoio pela IDE
   Apoio dos frameworks
   Inúmeros frameworks open-source também
   Criação de testes unitários
   Criação de stubs
   Criação de classes e métodos
    automatizadamente
   Ambiente para execução dos testes unitários
    (Test Explorer)
   Ferramenta de análise de cobertura de código
    (Code Coverage)
   Ferramenta de análise da complexidade do
    código (Code Metrics)
   Ferramenta para teste de desempenho e carga
    (Performance Wizard)
   Robert C. Martin
    (Uncle Bob)
   2002
   Kent Beck
   2002
   Robert C. Martin
    (Uncle Bob)
   2008
   Robert C. Martin
    (Uncle Bob)
   2011
   Kent Beck
   2004
   Eric Evans
   2003
   Jimmy Nilsson
   2006
   Martin Fowler
   2009
   Michael Feathers
   2004
   James Bender
   Jeff McWherter
   2011
TDD

Mais conteúdo relacionado

Mais procurados

TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilBruno Eustáquio
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
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
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDDKleber Bernardo
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
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
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizadosBreno Oliveira
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
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
 

Mais procurados (19)

TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software Ágil
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
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.
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
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...
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
TDD para Java EE
TDD para Java EETDD para Java EE
TDD para Java EE
 
Gherkin
Gherkin   Gherkin
Gherkin
 
Falando sobre testes automatizados
Falando sobre testes automatizadosFalando sobre testes automatizados
Falando sobre testes automatizados
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
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
 

Destaque

Apresentacao dissertacao
Apresentacao dissertacaoApresentacao dissertacao
Apresentacao dissertacaoJoão Victorino
 
Workshop Scrum Developer
Workshop Scrum DeveloperWorkshop Scrum Developer
Workshop Scrum DeveloperJoão Victorino
 
Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...
Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...
Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...João Victorino
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
 

Destaque (7)

Apresentacao dissertacao
Apresentacao dissertacaoApresentacao dissertacao
Apresentacao dissertacao
 
Workshop Scrum Developer
Workshop Scrum DeveloperWorkshop Scrum Developer
Workshop Scrum Developer
 
TFS
TFSTFS
TFS
 
Wpf e mvvm
Wpf e mvvmWpf e mvvm
Wpf e mvvm
 
Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...
Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...
Arquitetura de software auto-reconfigurável utilizando Middleware reflexivo e...
 
WCF 35
WCF 35WCF 35
WCF 35
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Semelhante a TDD

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
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDDWebgoal
 
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
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesAndre Carlucci
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
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
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Alex Tercete
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETAlessandro Binhara
 

Semelhante a TDD (20)

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
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDD
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
O poder do TDD
O poder do TDDO poder do TDD
O poder do TDD
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
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
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a Testes
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Testes
TestesTestes
Testes
 
Clean Code
Clean CodeClean Code
Clean Code
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Testes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NETTestes e mocks: Em Visual Studio com .NET
Testes e mocks: Em Visual Studio com .NET
 

TDD

  • 1.
  • 2. Agilidade e XP  TDD  TDD em .Net  TDD na prática  Referências
  • 3. Indivíduos e interação mais que processos e ferramentas  Software funcionando mais que documentação abrangente  Colaboração com o cliente mais que negociação de contratos  Responder a mudanças mais que seguir um plano
  • 4. Kent Beck (XP, TDD)  Mike Beedle  Arie van Bennekum  Alistair Cockburn  Ward Cunningham  Martin Fowler (Patterns, Refactoring)  James Grenning  Jim Highsmith  Andrew Hunt  Ron Jeffries  Jon Kern  Brian Marick  Robert Martin (Clean Code, Agile)  Steve Mellor  Ken Schwaber (Scrum)  Jeff Sutherland  Dave Thomas
  • 5. Custo  Tempo  Qualidade  Escopo*
  • 6. Simples, leve, rápido e divertido  São as práticas que mais agradam os programadores e que causaram maior “barulho” nas empresas e na comunidade  O primeiro livro de XP é o livro do Kent Beck
  • 7.
  • 8. Comunicação  Simplicidade  Feedback  Respeito  Coragem
  • 9. Espaço aberto (todos juntos com o cliente, sem baias, war rooms, flipcharts, lousas e etc)  Programação em pares (nivelamento de conhecimento técnico e do projeto)  Movimente as pessoas  Cliente sempre próximo  Código coletivo  Metáfora do sistema  TDD  Padrões de código
  • 10. TDD (desenvolvimento guiado a testes)  Modelagem simples (KISS - Keep it simple, stupid!)  Ser simplista não é não pensar no futuro mas não faça aquilo que não é necessário  Refatorar sempre, sem misericórdia  Pequenos releases  Metáfora do sistema  Padrões de código
  • 11. Integração continua (controle de versão, servidor de build, testes, inspeção de código e feedback)  Cliente sempre próximo  Pequenos releases  Programação em pares  Código coletivo
  • 12. Jogos de planejamento (planning poker)  Semanas de 40 horas  Ritmo sustentável  Pequenos releases
  • 13. Jogos de planejamento (planning poker)  Código coletivo  Programação em pares  Refatorar sempre, sem misericórdia  Integração contínua  TDD
  • 14. Desenvolvimento guiado por testes  O primeiro livro sobre o assunto também foi escrito pelo Kent Beck  A prática mais viciante e uma das mais importantes do XP  Fácil de explicar mas difícil de aprender (dói) e leva tempo, mas de retorno garantido
  • 15. Código mais claro  Testes são documentações executáveis  Testes garantem funcionalidades do domínio do problema  Se algum teste parou de rodar, sabemos que algo deu errado  Independência de uma camada gráfica para testar as camadas mais baixas(negócios, db, etc)  Economia de tempo e dinheiro em manutenção
  • 16. Você deve criar uma grande quantidade de testes  Nenhum código vai para produção sem ter um teste correspondente  O teste SEMPRE é escrito antes  Rode seus testes com frequencia  O teste te diz que código de produção você deve escrever  Primeiro eu codifico o teste, depois codifico o código de produção
  • 17. Não escreva código de produção até que você tenha escrito um teste unitário falho  Não escreva mais do que um teste que já seja suficiente para falhar, não compilar é uma falha  Não escreva no código de produção mais do que o suficiente para passar no seu teste falho
  • 18. Testar é fácil, se está difícil escrever um teste o código está mal feito  TDD nos leva a usar boas práticas de modelagem e arquitetura  TDD nos leva a um baixo acoplamento  TDD nos leva a desenvolver para interfaces  Refatore sem medo, afinal você está coberto pelos testes
  • 19. Sempre que encontrar um bug escreva um teste que o exponha  Os testes devem evoluir, assim como o código evolui  Testes que não são atualizados são apenas código legado  Aprender a escrever testes é também um processo gradativo  Crie testes as Exceptions
  • 20.
  • 21. Reescrever o código de forma que fique mais fácil o seu entendimento e por consequência a sua manutenção  Ninguém faz nada perfeito da primeira vez  Na verdade não existe código perfeito, ele sempre tem alguma coisa que pode melhorar  Será que eu não introduzi bugs quando refatorei?
  • 22. Tanto o código de teste quanto o código de produção devem ser constantemente refatorados  Durante o processo do TDD o código de produção é revisto várias vezes  Criar testes me garante que posso refatorar a vontade, pois os testes vão me avisar caso eu insira algum bug
  • 23. Classes com nomes que sejam substantivos  Métodos com nomes que sejam verbos  Propriedades com nomes que sejam substantivos  Variáveis com nomes que sejam substantivos  Nomes que tenham significado de negócio  Convenções de nomes  Evite comentários no código, se você precisa comentar é porque seu código não está claro então reescreva
  • 24.
  • 25. Apenas um Assert por teste  Um conceito por teste  F.I.R.S.T. ◦ Fast – rápidos de rodar ◦ Independent – independentes entre si ◦ Repeatable – fáceis de executar a qualquer momento ◦ Self-Validating – fácil de descobrir se deu certo ou não ◦ Timely – teste deve ser feito pouco antes do código de produção
  • 26. São objetos fake que permitem que o teste seja isolado em apenas uma classe  Serve para remover dependências que o teste pode ter como, banco de dados, web services, outras classes, entre outros
  • 27. Une classes e componentes em tempo de execução  Permite que quando estivermos rodando os testes apontemos para classes stubs e quando o código for executado em produção volte para as classes originais  Não é indispensável, mas é útil
  • 28. TDD veio do Java mas ...  Apoio pela IDE  Apoio dos frameworks  Inúmeros frameworks open-source também
  • 29.
  • 30.
  • 31.
  • 32.
  • 33. Criação de testes unitários  Criação de stubs  Criação de classes e métodos automatizadamente  Ambiente para execução dos testes unitários (Test Explorer)  Ferramenta de análise de cobertura de código (Code Coverage)  Ferramenta de análise da complexidade do código (Code Metrics)  Ferramenta para teste de desempenho e carga (Performance Wizard)
  • 34. Robert C. Martin (Uncle Bob)  2002
  • 35. Kent Beck  2002
  • 36. Robert C. Martin (Uncle Bob)  2008
  • 37. Robert C. Martin (Uncle Bob)  2011
  • 38. Kent Beck  2004
  • 39. Eric Evans  2003
  • 40. Jimmy Nilsson  2006
  • 41. Martin Fowler  2009
  • 42. Michael Feathers  2004
  • 43. James Bender  Jeff McWherter  2011