SlideShare una empresa de Scribd logo
1 de 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!!!

Más contenido relacionado

La actualidad más candente

Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitosMailson Queiroz
 
Estimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoEstimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoClaudio Martins
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
Modelo conceitual fisico_logico_er[1]
Modelo conceitual fisico_logico_er[1]Modelo conceitual fisico_logico_er[1]
Modelo conceitual fisico_logico_er[1]Miguel Aquino
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais okMarcos Morais de Sousa
 
Trabalho sobre a ISO/IEC 15504
Trabalho sobre a ISO/IEC 15504Trabalho sobre a ISO/IEC 15504
Trabalho sobre a ISO/IEC 15504Ricardo Zalla
 
Qualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normasQualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normasAlex Camargo
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlex Camargo
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasDiego Marek
 
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxALEXANDRELISBADASILV
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 

La actualidad más candente (20)

ISO 15504
ISO 15504ISO 15504
ISO 15504
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 
Estimativa de software usando pontos de função
Estimativa de software usando pontos de funçãoEstimativa de software usando pontos de função
Estimativa de software usando pontos de função
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)Aula 3 - Política de Segurança da Informação (PSI)
Aula 3 - Política de Segurança da Informação (PSI)
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Modelo conceitual fisico_logico_er[1]
Modelo conceitual fisico_logico_er[1]Modelo conceitual fisico_logico_er[1]
Modelo conceitual fisico_logico_er[1]
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
 
Trabalho sobre a ISO/IEC 15504
Trabalho sobre a ISO/IEC 15504Trabalho sobre a ISO/IEC 15504
Trabalho sobre a ISO/IEC 15504
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Qualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normasQualidade de Software: Modelos e normas
Qualidade de Software: Modelos e normas
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemas
 
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptx
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 

Destacado

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
 

Destacado (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
 

Similar a Boas práticas com TDD

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
 

Similar a Boas práticas com TDD (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)
 

Más de 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
 

Más de 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

  • 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