SlideShare ist ein Scribd-Unternehmen logo
1 von 198
Downloaden Sie, um offline zu lesen
A importância dos
                            testes automatizados
                                  Rafael Ponte
                                   @rponte




Tuesday, October 18, 2011
@rponte



Tuesday, October 18, 2011
Tuesday, October 18, 2011
antes de começarmos...



Tuesday, October 18, 2011
quem aqui já programa?



Tuesday, October 18, 2011
quem aqui já programa?
                            Java? .Net? Ruby? PhP? C?
                                      Pascal?



Tuesday, October 18, 2011
e quem já trabalha na
                               área?


Tuesday, October 18, 2011
e quem escreve testes?



Tuesday, October 18, 2011
eu conheço alguém que escreve...




Tuesday, October 18, 2011
eu conheço alguém que escreve...
       e acho que muitos aqui também já o conhecem




Tuesday, October 18, 2011
@yuriadams
                            O garoto prodígio dos testes.
Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
ME MATA
                               DE
                            ORGULHO!


Tuesday, October 18, 2011
desenvolver software é uma
                 luta contra complexidade



Tuesday, October 18, 2011
toda linha de código que
        escrevemos pode ser um ponto de
                       falha



Tuesday, October 18, 2011
toda linha de código que
        escrevemos pode ser um ponto de
                            falha crítico



Tuesday, October 18, 2011
estudamos e aplicamos práticas
                 para tentarmos diminuir estes
                             riscos



Tuesday, October 18, 2011
testar
Tuesday, October 18, 2011
por que testar?



Tuesday, October 18, 2011
para verificar se o sistema se
                        comporta como deveria




Tuesday, October 18, 2011
como testar?
    testes manuais.
    testes automatizados.



Tuesday, October 18, 2011
testes manuais



Tuesday, October 18, 2011
$ão caros
                            $ requer pessoal qualificado
                            $ requer tempo
                            $ requer documentação
                            $ repetitivos e cansativos


Tuesday, October 18, 2011
o que aprendemos com desenvolvimento de
                       software é que...




Tuesday, October 18, 2011
tudo que depende do homem
            e é repetitivo está sujeito a
                        falhas



Tuesday, October 18, 2011
por isso nós
                            automatizamos! :-)


Tuesday, October 18, 2011
testes automatizados



Tuesday, October 18, 2011
um programinha para testar
                            outro programinha




Tuesday, October 18, 2011
testes te trazem confiança e
    segurança para...



             > implementar novas features
             > achar e corrigir bugs
             > refatorar código
             > refatorar código dos outros


Tuesday, October 18, 2011
CONFIANÇA

Tuesday, October 18, 2011
os testes te permitem ter...


             > menor incidência de bugs
             > feedback rápido do que funciona
             > regressão de código
             > produtividade
             > melhor design do código
             > documentação executável
Tuesday, October 18, 2011
tipos de testes
          testes de unidade
             testes de integração
                testes de aceitação


Tuesday, October 18, 2011
testes de unidade
                            menor unidade de código
                                  executável



Tuesday, October 18, 2011
menor
                    unidade na   =   método
                      POO



Tuesday, October 18, 2011
teste de    teste
                          =
                 unidade    unitário


Tuesday, October 18, 2011
testes de unidade
    normalmente são:


                  > mais fáceis de escrever;
                  > muito rápidos para rodar;
                  > mais fáceis para rastrear
                  erros;


Tuesday, October 18, 2011
que tal rodar centenas ou
                        milhares de testes em
                              segundos?



Tuesday, October 18, 2011
feedback quase que instantâneo!
                             WOW!
Tuesday, October 18, 2011
testes de integração
                  seu código integrado ao banco
                     de dados, rede, disco etc



Tuesday, October 18, 2011
valida os componentes de
               software funcionando juntos




Tuesday, October 18, 2011
valida os componentes de
               software funcionando juntos
                            teste de “maxu” vai no banco de
                                        dados!




  Yuri Adams
Tuesday, October 18, 2011
e assim como os testes
                                  de unidade...
Tuesday, October 18, 2011
testes de integração
    normalmente são:


                  > mais fáceis de escrever;
                  > muito rápidos para rodar;
                  > mais fáceis para rastrear
                  erros;


Tuesday, October 18, 2011
feedback AINDA quase que
                                   instantâneo




Tuesday, October 18, 2011
testes de aceitação
                            o que o usuário espera que
                                     aconteça



Tuesday, October 18, 2011
teste



Tuesday, October 18, 2011
teste
                             end


Tuesday, October 18, 2011
teste
                             end
                              to
Tuesday, October 18, 2011
teste
                             end
                              to
                             end
Tuesday, October 18, 2011
valida o software na perspectiva
                          do usuário




Tuesday, October 18, 2011
valida o software na perspectiva
                            do usuário


Tuesday, October 18, 2011
valida o software na perspectiva

                            do usuário

Tuesday, October 18, 2011
testes de aceitação
    normalmente são:


                  > trabalhosos para escrever;
                  > lentos para rodar;
                  > difíceis para rastrear erros;
                  > frágeis


Tuesday, October 18, 2011
apesar da dificuldade para escrevê-los...




Tuesday, October 18, 2011
apesar da dificuldade para escrevê-los...


                                   Aceite os testes de
                                       aceitação!!




    Handerson Frota



Tuesday, October 18, 2011
apesar da dificuldade para escrevê-los...


                                   Aceite os testes de
                                       aceitação!!




                                ainda assim
                                vale a pena!
    Handerson Frota



Tuesday, October 18, 2011
resumindo...



Tuesday, October 18, 2011
como tudo isso vai numa app
                                real?




Tuesday, October 18, 2011
Tuesday, October 18, 2011
browser

                                         banco de dados
                               app
                            (servidor)




Tuesday, October 18, 2011
teste de unidade




Tuesday, October 18, 2011
teste de integração
Tuesday, October 18, 2011
teste de aceitação



Tuesday, October 18, 2011
teste de unidade




   teste de aceitação


 teste de integração
Tuesday, October 18, 2011
qual o melhor?



Tuesday, October 18, 2011
unidade > integração ?



Tuesday, October 18, 2011
não
Tuesday, October 18, 2011
integração > aceitação ?



Tuesday, October 18, 2011
não
Tuesday, October 18, 2011
aceitação > unidade ?



Tuesday, October 18, 2011
não
Tuesday, October 18, 2011
depende?



Tuesday, October 18, 2011
sim
Tuesday, October 18, 2011
depende da tua
                             necessidade


Tuesday, October 18, 2011
depende da tua
                             necessidade
                             teste de aceitação testa TUDO.



Handerson Frota
Tuesday, October 18, 2011
teste de integração é teste de
                                        “maxu”.




                                depende da tua                   Yuri Adams



                                 necessidade
                                    teste de aceitação testa TUDO.



Handerson Frota
Tuesday, October 18, 2011
mas no geral, siga a
                                pirâmide


Tuesday, October 18, 2011
Test Automation Pyramid



                                    Aceitação - 10%




                                  Integração - 40%



                                Unidade - 50%


Tuesday, October 18, 2011
que tal um pouco de
                                 prática, né?


Tuesday, October 18, 2011
de maneira não
                             automatizada


Tuesday, October 18, 2011
problema:
                     calcular fatorial de um
                             número

                            4! = 4.3.2.1 = 24


Tuesday, October 18, 2011
1! ==> 1
                            2! ==> 2
                            3! ==> 6
                                ...

Tuesday, October 18, 2011
4! = 4.3.2.1 = 24

    “com um algoritimo
        recursivo eu
      resolvo isso fácil
    antes da novela das
            7h”


Tuesday, October 18, 2011
Uma função recursiva é uma
                            função que se refere a si própria
Tuesday, October 18, 2011
Tuesday, October 18, 2011
como testar o código?



Tuesday, October 18, 2011
1! ==> 1
                            2! ==> 2
                            3! ==> 6
                                ...

Tuesday, October 18, 2011
você escreve uma classe de teste
                       “meia-boca”




Tuesday, October 18, 2011
depois roda a classe de teste na linha
                de comando




Tuesday, October 18, 2011
depois roda a classe de teste na linha
                de comando




                para ver o resultado!
Tuesday, October 18, 2011
você testa mais um pouco...




Tuesday, October 18, 2011
e roda mais uma vez para ver o
                         resultado...




Tuesday, October 18, 2011
altera mais um pouco,
                             roda mais um pouco,
                              verifica o resultado,
                            corrige aqui, corrige ali,
                                 roda de novo, ...


Tuesday, October 18, 2011
e depois que tudo
                              funciona como
                                esperado...


Tuesday, October 18, 2011
zipa e envia pro
                             professor, né?




Tuesday, October 18, 2011
zipa e envia pro
                              professor, né?


                            ainda não!!
Tuesday, October 18, 2011
zipa e envia pro
                             professor, né?

                 falta apagar a classe
                “meia-boca” de teste!
Tuesday, October 18, 2011
agora sim! zipa e envia
                         pro professor!




Tuesday, October 18, 2011
agora sim! zipa e envia
                         pro professor!

                            com cópia pra mim também! ;D




       Sérgio
Tuesday, October 18, 2011
PRONTO!

Tuesday, October 18, 2011
facinho, né?




Tuesday, October 18, 2011
agora você pode jogar
                              Starcraft II em paz!
Tuesday, October 18, 2011
ou

Tuesday, October 18, 2011
jogar XBox com seus amigos
                              descolados




Tuesday, October 18, 2011
eu me pergunto...



Tuesday, October 18, 2011
e depois de todo esse
  esforço...




Tuesday, October 18, 2011
e depois de todo esse
  esforço...




                            você DESCARTA sua
                               classe de teste?
Tuesday, October 18, 2011
e depois de todo esse
  esforço...
                                   e daí?




          Sérgio
                            você DESCARTA sua
                               classe de teste?
Tuesday, October 18, 2011
e depois de todo esse
  esforço...
                              o que importa é o programa
                                        e daí?
                                       rodando!




          Sérgio
                            você DESCARTA sua
                               classe de teste?
Tuesday, October 18, 2011
e depois de todo esse
  esforço...
                              o que importa é mexer nesse
                              nunca maisevou o programa
                                          daí?
                                 códigorodando! mesmo
                                        de novo




          Sérgio
                            você DESCARTA sua
                               classe de teste?
Tuesday, October 18, 2011
mas na vida real não é
                         bem assim...


Tuesday, October 18, 2011
você mantém o código
                     até que o software
                          “morra”


Tuesday, October 18, 2011
um software não morre...




Tuesday, October 18, 2011
um software não morre...
                            até que




Tuesday, October 18, 2011
um software não morre...
                                   até que
      você tire ele de produção,




Tuesday, October 18, 2011
um software não morre...
                                        até que
      você tire ele de produção,
               você apague todo o código fonte




Tuesday, October 18, 2011
um software não morre...
                                        até que
      você tire ele de produção,
               você apague todo o código fonte
 você apague o banco de dados




Tuesday, October 18, 2011
um software não morre...
                                                   até que
      você tire ele de produção,
               você apague todo o código fonte
 você apague o banco de dados
                            você mate os programadores,
                                 mate os analistas e o arquiteto


Tuesday, October 18, 2011
um software não morre...
                                                   até que
      você tire ele de produção,
               você apague todo o código fonte
 você apague o banco de dados
                            você mate os programadores,
                                 mate os analistas e o arquiteto
    e você queime o backup e documentação

Tuesday, October 18, 2011
mas pro seu azar...




Tuesday, October 18, 2011
suponha que seu professor queira um
                            algoritimo não-recursivo




Tuesday, October 18, 2011
suponha que seu professor queira um
                            algoritimo não-recursivo




                            #comofas

Tuesday, October 18, 2011
1. você vai ter que estudar o
                                 problema de novo




Tuesday, October 18, 2011
2. você tem que alterar o
                               código atual de novo




Tuesday, October 18, 2011
3. você vai ter que testa-lo de
                                         novo




Tuesday, October 18, 2011
mas cadê minha
    classe de teste?




Tuesday, October 18, 2011
eu                  apagueeeeeiiii?



Tuesday, October 18, 2011
Tuesday, October 18, 2011
que tal fazermos do
                                jeito certo?



Tuesday, October 18, 2011
que tal fazermos do
                                jeito certo?
                            com testes automatizados



Tuesday, October 18, 2011
jUnit
          assertEquals(expected, actual);



Tuesday, October 18, 2011
jUnit
                            assertEquals(4, 2+2);



Tuesday, October 18, 2011
jUnit
                            assertEquals(7, 10-4);



Tuesday, October 18, 2011
vamos   testar
Tuesday, October 18, 2011
implementação recursiva
Tuesday, October 18, 2011
primeiro caso de teste



                                 1! ==> 1



Tuesday, October 18, 2011
você escreve o teste com jUnit




Tuesday, October 18, 2011
depois roda o teste...




Tuesday, October 18, 2011
mais alguns casos de teste...

                                2! ==> 2
                                3! ==> 6
                                4! ==> 24
                                5! ==> 120

Tuesday, October 18, 2011
escreva os casos de teste...




Tuesday, October 18, 2011
roda mais uma vez...




Tuesday, October 18, 2011
um caso esquecido...


                                0! ==> 1
                                1! ==> 1


Tuesday, October 18, 2011
não me escapa...




Tuesday, October 18, 2011
roda mais uma vez...




Tuesday, October 18, 2011
PRONTO!
                        agora você pode escrever o
                          algoritimo não-recursivo



Tuesday, October 18, 2011
#greenbar
                        refatora ==> roda os testes



Tuesday, October 18, 2011
facinho, né?




Tuesday, October 18, 2011
primeiro escreve o código da
                            implementação, depois escreve o de
                                      teste... LEGAL!




Tuesday, October 18, 2011
e se fosse possível escrever o teste
                                ANTES da implementação?




Tuesday, October 18, 2011
ahn?




Tuesday, October 18, 2011
TDD
                            Test Driven Development




Tuesday, October 18, 2011
é assim que eu evoluo minha aplicação de
                                            forma contínua




                                        TDD
                            Test Driven Development




Tuesday, October 18, 2011
é assim que eu evoluo minha aplicação de
                                    eu falei sobre isso aqui ontem, ué!
                                              forma contínua




                                        TDD
                            Test Driven Development




Tuesday, October 18, 2011
step by step




Tuesday, October 18, 2011
TDD = testes


Tuesday, October 18, 2011
não
                            TDD = testes


Tuesday, October 18, 2011
TDD é sobre DESIGN e
            MODELAGEM de código


Tuesday, October 18, 2011
a bateria de testes é
                                 um brinde


Tuesday, October 18, 2011
CULTURA DE TESTES
                            casos e casos




Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
Tuesday, October 18, 2011
NEM TUDO SÃO FLORES
                            Depois de +2 anos escrevendo testes.




Tuesday, October 18, 2011
primeiro passo na
                               consultoria


Tuesday, October 18, 2011
Convencer a gerência.
                            Seria um investimento de médio-longo prazo.




Tuesday, October 18, 2011
Projeto já em andamento.
  Dificuldade para escrever testes.




Tuesday, October 18, 2011
Infra?
                            Não tínhamos nada pronto!




Tuesday, October 18, 2011
Colaboração da equipe.
                            Equipe de bons desenvolvedores, mas sem
                                              experiência com testes.




Tuesday, October 18, 2011
Zona de Conforto



Tuesday, October 18, 2011
Devs. simpatizantes.
                            Teste de integração é teste de “maxu”!




Tuesday, October 18, 2011
Testes mal escritos.
  Você vai escrevê-los, pode ter certeza disso.




Tuesday, October 18, 2011
TDD.
  Somente em regras de negócio complexas.




Tuesday, October 18, 2011
OOP e SOLID Principles
               Sem estes conhecimentos não é tão simples ter
                             um bom design.




Tuesday, October 18, 2011
Testes de Aceitação.
  Tudo ia bem, até o dia em que o número de
  testes cresceu demais.




Tuesday, October 18, 2011
Testando cenários
                                 importantes.
                               Começamos do jeito certo.




Tuesday, October 18, 2011
Test Automation Pyramid


                                    Aceitação - 10%




                                  Integração - 40%



                                Unidade - 50%


Tuesday, October 18, 2011
More, more...
  Testes com granularidade fina demais.




Tuesday, October 18, 2011
Test Automation Pyramid
                                            Square


                                  Aceitação - 30%


                                  Integração - 30%



                                  Unidade - 40%




Tuesday, October 18, 2011
Mantê-los se tornou caro.
  Frágeis, feedback demorado, falsos negativos e
  difícil rastrear erros.




Tuesday, October 18, 2011
Nos tornamos mais
                               criteriosos.




Tuesday, October 18, 2011
IMPACTO
                            Depois de +2 anos escrevendo testes.




Tuesday, October 18, 2011
PRODUTIVIDADE.
                     Baixa no início. Melhora durante os Sprints.




Tuesday, October 18, 2011
Qualidade no software.
                            Menor incidência de bugs e correções rápidas.




Tuesday, October 18, 2011
De 100% para 25%.
                             Melhoramos nossas estimativas.




Tuesday, October 18, 2011
Gerência.
                            Satisfeita com a produtividade de alguns
                                 projetos, decepcionada com outros.




Tuesday, October 18, 2011
Equipe mais madura.
  Perceberam a importância real dos testes.




Tuesday, October 18, 2011
CONCLUSÃO


Tuesday, October 18, 2011
Você só percebe os benefícios dos testes entre

                            6 meses e 1 ano


Tuesday, October 18, 2011
não existe uma receita de bolo
                   para desenvolver software




Tuesday, October 18, 2011
mas sim
                  um conjunto de princípios e
                 práticas que podem te ajudar a
                       desenvolver melhor



Tuesday, October 18, 2011
permita que sua equipe
                               trabalhe melhor




Tuesday, October 18, 2011
permita que sua empresa
                            entregue software melhor




Tuesday, October 18, 2011
permita-se ser um profissional
                              melhor




Tuesday, October 18, 2011
use testes
                            automatizados


Tuesday, October 18, 2011
testes automatizados




                                eu aprovo!
Tuesday, October 18, 2011
Rafael Ponte
                            rponte@triadworks.com.br




Tuesday, October 18, 2011

Weitere ähnliche Inhalte

Mehr von secomp2011

Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos php
secomp2011
 
Dar caos a ordem
Dar caos a ordem Dar caos a ordem
Dar caos a ordem
secomp2011
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
secomp2011
 
Arquitetura web e o php
Arquitetura web e o phpArquitetura web e o php
Arquitetura web e o php
secomp2011
 
Desenvolvimento Ágil Usando SCRUM
Desenvolvimento Ágil Usando SCRUMDesenvolvimento Ágil Usando SCRUM
Desenvolvimento Ágil Usando SCRUM
secomp2011
 

Mehr von secomp2011 (6)

Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos php
 
Dar caos a ordem
Dar caos a ordem Dar caos a ordem
Dar caos a ordem
 
Php básico
Php básicoPhp básico
Php básico
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
Arquitetura web e o php
Arquitetura web e o phpArquitetura web e o php
Arquitetura web e o php
 
Desenvolvimento Ágil Usando SCRUM
Desenvolvimento Ágil Usando SCRUMDesenvolvimento Ágil Usando SCRUM
Desenvolvimento Ágil Usando SCRUM
 

Importancia dos testes automatizados