SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
BOAS	
  PRÁTICAS	
  DE	
  TESTES,	
  
BAD	
  SMELL	
  E	
  OUTROS	
  MACETES
Por Ismael Soares
POR QUE VOCÊ
TESTA SEU CÓDIGO?
ME AJUDA NO DESIGN
GARANTIR REGRAS DE NEGÓCIO
ENTENDER O NEGÓCIO
AJUDA RESOLVER PROBLEMAS
COMPLEXOS
ETC.
OK,	
  MAS	
  COMO	
  O	
  TESTE	
  TE	
  
AJUDA	
  COM	
  ESTAS	
  COISAS?
FEEDBACK!
VOCÊ	
  OS	
  ESCUTA?
Mike	
  Cohn	
  (Succeeding	
  with	
  Agile)
PIRÂMIDE	
  DE	
  TESTES
UNIDADE
MAS	
  O	
  QUE	
  É	
  UMA	
  
UNIDADE?
UMA UNIDADE DE NEGÓCIO É UM
COMPORTAMENTO DO SEU CÓDIGO!
______________________________
Martin Fowler
NÃO É UMA CLASSE OU UM MÉTODO
Thought	
  Works
VOCÊ DEVE SE PREOCUPAR MAIS
COM O QUE
DO QUE COM COMO
ESCREVENDO	
  TESTES	
  
MELHORES
Referência:
https://info.thoughtworks.com/praticas-e-tendencias-em-teste-ebook.html
#	
  TRATE	
  O	
  CÓDIGO	
  DE	
  TESTES	
  
COMO	
  DE	
  PRODUÇÃO
https://8thlight.com/blog/uncle-bob/2013/09/23/Test-first.html
TEST FIRST
TESTS ARE SPECS
ROTTEN TESTS
SIMPLE DESIGN
#	
  UTILIZE	
  UM	
  PADRÃO	
  DE	
  
TESTES
OS 3 AS - ARRANGE, ACT E ASSERT
Organizar:	
  Configure	
  suas	
  informações	
  e	
  qualquer	
  outro	
  
dado	
  necessário	
  ao	
  teste
Agir:	
  Execute	
  a	
  ação	
  que	
  vai	
  validar	
  
Verificar:	
  Veja	
  o	
  que	
  era	
  esperado	
  realmente	
  aconteceu
PADRÃO BDD
#	
  NÃO	
  CONVIVA	
  COM	
  TESTES	
  
INSTÁVEIS
ERADICATING NON-
DETERMINISM IN TESTS
http://martinfowler.com/articles/nonDeterminism.html
Não	
  passa	
  segurança
Precisa	
  de	
  interpretação
Vira	
  paisagem	
  com	
  tempo
#	
  UTILIZE	
  DUBLES	
  DE	
  TESTES
http://rkmael.com/2014/11/13/dubles_testes/
http://rkmael.com/2014/11/17/comparando-dubles-testes/
COMPARANDO DUBLES
#	
  CUIDADO	
  COM	
  EXCESSO	
  DE	
  
MOCKS
SEM PERCEBER VOCÊ PODE
ESTAR MOCKANDO UM
COMPORTAMENTO
QUANDO USAR MOCKS?
Quando	
  o	
  comportamento	
  não	
  é	
  responsabilidade	
  da	
  
unidade	
  testada.
Exemplo:	
  um	
  Service	
  chamando	
  outro,	
  um	
  Service	
  
chamando	
  um	
  DAO,	
  um	
  Controller	
  chamando	
  um	
  
Service,	
  etc.
E UMA REGRA CHAMADA
DENTRO DE UM MODEL/
ENTITY, DEVO MOCKAR?
MÁS	
  PRÁTICAS
#	
  TUDO	
  NO	
  MÉTODO	
  BEFORE
@Before	
  -­‐	
  uma	
  vez	
  antes	
  de	
  cada	
  teste
@BeforeClass	
  -­‐	
  uma	
  vez	
  apenas	
  antes	
  de	
  
todos	
  os	
  testes
@After	
  -­‐	
  uma	
  vez	
  depois	
  de	
  cada	
  teste
@AfterClass	
  -­‐	
  uma	
  vez	
  apenas	
  depois	
  de	
  
todos	
  os	
  testes
#NÃO	
  EVIDENCIAR	
  O	
  CENÁRIO
ERRADO
CORRETO
#CENARIOS	
  GIGANTES
SE O CENÁRIO ESTA MUITO
GRANDE É PORQUE SEU
CÓDIGO ESTÁ MUITO
ACOPLADO
#CENARIOS	
  IMPRONUNCIAVEIS
deveRetornarMensagemDeValidacaoDaDataDeEmissaoEBloqu
earANotaFiscalQuandoOUsuarioNaoTiverPermissoesEADataDe
EmissaoUltrapassarADataParametrizadaEOStatusDeRecebimen
toForDiferenteDeReceberComDataAcimaDoParametrizado
SE VOCÊ NÃO CONSEGUE
EXPRESSAR DE FORMA
SIMPLES UM CENARIO, É
SINAL DE QUE ESTA MUITO
COMPLEXO
#TESTE	
  DE	
  EXCEPTION	
  SE	
  
VALIDAR	
  A	
  MENSAGEM
ERRADO
CORRETO
#NÃO	
  VALIDAR	
  A	
  ORDEM	
  DAS	
  
INTERAÇÕES
ERRADO
CORRETO
#ALTERAR	
  O	
  CÓDIGO	
  DE	
  
PRODUÇÃO	
  APENAS	
  POR	
  CAUSA	
  
DOS	
  TESTES
DEIXAR O MÉTODO DEFAULT
PRA TESTA-LO
CRIAR SETTER PARA FAZER
INJEÇÃO DE DEPENDÊNCIA
CRIAR MÉTODO PARA ALTERAR O
ESTADO DO CÓDIGO DURANTE O
TESTE
Obrigado
@rkmael
rkmael@hotmail.com
rkmael.com

Mais conteúdo relacionado

Destaque

Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDDIsmael
 
10 Tips for Making Beautiful Slideshow Presentations by www.visuali.se
10 Tips for Making Beautiful Slideshow Presentations by www.visuali.se10 Tips for Making Beautiful Slideshow Presentations by www.visuali.se
10 Tips for Making Beautiful Slideshow Presentations by www.visuali.seEdahn Small
 

Destaque (7)

Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9Java modules using project jigsaw@jdk 9
Java modules using project jigsaw@jdk 9
 
First Steps in Native Cloud Application
First Steps in Native Cloud ApplicationFirst Steps in Native Cloud Application
First Steps in Native Cloud Application
 
Construindo a sua carreira
Construindo a sua carreiraConstruindo a sua carreira
Construindo a sua carreira
 
Introdução a BDD
Introdução a BDDIntrodução a BDD
Introdução a BDD
 
Bad smells no código
Bad smells no códigoBad smells no código
Bad smells no código
 
Pensando Rápido e Devagar
Pensando Rápido e DevagarPensando Rápido e Devagar
Pensando Rápido e Devagar
 
10 Tips for Making Beautiful Slideshow Presentations by www.visuali.se
10 Tips for Making Beautiful Slideshow Presentations by www.visuali.se10 Tips for Making Beautiful Slideshow Presentations by www.visuali.se
10 Tips for Making Beautiful Slideshow Presentations by www.visuali.se
 

Semelhante a Boas Praticas de Testes, Bad Smell e Outros Macetes

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Testando seus testes com Stryker.NET
Testando seus testes com Stryker.NET Testando seus testes com Stryker.NET
Testando seus testes com Stryker.NET Robson Soares Amorim
 
É Possível Empreender Com Poucos Recursos?
É Possível Empreender Com Poucos Recursos?É Possível Empreender Com Poucos Recursos?
É Possível Empreender Com Poucos Recursos?Ibrahim Cesar
 
Qualidade em Testes de Software
Qualidade em Testes de SoftwareQualidade em Testes de Software
Qualidade em Testes de SoftwareGDGFoz
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos TestesIsmael
 
Guia da Startup - Aceleratech ESPM
Guia da Startup - Aceleratech ESPMGuia da Startup - Aceleratech ESPM
Guia da Startup - Aceleratech ESPMJoaquim Torres
 
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
 
Bootstraped Startups - Javaneiros
Bootstraped Startups - JavaneirosBootstraped Startups - Javaneiros
Bootstraped Startups - JavaneirosJoaquim Torres
 
Bootstraped Startups - QCon SP 2012
Bootstraped Startups - QCon SP 2012Bootstraped Startups - QCon SP 2012
Bootstraped Startups - QCon SP 2012Joaquim Torres
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
Lean startup - Maratona de Negócios - Campus Party Brasil
Lean startup  - Maratona de Negócios - Campus Party BrasilLean startup  - Maratona de Negócios - Campus Party Brasil
Lean startup - Maratona de Negócios - Campus Party BrasilGenésio Gomes Cruz Neto
 
Apostila1 academia cheiao-anotodo
Apostila1 academia cheiao-anotodoApostila1 academia cheiao-anotodo
Apostila1 academia cheiao-anotodowendelrock
 
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
 
Plano de negócios endeavor
Plano de negócios endeavorPlano de negócios endeavor
Plano de negócios endeavorKarlla Costa
 

Semelhante a Boas Praticas de Testes, Bad Smell e Outros Macetes (20)

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Testando seus testes com Stryker.NET
Testando seus testes com Stryker.NET Testando seus testes com Stryker.NET
Testando seus testes com Stryker.NET
 
É Possível Empreender Com Poucos Recursos?
É Possível Empreender Com Poucos Recursos?É Possível Empreender Com Poucos Recursos?
É Possível Empreender Com Poucos Recursos?
 
Qualidade em Testes de Software
Qualidade em Testes de SoftwareQualidade em Testes de Software
Qualidade em Testes de Software
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos Testes
 
estrategia de negocio N.ppt
estrategia de negocio N.pptestrategia de negocio N.ppt
estrategia de negocio N.ppt
 
Guia da Startup - Aceleratech ESPM
Guia da Startup - Aceleratech ESPMGuia da Startup - Aceleratech ESPM
Guia da Startup - Aceleratech ESPM
 
Análise através de hipóteses
Análise através de hipótesesAnálise através de hipóteses
Análise através de hipóteses
 
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
 
Ctai Teste De Software Aula 2
Ctai Teste De Software Aula 2Ctai Teste De Software Aula 2
Ctai Teste De Software Aula 2
 
Bootstraped Startups - Javaneiros
Bootstraped Startups - JavaneirosBootstraped Startups - Javaneiros
Bootstraped Startups - Javaneiros
 
Bootstraped Startups - QCon SP 2012
Bootstraped Startups - QCon SP 2012Bootstraped Startups - QCon SP 2012
Bootstraped Startups - QCon SP 2012
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Lean startup - Maratona de Negócios - Campus Party Brasil
Lean startup  - Maratona de Negócios - Campus Party BrasilLean startup  - Maratona de Negócios - Campus Party Brasil
Lean startup - Maratona de Negócios - Campus Party Brasil
 
Apostila1 academia cheiao-anotodo
Apostila1 academia cheiao-anotodoApostila1 academia cheiao-anotodo
Apostila1 academia cheiao-anotodo
 
Introdução ao Teste de Software
Introdução ao Teste de SoftwareIntrodução ao Teste de Software
Introdução ao Teste de Software
 
Estrategias Ágeis para testes sob pressão
Estrategias Ágeis para testes sob pressãoEstrategias Ágeis para testes sob pressão
Estrategias Ágeis para testes sob pressão
 
6º aula (telemarketing)
6º aula (telemarketing)6º aula (telemarketing)
6º aula (telemarketing)
 
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
 
Plano de negócios endeavor
Plano de negócios endeavorPlano de negócios endeavor
Plano de negócios endeavor
 

Mais de Ismael

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilIsmael
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIsmael
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basicoIsmael
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft CultureIsmael
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacksIsmael
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxoIsmael
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017Ismael
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas FrequentesIsmael
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4Ismael
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do ÁgilIsmael
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John KotterIsmael
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossIsmael
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016Ismael
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider AgilIsmael
 
Law of demeter
Law of demeterLaw of demeter
Law of demeterIsmael
 
Junit Lambda
Junit LambdaJunit Lambda
Junit LambdaIsmael
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - EstrategiasIsmael
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1Ismael
 
Como você testa seu software
Como você testa seu softwareComo você testa seu software
Como você testa seu softwareIsmael
 
Conceitos Historias do Usuario
Conceitos Historias do UsuarioConceitos Historias do Usuario
Conceitos Historias do UsuarioIsmael
 

Mais de Ismael (20)

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento Sistemico
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basico
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft Culture
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacks
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxo
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas Frequentes
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do Ágil
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John Kotter
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-Ross
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil
 
Law of demeter
Law of demeterLaw of demeter
Law of demeter
 
Junit Lambda
Junit LambdaJunit Lambda
Junit Lambda
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - Estrategias
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1
 
Como você testa seu software
Como você testa seu softwareComo você testa seu software
Como você testa seu software
 
Conceitos Historias do Usuario
Conceitos Historias do UsuarioConceitos Historias do Usuario
Conceitos Historias do Usuario
 

Boas Praticas de Testes, Bad Smell e Outros Macetes