SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Boas Práticas com TDD
      Camilo Lopes
       @camilolope
1. Crie apenas os
   testes que precisa
• É comum querer sair escrevendo vários
  testes por horas sem saber se
  realmente precisa de todos eles. A idéia
  é: crie apenas testes que agreguem
  valor, e para o que precisa validar no
  momento.
2. Ns asserts

• Aqui é quando um método tem vários
  asserts para cenários diferentes. Evite
  isso. Crie assert com base no tipo do
  teste que está criando; o assert tem que
  estar alinhado com o nome do teste.
  Mas não queira colocar vários asserts
  no mesmo teste.
3. Nome de métodos
      confusos
• Os nomes dos métodos de teste
  precisam ser específicos e diretos
  para o que se quer testar. Por exemplo:
  testIfListUserIsEmpty.      Evite     o
  underscore para separação.
4. Saiba a diferença
     entre objetos e
       primitivos
• Saber usar corretamente a igualdade
  com assert é importante, pois ajuda a
  entender melhor o teste. Se está
  testando objetos, use assertEquals, se
  é primitivo use asserTrue/False com o
  operador que deseja.
5. Agregação de valor

• Os testes precisam agregar valor, se
  não agregam valor para aplicação ele
  se torna um custo. Antes de escrever
  um teste veja se realmente ele é válido.
6. Maldita Cobertura




• Se você precisa escrever testes para
  atingir percentual de cobertura significa
  que os demais testes já criados não estão
  agregando tanto valor como deveria. A
  sugestão é: identifique os testes que não
  agregam valor e refatore ou remova. Isso
  terá um custo, mas é necessário, assim
  você aprenderá que é importante criar
  apenas os testes necessários.
7. Bons testes

• Agregam valor e a cobertura é
  conseqüência. E não há esforço extra
  para isso. Então lembre-se: não há
  separação entre cobertura e bons
  testes.
8. A relação

• Não há número ideal de quantos
  testes uma classe deve ter e não há
  relação alguma que quanto mais teste
  melhor a qualidade, o mais importante é
  o quanto o teste agrega valor.
9. TDD não é receita
       de bolo
• O fato de ter unit test no seu código não
  quer dizer que fez TDD. TDD vai além
  de unit test apenas.
10. Use com
        moderação
• Use o setup com moderação, apenas
  coloque     lá    aquilo que   serão
  compartilhados por vários testes em
  cenários diferentes.
11. Teste Cross
• Evite criar testes que funcionam só em
  um determinado ambiente, ou seja, “em
  minha máquina funciona”. Seu teste
  deve rodar em qualquer ambiente que
  for executado e não ter dependências
  de ambiente.
12. No comments

• Evite de toda forma comentários no seu
  teste que explique o que ele faz. Caso
  você comece a escrever um comentário
  para explicar seu método, comece a
  apagá-lo, pois há um problema de
  legibilidade de código no ar.
13. O jegue lerdo
• É aquele teste lento para ser executado,
  onde podemos ir ao banheiro, tomar um
  café e pior, deixar rodando no final do
  dia e ir pra casa para podermos ver o
  resultado só no dia seguinte. Testes
  lentos é sinal de baixa qualidade.
  Descubra o gargalo e refatore.
Books
OBRIGADO!!!

Weitere ähnliche Inhalte

Was ist angesagt?

Apresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rupApresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rupJarbas Pereira
 
Apresentação UX e UI - Webdesign - Aula 07
Apresentação UX e UI - Webdesign - Aula 07Apresentação UX e UI - Webdesign - Aula 07
Apresentação UX e UI - Webdesign - Aula 07Renato Melo
 
Software Coding- Software Coding
Software Coding- Software CodingSoftware Coding- Software Coding
Software Coding- Software CodingNikhil Pandit
 
Software Project Management
Software Project ManagementSoftware Project Management
Software Project ManagementRamesh Babu
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de PrototipaçãoJuliano Pires
 
Métricas de software: modelos de contratação e planejamento de projetos
Métricas de software: modelos de contratação e planejamento de projetosMétricas de software: modelos de contratação e planejamento de projetos
Métricas de software: modelos de contratação e planejamento de projetosJosé Claudemir Pacheco Júnior
 
Modelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UMLModelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UMLinfo_cimol
 
Banco de Dados Orientado a Objetos
Banco de Dados Orientado a ObjetosBanco de Dados Orientado a Objetos
Banco de Dados Orientado a ObjetosSuzana Viana Mota
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 
PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosDaniel Brandão
 
Especificação de requisitos
Especificação de requisitosEspecificação de requisitos
Especificação de requisitosFernando Palma
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de softwarediha36
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Padrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsPadrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsRodrigo Kono
 
Ciclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareCiclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareEduardo Santos
 

Was ist angesagt? (20)

Padrões MVC
Padrões MVCPadrões MVC
Padrões MVC
 
Apresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rupApresentação modelagem de_negócio_rup
Apresentação modelagem de_negócio_rup
 
Apresentação UX e UI - Webdesign - Aula 07
Apresentação UX e UI - Webdesign - Aula 07Apresentação UX e UI - Webdesign - Aula 07
Apresentação UX e UI - Webdesign - Aula 07
 
Software Coding- Software Coding
Software Coding- Software CodingSoftware Coding- Software Coding
Software Coding- Software Coding
 
Software Project Management
Software Project ManagementSoftware Project Management
Software Project Management
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de Prototipação
 
Métricas de software: modelos de contratação e planejamento de projetos
Métricas de software: modelos de contratação e planejamento de projetosMétricas de software: modelos de contratação e planejamento de projetos
Métricas de software: modelos de contratação e planejamento de projetos
 
COCOMO MODEL 1 And 2
COCOMO MODEL 1 And 2COCOMO MODEL 1 And 2
COCOMO MODEL 1 And 2
 
Walkthroughs
WalkthroughsWalkthroughs
Walkthroughs
 
Modelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UMLModelagem de Dados - Introdução à UML
Modelagem de Dados - Introdução à UML
 
Unit1
Unit1Unit1
Unit1
 
Banco de Dados Orientado a Objetos
Banco de Dados Orientado a ObjetosBanco de Dados Orientado a Objetos
Banco de Dados Orientado a Objetos
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de Dados
 
Aula 1 - Revisão UML
Aula 1 - Revisão UMLAula 1 - Revisão UML
Aula 1 - Revisão UML
 
Especificação de requisitos
Especificação de requisitosEspecificação de requisitos
Especificação de requisitos
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de software
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Padrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsPadrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-Patterns
 
Ciclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareCiclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de Software
 

Andere mochten auch

Flat plan evaluation
Flat plan evaluationFlat plan evaluation
Flat plan evaluationnctcmedia12
 
French learning resource Champs elysees series 23 number 6
French learning resource Champs elysees series 23 number 6French learning resource Champs elysees series 23 number 6
French learning resource Champs elysees series 23 number 6louveargente
 
Comelit SK9030 Data Sheet
Comelit SK9030 Data SheetComelit SK9030 Data Sheet
Comelit SK9030 Data SheetJMAC Supply
 
La vida de josé francisco de san martin
La vida de josé francisco de san martinLa vida de josé francisco de san martin
La vida de josé francisco de san martinailin31
 
Bus 660 week 1 dq 2 education and experience
Bus 660 week 1 dq 2 education and experienceBus 660 week 1 dq 2 education and experience
Bus 660 week 1 dq 2 education and experienceSERCHES99
 
Knee Socks – Arctic Monkeys Presentation
Knee Socks – Arctic Monkeys PresentationKnee Socks – Arctic Monkeys Presentation
Knee Socks – Arctic Monkeys Presentationnctcmedia12
 
Agile Fundamental Skill Set
Agile Fundamental Skill SetAgile Fundamental Skill Set
Agile Fundamental Skill SetTsuyoshi Ushio
 
RECURSOS DIDÁCTICOS
RECURSOS DIDÁCTICOSRECURSOS DIDÁCTICOS
RECURSOS DIDÁCTICOSYani Arroyo
 
PRA Overview
PRA OverviewPRA Overview
PRA Overviewruthb1
 
Doctype htm1
Doctype htm1Doctype htm1
Doctype htm1Eddy_TKJ
 
Aprendizaje autonomo
Aprendizaje autonomoAprendizaje autonomo
Aprendizaje autonomoBenjamin Def
 
Baca saya sebelum_menginstall_aplikasi_spm2013
Baca saya sebelum_menginstall_aplikasi_spm2013Baca saya sebelum_menginstall_aplikasi_spm2013
Baca saya sebelum_menginstall_aplikasi_spm2013Andik Rahmat
 
laporan instalasi dan konfigurasi dhcp
laporan instalasi dan konfigurasi dhcp laporan instalasi dan konfigurasi dhcp
laporan instalasi dan konfigurasi dhcp bayu657
 
Trabajo Prctico N6
Trabajo Prctico N6Trabajo Prctico N6
Trabajo Prctico N6tobias-b
 
Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14
Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14
Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14fahadansari131
 
Trabalho de Artes sobre> A banda Ventania
Trabalho de Artes sobre>  A banda VentaniaTrabalho de Artes sobre>  A banda Ventania
Trabalho de Artes sobre> A banda VentaniaJuliano55
 

Andere mochten auch (17)

Flat plan evaluation
Flat plan evaluationFlat plan evaluation
Flat plan evaluation
 
French learning resource Champs elysees series 23 number 6
French learning resource Champs elysees series 23 number 6French learning resource Champs elysees series 23 number 6
French learning resource Champs elysees series 23 number 6
 
Comelit SK9030 Data Sheet
Comelit SK9030 Data SheetComelit SK9030 Data Sheet
Comelit SK9030 Data Sheet
 
La vida de josé francisco de san martin
La vida de josé francisco de san martinLa vida de josé francisco de san martin
La vida de josé francisco de san martin
 
Bus 660 week 1 dq 2 education and experience
Bus 660 week 1 dq 2 education and experienceBus 660 week 1 dq 2 education and experience
Bus 660 week 1 dq 2 education and experience
 
Knee Socks – Arctic Monkeys Presentation
Knee Socks – Arctic Monkeys PresentationKnee Socks – Arctic Monkeys Presentation
Knee Socks – Arctic Monkeys Presentation
 
Agile Fundamental Skill Set
Agile Fundamental Skill SetAgile Fundamental Skill Set
Agile Fundamental Skill Set
 
RECURSOS DIDÁCTICOS
RECURSOS DIDÁCTICOSRECURSOS DIDÁCTICOS
RECURSOS DIDÁCTICOS
 
Laurent vegas
Laurent vegasLaurent vegas
Laurent vegas
 
PRA Overview
PRA OverviewPRA Overview
PRA Overview
 
Doctype htm1
Doctype htm1Doctype htm1
Doctype htm1
 
Aprendizaje autonomo
Aprendizaje autonomoAprendizaje autonomo
Aprendizaje autonomo
 
Baca saya sebelum_menginstall_aplikasi_spm2013
Baca saya sebelum_menginstall_aplikasi_spm2013Baca saya sebelum_menginstall_aplikasi_spm2013
Baca saya sebelum_menginstall_aplikasi_spm2013
 
laporan instalasi dan konfigurasi dhcp
laporan instalasi dan konfigurasi dhcp laporan instalasi dan konfigurasi dhcp
laporan instalasi dan konfigurasi dhcp
 
Trabajo Prctico N6
Trabajo Prctico N6Trabajo Prctico N6
Trabajo Prctico N6
 
Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14
Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14
Environment segments by MUHAMMAD FAHAD ANSARI 12IEEM 14
 
Trabalho de Artes sobre> A banda Ventania
Trabalho de Artes sobre>  A banda VentaniaTrabalho de Artes sobre>  A banda Ventania
Trabalho de Artes sobre> A banda Ventania
 

Ähnlich wie Boas Práticas com TDD: 13 dicas valiosas

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
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
 
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
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
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
 
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
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & MockingDaniel Tamiosso
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
Pensando em java univali turbinando seus testes
Pensando em java univali   turbinando seus testesPensando em java univali   turbinando seus testes
Pensando em java univali turbinando seus testesSandro Giacomozzi
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testesCarlos Santana
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Thiago Faria de Andrade
 
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
 
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
 

Ähnlich wie Boas Práticas com TDD: 13 dicas valiosas (20)

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
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 - 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
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
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
 
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 )
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & Mocking
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Pensando em java univali turbinando seus testes
Pensando em java univali   turbinando seus testesPensando em java univali   turbinando seus testes
Pensando em java univali turbinando seus testes
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...
 
Debug Otimizado
Debug OtimizadoDebug Otimizado
Debug Otimizado
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
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
 
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)
 

Mehr von Camilo Lopes

Mitos e verdades startup
Mitos e verdades startupMitos e verdades startup
Mitos e verdades startupCamilo Lopes
 
Usecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do TrocoUsecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do TrocoCamilo Lopes
 
Tdc2014 scrum remoto rola ou nao rola
Tdc2014  scrum remoto rola ou  nao rolaTdc2014  scrum remoto rola ou  nao rola
Tdc2014 scrum remoto rola ou nao rolaCamilo Lopes
 
Apresentando Scrum ao cliente
Apresentando Scrum ao clienteApresentando Scrum ao cliente
Apresentando Scrum ao clienteCamilo Lopes
 
ITS de Startup para Startups
ITS  de Startup para StartupsITS  de Startup para Startups
ITS de Startup para StartupsCamilo Lopes
 
Overview about AngularJS Framework
Overview about AngularJS Framework Overview about AngularJS Framework
Overview about AngularJS Framework Camilo Lopes
 
Start-up adotando Scrum
Start-up adotando ScrumStart-up adotando Scrum
Start-up adotando ScrumCamilo Lopes
 
Como ser escritor no brasil
Como ser escritor no brasilComo ser escritor no brasil
Como ser escritor no brasilCamilo Lopes
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberCamilo Lopes
 
Scrum in few minutes
Scrum in few minutesScrum in few minutes
Scrum in few minutesCamilo Lopes
 
Convencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5minConvencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5minCamilo Lopes
 
Guia JEE com Frameworks
Guia JEE com FrameworksGuia JEE com Frameworks
Guia JEE com FrameworksCamilo Lopes
 
Palestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealandPalestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealandCamilo Lopes
 
Guia de Bolso SCJP
Guia de Bolso SCJPGuia de Bolso SCJP
Guia de Bolso SCJPCamilo Lopes
 
Seminario Refatoracao
Seminario RefatoracaoSeminario Refatoracao
Seminario RefatoracaoCamilo Lopes
 

Mehr von Camilo Lopes (19)

Mitos e verdades startup
Mitos e verdades startupMitos e verdades startup
Mitos e verdades startup
 
Usecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do TrocoUsecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do Troco
 
Tdc2014 scrum remoto rola ou nao rola
Tdc2014  scrum remoto rola ou  nao rolaTdc2014  scrum remoto rola ou  nao rola
Tdc2014 scrum remoto rola ou nao rola
 
Apresentando Scrum ao cliente
Apresentando Scrum ao clienteApresentando Scrum ao cliente
Apresentando Scrum ao cliente
 
ITS de Startup para Startups
ITS  de Startup para StartupsITS  de Startup para Startups
ITS de Startup para Startups
 
Overview about AngularJS Framework
Overview about AngularJS Framework Overview about AngularJS Framework
Overview about AngularJS Framework
 
Start-up adotando Scrum
Start-up adotando ScrumStart-up adotando Scrum
Start-up adotando Scrum
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
Como ser escritor no brasil
Como ser escritor no brasilComo ser escritor no brasil
Como ser escritor no brasil
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
 
Mock with Mockito
Mock with MockitoMock with Mockito
Mock with Mockito
 
Scrum in few minutes
Scrum in few minutesScrum in few minutes
Scrum in few minutes
 
Convencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5minConvencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5min
 
Guia JEE com Frameworks
Guia JEE com FrameworksGuia JEE com Frameworks
Guia JEE com Frameworks
 
Palestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealandPalestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealand
 
Guia de Bolso SCJP
Guia de Bolso SCJPGuia de Bolso SCJP
Guia de Bolso SCJP
 
Certificacao Java
Certificacao JavaCertificacao Java
Certificacao Java
 
Seminario Refatoracao
Seminario RefatoracaoSeminario Refatoracao
Seminario Refatoracao
 
Refactoring
RefactoringRefactoring
Refactoring
 

Boas Práticas com TDD: 13 dicas valiosas

  • 1. Boas Práticas com TDD Camilo Lopes @camilolope
  • 2. 1. Crie apenas os testes que precisa • É comum querer sair escrevendo vários testes por horas sem saber se realmente precisa de todos eles. A idéia é: crie apenas testes que agreguem valor, e para o que precisa validar no momento.
  • 3. 2. Ns asserts • Aqui é quando um método tem vários asserts para cenários diferentes. Evite isso. Crie assert com base no tipo do teste que está criando; o assert tem que estar alinhado com o nome do teste. Mas não queira colocar vários asserts no mesmo teste.
  • 4. 3. Nome de métodos confusos • Os nomes dos métodos de teste precisam ser específicos e diretos para o que se quer testar. Por exemplo: testIfListUserIsEmpty. Evite o underscore para separação.
  • 5. 4. Saiba a diferença entre objetos e primitivos • Saber usar corretamente a igualdade com assert é importante, pois ajuda a entender melhor o teste. Se está testando objetos, use assertEquals, se é primitivo use asserTrue/False com o operador que deseja.
  • 6. 5. Agregação de valor • Os testes precisam agregar valor, se não agregam valor para aplicação ele se torna um custo. Antes de escrever um teste veja se realmente ele é válido.
  • 7. 6. Maldita Cobertura • Se você precisa escrever testes para atingir percentual de cobertura significa que os demais testes já criados não estão agregando tanto valor como deveria. A sugestão é: identifique os testes que não agregam valor e refatore ou remova. Isso terá um custo, mas é necessário, assim você aprenderá que é importante criar apenas os testes necessários.
  • 8. 7. Bons testes • Agregam valor e a cobertura é conseqüência. E não há esforço extra para isso. Então lembre-se: não há separação entre cobertura e bons testes.
  • 9. 8. A relação • Não há número ideal de quantos testes uma classe deve ter e não há relação alguma que quanto mais teste melhor a qualidade, o mais importante é o quanto o teste agrega valor.
  • 10. 9. TDD não é receita de bolo • O fato de ter unit test no seu código não quer dizer que fez TDD. TDD vai além de unit test apenas.
  • 11. 10. Use com moderação • Use o setup com moderação, apenas coloque lá aquilo que serão compartilhados por vários testes em cenários diferentes.
  • 12. 11. Teste Cross • Evite criar testes que funcionam só em um determinado ambiente, ou seja, “em minha máquina funciona”. Seu teste deve rodar em qualquer ambiente que for executado e não ter dependências de ambiente.
  • 13. 12. No comments • Evite de toda forma comentários no seu teste que explique o que ele faz. Caso você comece a escrever um comentário para explicar seu método, comece a apagá-lo, pois há um problema de legibilidade de código no ar.
  • 14. 13. O jegue lerdo • É aquele teste lento para ser executado, onde podemos ir ao banheiro, tomar um café e pior, deixar rodando no final do dia e ir pra casa para podermos ver o resultado só no dia seguinte. Testes lentos é sinal de baixa qualidade. Descubra o gargalo e refatore.
  • 15. Books