Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
System.out.println(quot;Testequot;);




                  Jevô
         Paulo César M. Jeveaux

           www.jeveaux.co...
Jeveaux
Desenvolvedor Java há 7++ anos

Administrador do PortalJava e ESJUG

Palestrante-Entusiasta-Evangelista Java

Entu...
| Sobre o que vamos falar
●   Introdução
●   Bug
●   Seja profissional
●   O que são testes
●   Preciso de testes? Por que...
| 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

                                  ...
| 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 ...
| Introdução
      Desenvolvimento de software
             Falhas de Software
             Falhas custam caro
          T...
| 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ã...
Bugs foram os insetos
Nas válvulas do Eniac...
  Mas também são os muitos
  problemas que somente os
  usuários encontrarã...
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


...
???
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 nad...
Depois eu testo...
Programadores profissionais
            … estou sem tempo
      escrevem testesagora...
            par...
| 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 determinad...
| 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 p...
Aceitação
Aceitação

            Solução
            completa
Aceitação

                         Solução
                         completa



            Integração
Aceitação           Funcionais

                           Solução
                           completa



            Inte...
Aceitação            Funcionais

                             Solução
Atualizados                  completa



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

- Partes do código

- Simule as dependências (Mocks,
  fixtures)

...
| 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
...
| 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 ...
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



              ...
| Garanta-se nos testes
●   Aplicações cobertas por bons testes propiciam:
    ●   Facilidade de manutenção;
    ●   Facil...
| Garanta-se nos testes
●   Aplicações cobertas por bons testes propiciam:
    ●   Facilidade de manutenção;
    ●   Facil...
| Garanta-se nos testes
 Bug Encontrado




 Código alterado          OK


                          OK



               ...
| Test Driven Development
                     refatore




                     Escreva código
     Escreva um
          ...
| TDD
●   Escreva o teste antes da implementação


●   Escreva somente código para passar no teste


●   Escreva testes pe...
| Behaviour Driven Development
                    refatore




                     Escreva código
    Escreva um
       ...
| BDD
●   Escreva o teste antes da implementação


●   Escreva somente código para passar no teste


●   Escreva testes pe...
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 ...
| Conclusões
●   Demora mais?
    ●   No início é necessário escrever muitos testes
    ●   Depois da inércia a suite de t...
| 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.c...
System.out.println(quot;Testequot;);




                  Jevô
         Paulo César M. Jeveaux

           www.jeveaux.co...
Testes
Testes
Testes
Testes
Testes
Testes
Upcoming SlideShare
Loading in …5
×

Testes

3,010 views

Published on

Published in: Technology
  • Be the first to comment

Testes

  1. 1. System.out.println(quot;Testequot;); Jevô Paulo César M. Jeveaux www.jeveaux.com www.portaljava.com
  2. 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. 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. 4. | Introdução Desenvolvimento de software
  5. 5. | Introdução Desenvolvimento de software Falhas de Software
  6. 6. 1/3 poderiam ser evitadas [1]
  7. 7. 1/3 poderiam ser evitadas ~50% são detectadas em produção [1]
  8. 8. | Introdução Desenvolvimento de software Falhas de Software Falhas custam caro
  9. 9. $$$$$$ [1][2]
  10. 10. $$$$$$ $$$$$$ [1][2]
  11. 11. $$$$$$ $$$$$$ $$$$$$ 60 bilhões ++ prejuízo anual [1][2]
  12. 12. | Introdução Desenvolvimento de software Falhas de Software Falhas custam caro Testes não evitam falhas
  13. 13. | Introdução Desenvolvimento de software Falhas de Software Falhas custam caro Testes não evitam falhas Testes identificam as falhas antes delas acontecerem
  14. 14. | Bug
  15. 15. Bugs foram os insetos nas válvulas do Eniac...
  16. 16. Bugs foram os insetos nas válvulas do Eniac... … e são os insetos no vidro do carro
  17. 17. 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
  18. 18. 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
  19. 19. Bugs vão existir. Sempre!
  20. 20. Bugs vão existir. Sempre! Não existe engenharia perfeita
  21. 21. Bugs vão existir. Sempre! Não existe engenharia perfeita Antes de corrigir um bug, escreva um teste que o detecte
  22. 22. Bugs vão existir. Sempre! Não existe engenharia perfeita Antes de corrigir um bug, escreva um teste que o detecte XP
  23. 23. ???
  24. 24. Não esse, mas esse
  25. 25. Não esse, mas esse www.extremeprogramming.org
  26. 26. | Garanta o que você faz seja profissional
  27. 27. Cliente: Isso aqui não está funcionando! Programador: Mas hanm!? Aqui funciona.
  28. 28. Depois eu testo...
  29. 29. Depois eu testo... … estou sem tempo para testar agora...
  30. 30. Depois eu testo... … estou sem tempo para testar agora... ...funcionou! Não mude mais nada agora.
  31. 31. Depois eu testo... Programadores profissionais … estou sem tempo escrevem testesagora... para testar ...funcionou! Não mude mais nada agora. E ponto final! [4]
  32. 32. | Mas o que são testes?
  33. 33. | 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
  34. 34. | O teste é - Pontual - Finito - Previsível
  35. 35. | O teste é O teste deve ser | - Pontual - Simples - Finito - Conciso - Previsível - Legível
  36. 36. Unidade de código
  37. 37. Unidade de código Parte da solução
  38. 38. Unidade de código Parte da solução Escrito pelo programador
  39. 39. Unidade de código Parte da Atualizados solução Escrito pelo programador
  40. 40. Aceitação
  41. 41. Aceitação Solução completa
  42. 42. Aceitação Solução completa Integração
  43. 43. Aceitação Funcionais Solução completa Integração
  44. 44. Aceitação Funcionais Solução Atualizados completa Integração
  45. 45. | Testes Unitários - Testam partes isoladas da solução - Partes do código - Simule as dependências (Mocks, fixtures) - Fundamental para TDD/BDD
  46. 46. | Testes de Aceitação - Testam histórias/funcionalidades/caso de uso - Envolvem uma ou mais partes da solução
  47. 47. | 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
  48. 48. | Mas eu preciso de testes?
  49. 49. SIM
  50. 50. SIM
  51. 51. Você: - Deve verificar o código. Sempre! - Deve garantir que os requisitos estão Implementados - Deve ter segurança para fazer alterar
  52. 52. Você: - Precisa entregar rápido - Precisa entregar com qualidade - Precisa garantir a qualidade do que será entregue
  53. 53. | Como você se garante?
  54. 54. | Como você se garante? Bug Encontrado Código alterado OK
  55. 55. | Como você se garante? Bug Encontrado Código alterado OK
  56. 56. | Como você se garante? Bug Encontrado Código alterado OK BUG ERRO ????
  57. 57. | 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;
  58. 58. | 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!
  59. 59. | Garanta-se nos testes Bug Encontrado Código alterado OK OK OK OK
  60. 60. | Test Driven Development refatore Escreva código Escreva um que passe Teste no teste
  61. 61. | TDD ● Escreva o teste antes da implementação ● Escreva somente código para passar no teste ● Escreva testes pequenos [10]
  62. 62. | Behaviour Driven Development refatore Escreva código Escreva um que passe Teste no teste
  63. 63. | BDD ● Escreva o teste antes da implementação ● Escreva somente código para passar no teste ● Escreva testes pequenos
  64. 64. TDD? BDD? Copy&Paste?
  65. 65. TDD? BDD? Copy&Paste? TDD Código BDD Comportamento
  66. 66. | 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
  67. 67. | 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]
  68. 68. | Conclusões TDD ou BDD? Não importa! Faça qualquer um desde que faça direito
  69. 69. Dúvidas? já podem acordar
  70. 70. | 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
  71. 71. System.out.println(quot;Testequot;); Jevô Paulo César M. Jeveaux www.jeveaux.com www.portaljava.com

×