SlideShare a Scribd company logo
1 of 63
Testes
 pra que?



            @rodrigodealer
Noite de sono :-)
Cliente satisfeito :D
Todos felizes :-D
Exemplo :-)
(Ruby)
Meio grande, né?




E esse?
“Ruby é feito para ser bonito. Se está feio, está errado.”

                                                    Matz
Aquele if, else foi
  embora o/

                      “Extract method” - Faz bem
Variável desnecessária

                 Código repetido




Backspace/Del salva vidas :-)
Ok, fiz esse refactoring, que garantia eu
       tenho que vai funcionar?
Com testes!
Testes unitários
Certa vez um sábio disse:
  A test is not a unit test if:
  * it talks to the database
  * it communicates across the network
  * it touches the file system
  * it can’t run at the same time as any of your other unit tests
  * you have to do special things to your environment (such as editing config files) to run it
  Tests that do these things aren’t bad. Often they are worth writing, and they can be written in a unit
  test harness. However, it is important to keep them separate from true unit tests so that we can run
  the unit tests quickly whenever we make changes.

  --


             Ou um chapa disse em português:

Um teste não é um teste unitário se:
- Comunica com o banco de dados
- Comunica pela rede
- “Toca” no sistema de arquivos
- Se não pode ser rodado ao mesmo tempo de outros testes unitários
- Se você tem que configurar determinadas coisas como arquivos de configuração
Testar unitariamente é
Testar a menor porção de código
Devem rodar rapidamente, em poucos segundos
Devem rodar rapidamente, em poucos segundos


             Feedback rápido!
Seu código vai sofrer um impacto grande a partir
 do momento que começar a escrever testes e
                    refatorar
Seu código vai sofrer um impacto grande a partir
 do momento que começar a escrever testes e
                    refatorar

                 Como assim?
Red - Green - Refactor
Exemplo :-D

                      (Java)



(Camada de modelo)
O que estou testando?
Se esse método reflete
        o Enum
Menor unidade, lembra?
Testes de integração
Rodam mais lentamente
Fazem operações num
   banco de dados



   Ou no sistema de arquivos
          Existe I/O
Para que?
          Meus dados estão vindo de forma correta?
     Meus dados estão sendo gravados de forma correta?
Minha camada de modelo está se comunicando corretamente com o ORM?
Que ferramentas posso usar?
 Java               Ruby
Testes de aceitação
Pra que?
Minha aplicação está com a camada de serviços bem testada
E a integração com a camada de visão?
JavaScript não funciona!




         Text
          Text
           Text
Que ferramentas uso?
Que ferramentas uso?
Eu testo toda a aplicação?
Eu testo toda a aplicação?

        Depende.
Porque?
Porque?
Testes de aceitação demoram mais a rodar
Porque?
Testes de aceitação demoram mais a rodar


        Tem feedback demorado
Porque?
Testes de aceitação demoram mais a rodar


        Tem feedback demorado


   Escrever os testes também demora
Porque?
Testes de aceitação demoram mais a rodar


        Tem feedback demorado


   Escrever os testes também demora


               Ou seja...
Demora!
Por isso...
Por isso...
É aconselhável testar apenas as telas mais importantes
Por isso...
 É aconselhável testar apenas as telas mais importantes


Telas mais utilizadas ou com nível de complexidade maior
Por isso...
 É aconselhável testar apenas as telas mais importantes


Telas mais utilizadas ou com nível de complexidade maior


                  Contanto que faça!
Junte tudo
 Testes unitários + de integração + de aceitação

E coloque em um servidor de integração contínua
Existem vários



Jenkins    TeamCity   CruiseControl
Feedback rápido!
Feedback rápido!
     Via email
Feedback rápido!
     Via email
      Via IDE
Feedback rápido!
     Via email
      Via IDE
      Via IDE
Feedback rápido!
     Via email
      Via IDE
      Via IDE
      Via IM
Feedback rápido!
     Via email
      Via IDE
      Via IDE
      Via IM
         ...
Quanto antes você for avisado
que algo está errado, melhor!
Para concluir...
Para concluir...
  Teste suas aplicações
Para concluir...
    Teste suas aplicações


Todo mundo agradece, lembra?
Você   Cliente
Todos felizes :-D

More Related Content

What's hot

Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
elliando dias
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
Renan Uchôa
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
Thiago Ghisi
 

What's hot (20)

Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
 
Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!Flaky tests: O flakiness que há em você!
Flaky tests: O flakiness que há em você!
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Boas práticas com TDD
Boas práticas com TDD Boas práticas com TDD
Boas práticas com TDD
 
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
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Femug #9 iniciando com testes em node js!
Femug #9   iniciando com testes em node js!Femug #9   iniciando com testes em node js!
Femug #9 iniciando com testes em node js!
 
Gherkin
Gherkin   Gherkin
Gherkin
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
Lições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosLições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviços
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 

Viewers also liked

Viewers also liked (9)

Estorias do usuario
Estorias do usuarioEstorias do usuario
Estorias do usuario
 
Treinamento reanálise aliansce
Treinamento  reanálise aliansceTreinamento  reanálise aliansce
Treinamento reanálise aliansce
 
Percepção visual imagens
Percepção visual   imagensPercepção visual   imagens
Percepção visual imagens
 
Ilusão de ótica - Novos desafios
Ilusão de ótica - Novos desafiosIlusão de ótica - Novos desafios
Ilusão de ótica - Novos desafios
 
Percepção
PercepçãoPercepção
Percepção
 
Três porquinhos
Três porquinhosTrês porquinhos
Três porquinhos
 
Percepção
PercepçãoPercepção
Percepção
 
Percepção - Psicologia
Percepção - PsicologiaPercepção - Psicologia
Percepção - Psicologia
 
Treinamento Atendimento à Clientes
Treinamento Atendimento à ClientesTreinamento Atendimento à Clientes
Treinamento Atendimento à Clientes
 

Similar to Testes - Para que?

Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
Adriano Bertucci
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
Alini Rebonatto
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
André Thiago
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
Vitor Silva
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 

Similar to Testes - Para que? (20)

Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Introdução a TDD
Introdução a TDDIntrodução a TDD
Introdução a TDD
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu código
 
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
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Test day 2012
Test day 2012Test day 2012
Test day 2012
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Debugging node
Debugging nodeDebugging node
Debugging node
 
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
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Testes automatizados - Agile Day
Testes automatizados -  Agile DayTestes automatizados -  Agile Day
Testes automatizados - Agile Day
 

Testes - Para que?

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n