SlideShare uma empresa Scribd logo
1 de 77
Baixar para ler offline
System.out.println(quot;Testequot;);




                  Jevô
         Paulo César M. Jeveaux

           www.jeveaux.com
          www.portaljava.com
Jeveaux
Desenvolvedor Java há 7++ anos

Administrador do PortalJava e ESJUG

Palestrante-Entusiasta-Evangelista Java

Entusiasta Rails, Python e Agile

Curioso e aprendendo Erlang =)
| Sobre o que vamos falar
●   Introdução
●   Bug
●   Seja profissional
●   O que são testes
●   Preciso de testes? Por que? Garanta-se!
●   TDD
●   BDD
●   Conclusões
| Introdução
     Desenvolvimento de software
| Introdução
     Desenvolvimento de software
         Falhas de Software
1/3 poderiam ser evitadas




                            [1]
1/3 poderiam ser evitadas



             ~50% são detectadas
             em produção

                                   [1]
| Introdução
     Desenvolvimento de software
         Falhas de Software
         Falhas custam caro
$$$$$$




         [1][2]
$$$$$$
$$$$$$




         [1][2]
$$$$$$
   $$$$$$

   $$$$$$

60 bilhões ++
prejuízo anual
                 [1][2]
| Introdução
     Desenvolvimento de software
          Falhas de Software
          Falhas custam caro
       Testes não evitam falhas
| Introdução
      Desenvolvimento de software
             Falhas de Software
             Falhas custam caro
          Testes não evitam falhas
  Testes identificam as falhas antes delas
                acontecerem
| Bug
Bugs foram os insetos
nas válvulas do Eniac...
Bugs foram os insetos
nas válvulas do Eniac...




             … e são os insetos no
             vidro do carro
Bugs foram os insetos
Nas válvulas do Eniac...
  Mas também são os muitos
  problemas que somente os
  usuários encontrarão
             … e são os insetos no
             vidro do carro
Bugs foram os insetos
Nas válvulas do Eniac...
  Mas também são os muitos
  problemas que somente os
  usuários encontrarão
             … ou os insetos no
             vidro do carro
Bugs vão existir. Sempre!
Bugs vão existir. Sempre!

    Não existe engenharia perfeita
Bugs vão existir. Sempre!

    Não existe engenharia perfeita

Antes de corrigir um bug, escreva
um teste que o detecte
Bugs vão existir. Sempre!

    Não existe engenharia perfeita

Antes de corrigir um bug, escreva
um teste que o detecte


             XP
???
Não esse, mas esse
Não esse, mas esse



www.extremeprogramming.org
| Garanta o que você faz
   seja profissional
Cliente:
  Isso aqui não está funcionando!



Programador:
  Mas hanm!? Aqui funciona.
Depois eu testo...
Depois eu testo...
                … estou sem tempo
                para testar agora...
Depois eu testo...
                … estou sem tempo
                para testar agora...

...funcionou! Não mude
mais nada agora.
Depois eu testo...
Programadores profissionais
            … estou sem tempo
      escrevem testesagora...
            para testar

...funcionou! Não mude
mais nada agora.
         E ponto final!

                                [4]
| Mas o que são testes?
| O é um teste?
Um teste é uma verificação feita sobre um
 código ou fragmento de código para garantir
 que uma determinada entrada produza,
 sempre, uma saída esperada
| O teste é
- Pontual

- Finito

- Previsível
| O teste é    O teste deve ser |
- Pontual       - Simples

- Finito        - Conciso

- Previsível    - Legível
Unidade de código
Unidade de código

                    Parte da
                    solução
Unidade de código

                         Parte da
                         solução



         Escrito pelo programador
Unidade de código

                              Parte da
Atualizados                   solução



              Escrito pelo programador
Aceitação
Aceitação

            Solução
            completa
Aceitação

                         Solução
                         completa



            Integração
Aceitação           Funcionais

                           Solução
                           completa



            Integração
Aceitação            Funcionais

                             Solução
Atualizados                  completa



              Integração
| Testes Unitários
- Testam partes isoladas da solução

- Partes do código

- Simule as dependências (Mocks,
  fixtures)

- Fundamental para TDD/BDD
| Testes de Aceitação
- Testam histórias/funcionalidades/caso
  de uso

- Envolvem uma ou mais partes da
  solução
| Testes de Integração
- Testam a integração da solução com
  agentes externos

- Pode ser feito isolado ou com a solução
  completa

- Geralmente não é muito praticado
| Mas eu preciso de testes?
SIM
SIM
Você:
 - Deve verificar o código. Sempre!

 - Deve garantir que os requisitos estão
 Implementados

 - Deve ter segurança para fazer alterar
Você:
 - Precisa entregar rápido

 - Precisa entregar com qualidade

 - Precisa garantir a qualidade do que
 será entregue
| Como você se garante?
| Como você se garante?
 Bug Encontrado




 Código alterado          OK
| Como você se garante?
 Bug Encontrado




 Código alterado          OK
| Como você se garante?
 Bug Encontrado




 Código alterado          OK


                          BUG



                          ERRO



                          ????
| Garanta-se nos testes
●   Aplicações cobertas por bons testes propiciam:
    ●   Facilidade de manutenção;
    ●   Facilidade para inclusão de novos membros no time
        de desenvolvimento;
    ●   Redução de problemas e custos nas manutenções;
| Garanta-se nos testes
●   Aplicações cobertas por bons testes propiciam:
    ●   Facilidade de manutenção;
    ●   Facilidade para inclusão de novos membros no time
        de desenvolvimento;
    ●   Redução de problemas e custos nas manutenções;
    ●   Telefone silencioso nas madrugadas!
| Garanta-se nos testes
 Bug Encontrado




 Código alterado          OK


                          OK



                          OK



                          OK
| Test Driven Development
                     refatore




                     Escreva código
     Escreva um
                       que passe
        Teste
                        no teste
| TDD
●   Escreva o teste antes da implementação


●   Escreva somente código para passar no teste


●   Escreva testes pequenos




                                                  [10]
| Behaviour Driven Development
                    refatore




                     Escreva código
    Escreva um
                       que passe
       Teste
                        no teste
| BDD
●   Escreva o teste antes da implementação


●   Escreva somente código para passar no teste


●   Escreva testes pequenos
TDD? BDD? Copy&Paste?
TDD? BDD? Copy&Paste?

TDD
      Código

BDD
      Comportamento
| Conclusões
●   Testes colaboram para o aumento da qualidade
    dos sistemas
●   Desenvolvedores ficam mais corajosos e confiantes
    ao programar
●   O software cresce de forma ordenada e com
    qualidade de design
●   O software se adapta com mais facilidade a
    mudanças
| Conclusões
●   Demora mais?
    ●   No início é necessário escrever muitos testes
    ●   Depois da inércia a suite de testes está pronta e escrevem-se menos
        testes
    ●   Certeza de que a implementação está funcionando
    ●   Maioria dos bugs encontrados em tempo de desenvolvimento
    ●   Bugs de produção são encontrados e corrigidos com muito mais
        velocidade
●   Então no fim das contas demora-se muito menos tempo e com muito
    mais qualidade




                                                                              [10]
| Conclusões

           TDD ou BDD?

   Não importa! Faça qualquer um
       desde que faça direito
Dúvidas?



já podem acordar
| Referências
[1] - NIST - http://www.nist.gov/public_affairs/releases/n02-10.htm
[2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd
[3] - Caelum - http://blog.caelum.com.br/2006/09/08/voce-acredita-no-seu-codigo/
[4] – Fragmental - Shoes - http://blog.fragmental.com.br/2007/10/31/programadores-
profissionais-escrevem-testes-ponto-final/
[5] – Marcos Pereira – http://marcospereira.wordpress.com/2007/11/27/desenvolvedores-
odeiam-testar
[6] – Wikipedia – http://en.wikipedia.org/wiki/Test-driven_development
[7] - TDD - http://www.testdriven.com
[8] - Brod - http://www.brod.com.br
[9] – java.net - http://wiki.java.net/bin/view/People/SmellsToRefactorings
[10] – Palestra Desenvolvimento Guiado por Testes (TDD) – Guilherme Chapiewski
System.out.println(quot;Testequot;);




                  Jevô
         Paulo César M. Jeveaux

           www.jeveaux.com
          www.portaljava.com

Mais conteúdo relacionado

Mais procurados

Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Samanta Cicilia
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Daniel Carvalhinho
 
Alcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaAlcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaSamanta Cicilia
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta Cicilia
 
Visual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineVisual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineSamanta Cicilia
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous DeliverySamanta Cicilia
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingDevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingSamanta Cicilia
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous DeliverySamanta Cicilia
 

Mais procurados (20)

Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)Continuous Delivery - versão estendida :)
Continuous Delivery - versão estendida :)
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
 
Introdução a TDD
Introdução a TDDIntrodução a TDD
Introdução a TDD
 
Alcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínuaAlcançando qualidade de software através de entrega contínua
Alcançando qualidade de software através de entrega contínua
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Visual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineVisual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipeline
 
[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery[Lady talks]Continuous Delivery
[Lady talks]Continuous Delivery
 
Testes unitários
Testes unitáriosTestes unitários
Testes unitários
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosContinuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingDevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
 
Workshop ietec Devops Testing
Workshop ietec Devops TestingWorkshop ietec Devops Testing
Workshop ietec Devops Testing
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 

Semelhante a Teste Java Print

Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...Rafael Kanaoka
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e SeleniumAndré Thiago
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agileananegrello
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfHoctairBernardino
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Javaelliando dias
 
Tdc continuous testing
Tdc   continuous testing Tdc   continuous testing
Tdc continuous testing Walter Farias
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - IntroduçãoHélio Costa e Silva
 
IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesJefferson Moreira
 
Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Adriano Bertucci
 
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1GeneXus
 

Semelhante a Teste Java Print (20)

TDD
TDDTDD
TDD
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agile
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
 
Tdc continuous testing
Tdc   continuous testing Tdc   continuous testing
Tdc continuous testing
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - Introdução
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas Doentes
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012
 
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
019 Convirtiendo Una Aplicacion Web 9.0 A Gene Xus X Y Ev1
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 

Mais de Paulo César M Jeveaux

Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaWine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaPaulo César M Jeveaux
 
Empreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasiaEmpreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasiaPaulo César M Jeveaux
 
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...Paulo César M Jeveaux
 
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaCase Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaPaulo César M Jeveaux
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosPaulo César M Jeveaux
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMPaulo César M Jeveaux
 
Negociação de contratos de projetos de software
Negociação de contratos de projetos de softwareNegociação de contratos de projetos de software
Negociação de contratos de projetos de softwarePaulo César M Jeveaux
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMPaulo César M Jeveaux
 
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchTurbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchPaulo César M Jeveaux
 
Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004Paulo César M Jeveaux
 

Mais de Paulo César M Jeveaux (20)

Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaWine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
 
Empreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasiaEmpreendedorismo além do mundo da fantasia
Empreendedorismo além do mundo da fantasia
 
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
Case Giran 2011: os desafios no uso de práticas ágeis no dia-a-dia de uma sta...
 
E-commerce Além dos Sites
E-commerce Além dos SitesE-commerce Além dos Sites
E-commerce Além dos Sites
 
Controle de versão com GIT
Controle de versão com GITControle de versão com GIT
Controle de versão com GIT
 
Resenha Rework por Jeveaux
Resenha Rework por JeveauxResenha Rework por Jeveaux
Resenha Rework por Jeveaux
 
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-diaCase Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
Case Giran - Os desafios no uso de XP e SCRUM no dia-a-dia
 
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatosSCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
SCRUM e XP - Desenvolvimento Ágil de Software - Experiências e relatos
 
Desafios no e-commerce brasileiro
Desafios no e-commerce brasileiroDesafios no e-commerce brasileiro
Desafios no e-commerce brasileiro
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM
 
Negociação de contratos de projetos de software
Negociação de contratos de projetos de softwareNegociação de contratos de projetos de software
Negociação de contratos de projetos de software
 
Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUMDesenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM
 
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchTurbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
 
Extreme Programming - XP
Extreme Programming - XPExtreme Programming - XP
Extreme Programming - XP
 
Desenvolvimento Ágil com SCRUM
Desenvolvimento Ágil com SCRUMDesenvolvimento Ágil com SCRUM
Desenvolvimento Ágil com SCRUM
 
Certificação Digital
Certificação DigitalCertificação Digital
Certificação Digital
 
AOP - JustJava - 2005
AOP - JustJava - 2005AOP - JustJava - 2005
AOP - JustJava - 2005
 
AOP - ESJUG - 2005
AOP - ESJUG - 2005AOP - ESJUG - 2005
AOP - ESJUG - 2005
 
Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004Comunidades Virtuais Java - Conexão Java - 2004
Comunidades Virtuais Java - Conexão Java - 2004
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 

Teste Java Print

  • 1. System.out.println(quot;Testequot;); Jevô Paulo César M. Jeveaux www.jeveaux.com www.portaljava.com
  • 2. Jeveaux Desenvolvedor Java há 7++ anos Administrador do PortalJava e ESJUG Palestrante-Entusiasta-Evangelista Java Entusiasta Rails, Python e Agile Curioso e aprendendo Erlang =)
  • 3. | Sobre o que vamos falar ● Introdução ● Bug ● Seja profissional ● O que são testes ● Preciso de testes? Por que? Garanta-se! ● TDD ● BDD ● Conclusões
  • 4. | Introdução Desenvolvimento de software
  • 5.
  • 6.
  • 7. | Introdução Desenvolvimento de software Falhas de Software
  • 8.
  • 9. 1/3 poderiam ser evitadas [1]
  • 10. 1/3 poderiam ser evitadas ~50% são detectadas em produção [1]
  • 11. | Introdução Desenvolvimento de software Falhas de Software Falhas custam caro
  • 12. $$$$$$ [1][2]
  • 13. $$$$$$ $$$$$$ [1][2]
  • 14. $$$$$$ $$$$$$ $$$$$$ 60 bilhões ++ prejuízo anual [1][2]
  • 15. | Introdução Desenvolvimento de software Falhas de Software Falhas custam caro Testes não evitam falhas
  • 16.
  • 17. | Introdução Desenvolvimento de software Falhas de Software Falhas custam caro Testes não evitam falhas Testes identificam as falhas antes delas acontecerem
  • 18. | Bug
  • 19.
  • 20.
  • 21. Bugs foram os insetos nas válvulas do Eniac...
  • 22. Bugs foram os insetos nas válvulas do Eniac... … e são os insetos no vidro do carro
  • 23. Bugs foram os insetos Nas válvulas do Eniac... Mas também são os muitos problemas que somente os usuários encontrarão … e são os insetos no vidro do carro
  • 24. Bugs foram os insetos Nas válvulas do Eniac... Mas também são os muitos problemas que somente os usuários encontrarão … ou os insetos no vidro do carro
  • 26. Bugs vão existir. Sempre! Não existe engenharia perfeita
  • 27. Bugs vão existir. Sempre! Não existe engenharia perfeita Antes de corrigir um bug, escreva um teste que o detecte
  • 28. Bugs vão existir. Sempre! Não existe engenharia perfeita Antes de corrigir um bug, escreva um teste que o detecte XP
  • 29. ???
  • 31. Não esse, mas esse www.extremeprogramming.org
  • 32. | Garanta o que você faz seja profissional
  • 33. Cliente: Isso aqui não está funcionando! Programador: Mas hanm!? Aqui funciona.
  • 35. Depois eu testo... … estou sem tempo para testar agora...
  • 36. Depois eu testo... … estou sem tempo para testar agora... ...funcionou! Não mude mais nada agora.
  • 37. Depois eu testo... Programadores profissionais … estou sem tempo escrevem testesagora... para testar ...funcionou! Não mude mais nada agora. E ponto final! [4]
  • 38. | Mas o que são testes?
  • 39. | O é um teste? Um teste é uma verificação feita sobre um código ou fragmento de código para garantir que uma determinada entrada produza, sempre, uma saída esperada
  • 40. | O teste é - Pontual - Finito - Previsível
  • 41. | O teste é O teste deve ser | - Pontual - Simples - Finito - Conciso - Previsível - Legível
  • 43. Unidade de código Parte da solução
  • 44. Unidade de código Parte da solução Escrito pelo programador
  • 45. Unidade de código Parte da Atualizados solução Escrito pelo programador
  • 47. Aceitação Solução completa
  • 48. Aceitação Solução completa Integração
  • 49. Aceitação Funcionais Solução completa Integração
  • 50. Aceitação Funcionais Solução Atualizados completa Integração
  • 51. | Testes Unitários - Testam partes isoladas da solução - Partes do código - Simule as dependências (Mocks, fixtures) - Fundamental para TDD/BDD
  • 52. | Testes de Aceitação - Testam histórias/funcionalidades/caso de uso - Envolvem uma ou mais partes da solução
  • 53. | Testes de Integração - Testam a integração da solução com agentes externos - Pode ser feito isolado ou com a solução completa - Geralmente não é muito praticado
  • 54. | Mas eu preciso de testes?
  • 55. SIM
  • 56. SIM
  • 57. Você: - Deve verificar o código. Sempre! - Deve garantir que os requisitos estão Implementados - Deve ter segurança para fazer alterar
  • 58. Você: - Precisa entregar rápido - Precisa entregar com qualidade - Precisa garantir a qualidade do que será entregue
  • 59. | Como você se garante?
  • 60. | Como você se garante? Bug Encontrado Código alterado OK
  • 61. | Como você se garante? Bug Encontrado Código alterado OK
  • 62. | Como você se garante? Bug Encontrado Código alterado OK BUG ERRO ????
  • 63. | Garanta-se nos testes ● Aplicações cobertas por bons testes propiciam: ● Facilidade de manutenção; ● Facilidade para inclusão de novos membros no time de desenvolvimento; ● Redução de problemas e custos nas manutenções;
  • 64. | Garanta-se nos testes ● Aplicações cobertas por bons testes propiciam: ● Facilidade de manutenção; ● Facilidade para inclusão de novos membros no time de desenvolvimento; ● Redução de problemas e custos nas manutenções; ● Telefone silencioso nas madrugadas!
  • 65. | Garanta-se nos testes Bug Encontrado Código alterado OK OK OK OK
  • 66. | Test Driven Development refatore Escreva código Escreva um que passe Teste no teste
  • 67. | TDD ● Escreva o teste antes da implementação ● Escreva somente código para passar no teste ● Escreva testes pequenos [10]
  • 68. | Behaviour Driven Development refatore Escreva código Escreva um que passe Teste no teste
  • 69. | BDD ● Escreva o teste antes da implementação ● Escreva somente código para passar no teste ● Escreva testes pequenos
  • 71. TDD? BDD? Copy&Paste? TDD Código BDD Comportamento
  • 72. | Conclusões ● Testes colaboram para o aumento da qualidade dos sistemas ● Desenvolvedores ficam mais corajosos e confiantes ao programar ● O software cresce de forma ordenada e com qualidade de design ● O software se adapta com mais facilidade a mudanças
  • 73. | Conclusões ● Demora mais? ● No início é necessário escrever muitos testes ● Depois da inércia a suite de testes está pronta e escrevem-se menos testes ● Certeza de que a implementação está funcionando ● Maioria dos bugs encontrados em tempo de desenvolvimento ● Bugs de produção são encontrados e corrigidos com muito mais velocidade ● Então no fim das contas demora-se muito menos tempo e com muito mais qualidade [10]
  • 74. | Conclusões TDD ou BDD? Não importa! Faça qualquer um desde que faça direito
  • 76. | Referências [1] - NIST - http://www.nist.gov/public_affairs/releases/n02-10.htm [2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd [3] - Caelum - http://blog.caelum.com.br/2006/09/08/voce-acredita-no-seu-codigo/ [4] – Fragmental - Shoes - http://blog.fragmental.com.br/2007/10/31/programadores- profissionais-escrevem-testes-ponto-final/ [5] – Marcos Pereira – http://marcospereira.wordpress.com/2007/11/27/desenvolvedores- odeiam-testar [6] – Wikipedia – http://en.wikipedia.org/wiki/Test-driven_development [7] - TDD - http://www.testdriven.com [8] - Brod - http://www.brod.com.br [9] – java.net - http://wiki.java.net/bin/view/People/SmellsToRefactorings [10] – Palestra Desenvolvimento Guiado por Testes (TDD) – Guilherme Chapiewski
  • 77. System.out.println(quot;Testequot;); Jevô Paulo César M. Jeveaux www.jeveaux.com www.portaljava.com