SlideShare ist ein Scribd-Unternehmen logo
1 von 86
Downloaden Sie, um offline zu lesen
Testes e Refatoração
Testes e Refatoração

               Jevô
     Paulo César M. Jeveaux
             j
       www.jeveaux.com

                      refatore




                      Escreva código
    Escreva um
                        que passe
       Teste
                         no teste
J ô
                       Jevô
• Analista Senior de WebMedia na globo.com

• Desenvolvedor Java há 7++ anos

• Administrador do PortalJava e ESJUG

• Palestrante‐Entusiasta‐Evangelista Java
  Palestrante‐Entusiasta‐Evangelista Java

• Entusiasta Python, Rails e Agile
                h       l       l
A d
                     Agenda
•   Introdução
•   Bug
•   Você confia no que faz? Afinal é um teste?
    Você confia no que faz? Afinal é um teste?
•   Cobertura de testes
•   Tipos de testes
•   Desenvolvendo orientado a testes
•   Ferramentas e técnicas de testes
    F         t    té i    d t t
•   Refatoração
Introdução
Desenvolvimento de software
Desen ol imento de soft are
Introdução
Desenvolvimento de software
Desen ol imento de soft are
    Falhas de Software
           de Software
F lh d S ft
            Falhas de Software
• Mais de 1/3 das falhas
  poderiam ser evitadas
            ser evitadas
  com testes; [1]

• Cerca de 50% das falhas
        de 50% das falhas
  só são descobertas em
  produção; 
  produção; [1]
Introdução
Desenvolvimento de software
Desen ol imento de soft are
    Falhas de Software
           de Software
    Falhas custam caro
F lh
           Falhas custam $$$
                     t $$$
• Segundo uma pesquisa do Departamento de 
  Comércio dos EUA, publicada em 2002, falhas 
  C é i d EUA           bli d      2002 f lh
  de software são tão comuns e tão danosas 
  que se estima que causem um prejuízo anual 
  de mais de 60 bilhões de dólares para a 
  de mais de 60 bilhões de dólares para a
  economia americana. [1], [2]
Introdução
Desenvolvimento de software
Desen ol imento de soft are
     Falhas de Software
            de Software
     Falhas custam caro
  Testes não evitam falhas
Introdução
    Desenvolvimento de software
    Desen ol imento de soft are
           Falhas de Software
           Falhas custam caro
        Testes não evitam falhas
Testes identificam as falhas antes delas
Testes identificam as falhas antes delas
              acontecerem
Bug

O que é?
Bugs

São aquelas baratinhas que 
São aquelas baratinhas que
 ficavam nas válvulas do Eniac
 fi           ál l d       i
Bugs

Podem ser os insetos no vidro do 
Podem ser os insetos no vidro do
 carro
Bugs

E também podem ser milhões de 
E também podem ser milhões de
 outros problemas que somente 
           bl
 os usuários irão encontrar
Bugs

E também
E também podem ser milhões de
               ser milhões de 
 outros problemas que somente
           bl
 os usuários irão encontrar
Bugs

Por mais perfeita que seja sua 
Por mais perfeita que seja sua
 engenharia, os bugs estarão 
      h i       b         ã
 presentes e afetarão diretamente 
 o usuário
 o usuário
Bugs

Metodologias ágeis, como o XP, defendem 
        g     g ,            ,
 que, ao encontrarmos um problema,
 que, ao encontrarmos um problema, 
 antes de desenvolver uma solução 
 antes de desenvolver uma solução
 devemos criar um teste que detecte tal 
 devemos criar um teste que detecte tal
 problema.
    bl
Você confia no que faz?
Você confia no que faz?
G
        Garanta o que você faz
             t           êf
• Cliente:
  – Isso aqui não está funcionando!


• Programador:
  – Mas como!? Na minha máquina estava 
    funcionando até ontem.
    funcionando até ontem
G
Garanta o que você faz
     t           êf

       Depois eu escrevo o 
          p
       plano de testes…
G
        Garanta o que você faz
             t           êf

                Depois eu escrevo o 
                   p
                plano de testes…
Vamos deixar os testes 
pra próxima fase…
G
        Garanta o que você faz
             t           êf

                Depois eu escrevo o 
                   p
                plano de testes…
Vamos deixar os testes 
pra próxima fase…

          Na minha
          Na minha máquina está
          funcionando…
G
        Garanta o que você faz
             t           êf
                 Depois eu escrevo o 
                 D     i
                 plano de testes
                         de testes…
Vamos deixar os testes 
pra próxima fase…
        Precisamos entregar o 
        produto semana que vem!!!
              Na minha máquina está
              funcionando…
G    t        t b lh
      Garanta o seu trabalho seja profissional
                               j     fi i    l

Errado! (como se safar)         Realidade!
• Num mundo capitalizado        • O cliente não quer saber se 
  não há tempo para testes
  não há tempo para testes        X virou Y. Ele quer que o 
                                  X virou Y Ele quer que o

• O cliente não quer saber 
                q                 problema não aconteça e se 

  como é feito, ele quer que      acontecer que seja corrigido 

  funcione                        rapidamente

                                • Não se consegue qualidade
                                  Não se consegue qualidade 
                                  e confiabilidade sem testes
[4]
O que são testes?
O que são testes?
O
            O que são testes?
                   ã t t ?

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
         O que são testes?
                ã t t ?

• São pontuais
  São pontuais

• São previsíveis

• São finitos
  São finitos

• São (ou deveriam ser) simples
O que são testes?
O que são testes?
    White Box
    White Bo
Whit B
                White Box

• Testes de unidade de código;
                           g ;

• Testam parte da solução;
  Testam parte da solução;

• São escritos e mantidos pelo 
 programador e devem estar sempre 
 atualizados;
O que são testes?
O que são testes?
    White Box
    White Bo
    Black Box
    Black Box
Bl k B
              Black Box

• Testes funcionais e de aceitação;
  Testes funcionais e de aceitação;

• Testes de integração;
         d i        ã

• Testam a solução completa;
C b t
           Cobertura dos testes
                     d t t
                             Resultado esperado
Trecho alterado
                              com alteração: OK


                             Reflexo da alteração
                                   Erro #1

                             Reflexo da alteração
                                   Erro #2

                             Reflexo da alteração
                                     BUG

                             Reflexo da alteração
                                  Inesperado
                                  I       d
C b t
           Cobertura dos testes
                     d t t
Sem cobertura                Com cobertura


• Novo release = códigos 
  sem testes;
• Não há segurança de
  Não há segurança de 
  que as alterações não 
  irão impactar em outros 
  irão impactar em outros
  pontos da aplicação;
• Problemas muitos
  Problemas, muitos 
  problemas;
C b t
          Cobertura dos testes
                    d t t

• Dificilmente consegue‐se 100% de cobertura 
  de testes, contete‐se com 99%

• Quanto maior a cobertura dos testes na 
  aplicação maior a confiabilidade nas 
  alterações e novos recursos
C b t
          Cobertura dos testes
                    d t t
• Aplicações cobertas por bons testes 
  propiciam:
       i i
  – Facilidade de manutenção;
    Facilidade de manutenção;

  – Facilidade para inclusão de novos membros no
    Facilidade para inclusão de novos membros no 
                           ;
    time de desenvolvimento;

  – Redução de problemas e custos nas manutenções;
        ç      p                             ç

  – Telefone silencioso nas madrugadas!
T t ã
         Testes são necessários
                          ái

• Você precisa verificar o código, sempre

• Você precisa garantir que os requisitos estão 
       p       g        q        q
  implementados (e corretos)
    p           (          )

• Você precisa ter segurança para realizar
  Você precisa ter segurança para realizar 
  alterações
        ç
T t ã
          Testes são necessários
                           ái
• Você precisa testar rápido para entregar rápido

• Você precisa ser criativo para explorar o máximo 
  possível com seus testes, não use testes mentirosos

• Você aumenta e garante a qualidade da sua solução 
  com testes
Tipos de Testes
Tipos de Testes

    Unitário
T t U itá i
             Testes Unitários

• Testam uma parte isolada da solução, um 
  componente ou trecho de código

• Todo o resto é simulado através de Mock 
  Objets;

• É fundamental para TDD
                p
T t U itá i
                 Testes Unitários
[wikipedia]

É a fase do processo de teste em que se testam as menores 
   unidades de software desenvolvidas

O universo alvo desse tipo de teste são os métodos dos objetos
O universo alvo desse tipo de teste são os métodos dos objetos 
  ou mesmo pequenos trechos de código. Assim, o objetivo é o 
  de encontrar falhas de funcionamento dentro de uma 
  pequena parte do sistema funcionando independentemente 
  do todo.

[/wikipedia]
Testes Unitários
              T t U itá i

• Ferramentas:
  – JUnit/NUnit e TestNG: para testes unitários

  – JMock: para criação de objetos e cenários falsos
Tipos de Testes
Tipos de Testes

    Unitário
   Aceitação
T t d
           Testes de aceitação
                        it ã

• Testam uma história, funcionalidade ou caso 
  de uso

• Envolvem vários componentes do sistema ou 
                     p
  até o sistema como um todo

• Ex. ferramentas: JUnit, Selenium, Fit/FitNesse
                        ,         , /
Tipos de Testes
Tipos de Testes

     Unitário
    Aceitação
   Integração
T t d i t
          Testes de integração
                            ã

• Testam a integração entre componentes

• Envolvem dois ou mais componentes
                           p

• Ex ferramentas: JUnit DBUnit HSQLDB
  Ex. ferramentas: JUnit, DBUnit, HSQLDB

• Normalmente não é muito utilizado em TDD
  Normalmente não é muito utilizado em TDD
Test Driven Development
Test‐Driven Development
TDD
                   refatore




                   Escreva código
E
Escreva um
                     que passe
   Teste              no teste
R
         Regras Fundamentais
                F d     t i

• Escreva o teste da implementação ANTES de 
  escrevê‐la

• Escreva somente código suficiente para o 
                      g             p
  teste passar e nada além disso

• Escreva testes pequenos
                 p q

• Escreva testes muito rápidos
  Escreva testes muito rápidos
                                               [10]
Ferramentas

   JUnit
JU it
                    JUnit
• É um framework altamente eficaz e 
  largamente utilizado na criação e execução de 
  l        t tili d         i ã           ã d
                          g
  testes unitários de códigos

http://junit.org
U t t
        Um teste com JUnit
                     JU it

public class HelloWorldTest {
   @ est
   @Test
   public void testMultiplicacao() {
      //Testando se 2*2 = 4
      assertEquals (“Mult”, 4, 2*2);
                   ( Mult ,    2 2);
   }
}
Ferramentas

    JUnit
   TestNG
T tNG
                    TestNG

• Uma alternativa ao JUnit para testes unitários

• Foi o primeiro a utilizar anotações para 
        p                        ç    p
  definição dos TestCases
        ç
TestNG
T tNG
U t t
        Um teste com TestNG
                     T tNG
import org.testng.annotations.*;

public class SimpleTest {
   @BeforeClass
   public void setUp() {
   }
   @Test(groups = { quot;calculadoraquot; })
   public void somaTest() {
     bli    id     T t()
      System.out.println(quot;somaquot;);
   }
}
Ferramentas

    JUnit
   TestNG
   JMock
JM k
                     JMock

• Utilizado para criar ou simular falsos 
  objetos/cenários

• Alternativas:
  – EasyMock

  – MockObjetc
S l i
                 Selenium

• Ferramenta para realização de testes 
  integrados e de aceitação

• Usado no browser, grava todos os passos 
                  ,g               p
  executados na aplicação diretamente no 
  browser e os executa de forma automatizada 
  no browser
Selenium
S l i
Cl
                     Clover

• Ferramenta para análise de cobertura dos 
  testes existem na aplicação

• Integrado a várias IDEs ‐ Eclipse ;‐)
      g                         p ;)

• Existem diversas opções semelhantes:
  Existem diversas opções semelhantes: 
  JCoverage, Cobertura, etc
         g ,          ,
Clover
Cl
Refatoração
C d
                Codesmell
                       ll

• Codesmell ou code smell é um dos conceitos 
  criados pelo XP

• Um code smell é uma indicação superficial de 
                            ç     p
  que algo pode estar errado. Aquela mesma 
  sensação quando você abre sua geladeira e 
  sente um cheiro estranho
O que é refatorar?
O que é refatorar?
R f t
                 Refatoração
                          ã

• Sempre existiu, mas não tinha um nome

• Estava implícito
           p

• A novidade foi criar um vocabulário comum e
  A novidade foi criar um vocabulário comum e 
  catalogá los
  catalogá‐los

• Assim podemos utilizar mais sistematicamente
  Assim podemos utilizar mais sistematicamente 
  e ensinar uns aos outros
  e ensinar uns aos outros
Q
            Quando refatorar?
                d    f t    ?

• Sempre há duas possibilidades:
  – Melhorar o código existente.

  – Jogar fora e começar do 0.

• É sua responsabilidade avaliar a situação e 
  decidir quando é a hora de optar por um ou 
  por outro.
R f t
                 Refatoração
                          ã

• Os principais objetivos são:
  – Tornar o código mais claro, limpo, simples e 
    elegante;

  – Permitir que componentes mais simples ou 
    expressões mais eficientes sejam usadas.
R f t
         Refatoração: Benefícios
                  ã B     fí i

• Redução de código duplicado

• Aumentar a simplicidade
                p

• Facilitar a leitura
  Facilitar a leitura

• Melhorar a performance e eficência
  Melhorar a performance e eficência

• Manutenibilidade
R f t
        Refatorar X Reescrever
                  XR
Refatorar              Reescrever
• Não      altera    a • Altera             a
  funcionalidade    ou   funcionalidade    do
  conteúdo          do   sistema/solução
  sistema/solução
   i t   / l ã
Garanta se nos testes
Garanta‐se nos testes

 Altere o código sem medo
G
         Garanta‐se nos testes
              t         t t

• Antes de começar a refatorar verifique se você 
  tem um conjunto de testes para garantir a 
  funcionalidade do código a ser refatorado

• Refatorações podem adicionar erros

• Os testes vão ajudá‐lo a detectar erros se eles 
                 j
  forem criados
Conclusões
               C l õ
• Testes colaboram para o aumento da 
  qualidade d
      lid d dos sistemas;
                  it
• Desenvolvedores ficam mais corajosos e
  Desenvolvedores ficam mais corajosos e 
  confiantes ao programar;
• O software cresce de forma ordenada e com 
  qualidade de design;
             de design;
• O software se adapta com mais facilidade a 
  mudanças;
Conclusões
                    C l õ
• 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 
    d
    desenvolvimento;
             l i   t
  – Bugs de produção são encontrados e corrigidos com muito 
    mais velocidade;
    mais velocidade;
• Então no fim das contas demora‐se muito menos 
  tempo e com muito mais qualidade;
  tempo e com muito mais qualidade;


                                                              [10]
Dúvidas?
Referências
                                R f ê i
•   [1] ‐ NIST ‐ http://www.nist.gov/public_affairs/releases/n02‐10.htm
•   [2] ‐ ImproveIt ‐ http://www.improveit.com.br/xp/praticas/tdd
•   [ ]                p // g
    [3] ‐ Caelum ‐ http://blog.caelum.com.br/2006/09/08/voce‐acredita‐no‐seu‐codigo/
                                               /    / / /                        g /
•   [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 
     d i     t t
•   [6] – Wikipedia – http://en.wikipedia.org/wiki/Test‐driven_development
•   [7] ‐ TDD ‐ http://www.testdriven.com
•   [8] Brod http://www brod com br
    [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

•   Algumas ilustações foram retiradas do site da ImproveIt.
refatore




             Escreva código
Escreva um
E
               que passe
   Teste        no teste
D íd C íti
              Duvídas, Críticas e Sugestões
                                  S    tõ
       • Para contato:
             – www.jeveaux.com
             – www.portaljava.com
                       t lj
             – paulo@jeveaux.com
             – jeveaux@portaljava.com



                                    Obrigado a todos!
                                    Obrigado a todos!
27/09/2008

Weitere ähnliche Inhalte

Was ist angesagt?

Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Fernando Palma
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareCamilo Almendra
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosCristiano Caetano
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwareCamilo Ribeiro
 
Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]rafael327780
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareJeremias Araujo
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Introdução a testes de sofwtare
Introdução a testes de sofwtareIntrodução a testes de sofwtare
Introdução a testes de sofwtareFernando Palma
 
Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville minastestingconference
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidaderzauza
 

Was ist angesagt? (20)

Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Qualidade e Teste de Software
Qualidade e Teste de SoftwareQualidade e Teste de Software
Qualidade e Teste de Software
 
Papéis em teste e qualidade de software
Papéis em teste e qualidade de softwarePapéis em teste e qualidade de software
Papéis em teste e qualidade de software
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Ctai Teste De Software Aula 2
Ctai Teste De Software Aula 2Ctai Teste De Software Aula 2
Ctai Teste De Software Aula 2
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticos
 
Fundamentos de Testes de Software - Qualidad
Fundamentos de Testes de Software - QualidadFundamentos de Testes de Software - Qualidad
Fundamentos de Testes de Software - Qualidad
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]Ctfl 2018 sample_b[v1.3br]
Ctfl 2018 sample_b[v1.3br]
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Introdução a testes de sofwtare
Introdução a testes de sofwtareIntrodução a testes de sofwtare
Introdução a testes de sofwtare
 
Introdução ao design de teste de software
Introdução ao design de teste de softwareIntrodução ao design de teste de software
Introdução ao design de teste de software
 
Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Overview de QA
Overview de QA Overview de QA
Overview de QA
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 

Andere mochten auch

Lean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos AiresLean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos AiresWebgoal
 
Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Webgoal
 
Não me faça pensar
Não me faça pensarNão me faça pensar
Não me faça pensarWebgoal
 
Como tomar decisões em equipe
Como tomar decisões em equipeComo tomar decisões em equipe
Como tomar decisões em equipeWebgoal
 
VRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaVRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaDaniel Faria Gomes
 
Scrum na Horta - Caipira Agil 2011
Scrum na Horta - Caipira Agil 2011Scrum na Horta - Caipira Agil 2011
Scrum na Horta - Caipira Agil 2011Webgoal
 
Percona XtraBackup
Percona XtraBackupPercona XtraBackup
Percona XtraBackupWebgoal
 
Lean Startup
Lean StartupLean Startup
Lean StartupWebgoal
 
Motivacao e Felicidade no Ambiente de Trabalho
Motivacao e Felicidade no Ambiente de TrabalhoMotivacao e Felicidade no Ambiente de Trabalho
Motivacao e Felicidade no Ambiente de TrabalhoWebgoal
 
Você não tem um produto (Design de serviços)
Você não tem um produto (Design de serviços)Você não tem um produto (Design de serviços)
Você não tem um produto (Design de serviços)Webgoal
 
Desenvolvimento ágil na prática - Agile Tour 2011 Poços de Caldas
Desenvolvimento ágil na prática - Agile Tour 2011 Poços de CaldasDesenvolvimento ágil na prática - Agile Tour 2011 Poços de Caldas
Desenvolvimento ágil na prática - Agile Tour 2011 Poços de CaldasWebgoal
 
Feedback ao invés de avaliação de desempenho
Feedback ao invés de avaliação de desempenho Feedback ao invés de avaliação de desempenho
Feedback ao invés de avaliação de desempenho Webgoal
 
Business Model Canvas
Business Model CanvasBusiness Model Canvas
Business Model CanvasWebgoal
 

Andere mochten auch (14)

Lean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos AiresLean Startup - Ágiles 2011 Buenos Aires
Lean Startup - Ágiles 2011 Buenos Aires
 
Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho
 
Não me faça pensar
Não me faça pensarNão me faça pensar
Não me faça pensar
 
Como tomar decisões em equipe
Como tomar decisões em equipeComo tomar decisões em equipe
Como tomar decisões em equipe
 
VRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaVRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em Java
 
Scrum na Horta - Caipira Agil 2011
Scrum na Horta - Caipira Agil 2011Scrum na Horta - Caipira Agil 2011
Scrum na Horta - Caipira Agil 2011
 
Percona XtraBackup
Percona XtraBackupPercona XtraBackup
Percona XtraBackup
 
Lean Startup
Lean StartupLean Startup
Lean Startup
 
Motivacao e Felicidade no Ambiente de Trabalho
Motivacao e Felicidade no Ambiente de TrabalhoMotivacao e Felicidade no Ambiente de Trabalho
Motivacao e Felicidade no Ambiente de Trabalho
 
Você não tem um produto (Design de serviços)
Você não tem um produto (Design de serviços)Você não tem um produto (Design de serviços)
Você não tem um produto (Design de serviços)
 
Desenvolvimento ágil na prática - Agile Tour 2011 Poços de Caldas
Desenvolvimento ágil na prática - Agile Tour 2011 Poços de CaldasDesenvolvimento ágil na prática - Agile Tour 2011 Poços de Caldas
Desenvolvimento ágil na prática - Agile Tour 2011 Poços de Caldas
 
Desmistificando o nao-modelo Spotify
Desmistificando o nao-modelo SpotifyDesmistificando o nao-modelo Spotify
Desmistificando o nao-modelo Spotify
 
Feedback ao invés de avaliação de desempenho
Feedback ao invés de avaliação de desempenho Feedback ao invés de avaliação de desempenho
Feedback ao invés de avaliação de desempenho
 
Business Model Canvas
Business Model CanvasBusiness Model Canvas
Business Model Canvas
 

Ähnlich wie Testes e Refatoração

IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesJefferson Moreira
 
Perspectivas em teste de software
Perspectivas em teste de softwarePerspectivas em teste de software
Perspectivas em teste de softwareQualister
 
Como fazer testes de usabilidade
Como fazer testes de usabilidadeComo fazer testes de usabilidade
Como fazer testes de usabilidadeUTFPR
 
Qualidade em Testes de Software
Qualidade em Testes de SoftwareQualidade em Testes de Software
Qualidade em Testes de SoftwareGDGFoz
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizadoselliando dias
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Daniel Wildt
 
Quais são os erros mais comuns de um programador ruby
Quais são os erros mais comuns de um programador ruby Quais são os erros mais comuns de um programador ruby
Quais são os erros mais comuns de um programador ruby Flavia Fortes
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
Quero ser um caçador de bugs
Quero ser um caçador de bugsQuero ser um caçador de bugs
Quero ser um caçador de bugsSarah Pimentel
 
Automação de Testes Mitos e Verdades
Automação de Testes Mitos e VerdadesAutomação de Testes Mitos e Verdades
Automação de Testes Mitos e VerdadesQualister
 

Ähnlich wie Testes e Refatoração (20)

Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 
IC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas DoentesIC Cuidando de Sistemas Doentes
IC Cuidando de Sistemas Doentes
 
Testes
TestesTestes
Testes
 
Perspectivas em teste de software
Perspectivas em teste de softwarePerspectivas em teste de software
Perspectivas em teste de software
 
Como fazer testes de usabilidade
Como fazer testes de usabilidadeComo fazer testes de usabilidade
Como fazer testes de usabilidade
 
TDD
TDDTDD
TDD
 
Qualidade em Testes de Software
Qualidade em Testes de SoftwareQualidade em Testes de Software
Qualidade em Testes de Software
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Quais são os erros mais comuns de um programador ruby
Quais são os erros mais comuns de um programador ruby Quais são os erros mais comuns de um programador ruby
Quais são os erros mais comuns de um programador ruby
 
Testing sucks
Testing sucksTesting sucks
Testing sucks
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Quero ser um caçador de bugs
Quero ser um caçador de bugsQuero ser um caçador de bugs
Quero ser um caçador de bugs
 
Automação de Testes Mitos e Verdades
Automação de Testes Mitos e VerdadesAutomação de Testes Mitos e Verdades
Automação de Testes Mitos e Verdades
 
Certificacao
CertificacaoCertificacao
Certificacao
 
Certificacao
CertificacaoCertificacao
Certificacao
 
Introdução ao Teste de Software
Introdução ao Teste de SoftwareIntrodução ao Teste de Software
Introdução ao Teste de Software
 

Mehr von 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
 

Mehr von 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
 

Testes e Refatoração

  • 1. Testes e Refatoração Testes e Refatoração Jevô Paulo César M. Jeveaux j www.jeveaux.com refatore Escreva código Escreva um que passe Teste no teste
  • 2. J ô Jevô • Analista Senior de WebMedia na globo.com • Desenvolvedor Java há 7++ anos • Administrador do PortalJava e ESJUG • Palestrante‐Entusiasta‐Evangelista Java Palestrante‐Entusiasta‐Evangelista Java • Entusiasta Python, Rails e Agile h l l
  • 3. A d Agenda • Introdução • Bug • Você confia no que faz? Afinal é um teste? Você confia no que faz? Afinal é um teste? • Cobertura de testes • Tipos de testes • Desenvolvendo orientado a testes • Ferramentas e técnicas de testes F t té i d t t • Refatoração
  • 5.
  • 6.
  • 7. Introdução Desenvolvimento de software Desen ol imento de soft are Falhas de Software de Software
  • 8. F lh d S ft Falhas de Software • Mais de 1/3 das falhas poderiam ser evitadas ser evitadas com testes; [1] • Cerca de 50% das falhas de 50% das falhas só são descobertas em produção;  produção; [1]
  • 9. Introdução Desenvolvimento de software Desen ol imento de soft are Falhas de Software de Software Falhas custam caro
  • 10. F lh Falhas custam $$$ t $$$ • Segundo uma pesquisa do Departamento de  Comércio dos EUA, publicada em 2002, falhas  C é i d EUA bli d 2002 f lh de software são tão comuns e tão danosas  que se estima que causem um prejuízo anual  de mais de 60 bilhões de dólares para a  de mais de 60 bilhões de dólares para a economia americana. [1], [2]
  • 11. Introdução Desenvolvimento de software Desen ol imento de soft are Falhas de Software de Software Falhas custam caro Testes não evitam falhas
  • 12. Introdução Desenvolvimento de software Desen ol imento de soft are Falhas de Software Falhas custam caro Testes não evitam falhas Testes identificam as falhas antes delas Testes identificam as falhas antes delas acontecerem
  • 13.
  • 15.
  • 16.
  • 17. Bugs São aquelas baratinhas que  São aquelas baratinhas que ficavam nas válvulas do Eniac fi ál l d i
  • 19. Bugs E também podem ser milhões de  E também podem ser milhões de outros problemas que somente  bl os usuários irão encontrar
  • 20. Bugs E também E também podem ser milhões de ser milhões de  outros problemas que somente bl os usuários irão encontrar
  • 21. Bugs Por mais perfeita que seja sua  Por mais perfeita que seja sua engenharia, os bugs estarão  h i b ã presentes e afetarão diretamente  o usuário o usuário
  • 22. Bugs Metodologias ágeis, como o XP, defendem  g g , , que, ao encontrarmos um problema, que, ao encontrarmos um problema,  antes de desenvolver uma solução  antes de desenvolver uma solução devemos criar um teste que detecte tal  devemos criar um teste que detecte tal problema. bl
  • 24.
  • 25. G Garanta o que você faz t êf • Cliente: – Isso aqui não está funcionando! • Programador: – Mas como!? Na minha máquina estava  funcionando até ontem. funcionando até ontem
  • 26. G Garanta o que você faz t êf Depois eu escrevo o  p plano de testes…
  • 27. G Garanta o que você faz t êf Depois eu escrevo o  p plano de testes… Vamos deixar os testes  pra próxima fase…
  • 28. G Garanta o que você faz t êf Depois eu escrevo o  p plano de testes… Vamos deixar os testes  pra próxima fase… Na minha Na minha máquina está funcionando…
  • 29. G Garanta o que você faz t êf Depois eu escrevo o  D i plano de testes de testes… Vamos deixar os testes  pra próxima fase… Precisamos entregar o  produto semana que vem!!! Na minha máquina está funcionando…
  • 30. G t t b lh Garanta o seu trabalho seja profissional j fi i l Errado! (como se safar) Realidade! • Num mundo capitalizado  • O cliente não quer saber se  não há tempo para testes não há tempo para testes X virou Y. Ele quer que o  X virou Y Ele quer que o • O cliente não quer saber  q problema não aconteça e se  como é feito, ele quer que  acontecer que seja corrigido  funcione rapidamente • Não se consegue qualidade Não se consegue qualidade  e confiabilidade sem testes [4]
  • 32. O O que são testes? ã t t ? 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
  • 33. O O que são testes? ã t t ? • São pontuais São pontuais • São previsíveis • São finitos São finitos • São (ou deveriam ser) simples
  • 34. O que são testes? O que são testes? White Box White Bo
  • 35. Whit B White Box • Testes de unidade de código; g ; • Testam parte da solução; Testam parte da solução; • São escritos e mantidos pelo  programador e devem estar sempre  atualizados;
  • 36. O que são testes? O que são testes? White Box White Bo Black Box Black Box
  • 37. Bl k B Black Box • Testes funcionais e de aceitação; Testes funcionais e de aceitação; • Testes de integração; d i ã • Testam a solução completa;
  • 38. C b t Cobertura dos testes d t t Resultado esperado Trecho alterado com alteração: OK Reflexo da alteração Erro #1 Reflexo da alteração Erro #2 Reflexo da alteração BUG Reflexo da alteração Inesperado I d
  • 39. C b t Cobertura dos testes d t t Sem cobertura Com cobertura • Novo release = códigos  sem testes; • Não há segurança de Não há segurança de  que as alterações não  irão impactar em outros  irão impactar em outros pontos da aplicação; • Problemas muitos Problemas, muitos  problemas;
  • 40. C b t Cobertura dos testes d t t • Dificilmente consegue‐se 100% de cobertura  de testes, contete‐se com 99% • Quanto maior a cobertura dos testes na  aplicação maior a confiabilidade nas  alterações e novos recursos
  • 41. C b t Cobertura dos testes d t t • Aplicações cobertas por bons testes  propiciam: i i – Facilidade de manutenção; Facilidade de manutenção; – Facilidade para inclusão de novos membros no Facilidade para inclusão de novos membros no  ; time de desenvolvimento; – Redução de problemas e custos nas manutenções; ç p ç – Telefone silencioso nas madrugadas!
  • 42. T t ã Testes são necessários ái • Você precisa verificar o código, sempre • Você precisa garantir que os requisitos estão  p g q q implementados (e corretos) p ( ) • Você precisa ter segurança para realizar Você precisa ter segurança para realizar  alterações ç
  • 43. T t ã Testes são necessários ái • Você precisa testar rápido para entregar rápido • Você precisa ser criativo para explorar o máximo  possível com seus testes, não use testes mentirosos • Você aumenta e garante a qualidade da sua solução  com testes
  • 45. T t U itá i Testes Unitários • Testam uma parte isolada da solução, um  componente ou trecho de código • Todo o resto é simulado através de Mock  Objets; • É fundamental para TDD p
  • 46. T t U itá i Testes Unitários [wikipedia] É a fase do processo de teste em que se testam as menores  unidades de software desenvolvidas O universo alvo desse tipo de teste são os métodos dos objetos O universo alvo desse tipo de teste são os métodos dos objetos  ou mesmo pequenos trechos de código. Assim, o objetivo é o  de encontrar falhas de funcionamento dentro de uma  pequena parte do sistema funcionando independentemente  do todo. [/wikipedia]
  • 47. Testes Unitários T t U itá i • Ferramentas: – JUnit/NUnit e TestNG: para testes unitários – JMock: para criação de objetos e cenários falsos
  • 48. Tipos de Testes Tipos de Testes Unitário Aceitação
  • 49. T t d Testes de aceitação it ã • Testam uma história, funcionalidade ou caso  de uso • Envolvem vários componentes do sistema ou  p até o sistema como um todo • Ex. ferramentas: JUnit, Selenium, Fit/FitNesse , , /
  • 50. Tipos de Testes Tipos de Testes Unitário Aceitação Integração
  • 51. T t d i t Testes de integração ã • Testam a integração entre componentes • Envolvem dois ou mais componentes p • Ex ferramentas: JUnit DBUnit HSQLDB Ex. ferramentas: JUnit, DBUnit, HSQLDB • Normalmente não é muito utilizado em TDD Normalmente não é muito utilizado em TDD
  • 53. TDD refatore Escreva código E Escreva um que passe Teste no teste
  • 54. R Regras Fundamentais F d t i • Escreva o teste da implementação ANTES de  escrevê‐la • Escreva somente código suficiente para o  g p teste passar e nada além disso • Escreva testes pequenos p q • Escreva testes muito rápidos Escreva testes muito rápidos [10]
  • 55. Ferramentas JUnit
  • 56. JU it JUnit • É um framework altamente eficaz e  largamente utilizado na criação e execução de  l t tili d i ã ã d g testes unitários de códigos http://junit.org
  • 57. U t t Um teste com JUnit JU it public class HelloWorldTest { @ est @Test public void testMultiplicacao() { //Testando se 2*2 = 4 assertEquals (“Mult”, 4, 2*2); ( Mult , 2 2); } }
  • 58. Ferramentas JUnit TestNG
  • 59. T tNG TestNG • Uma alternativa ao JUnit para testes unitários • Foi o primeiro a utilizar anotações para  p ç p definição dos TestCases ç
  • 61. U t t Um teste com TestNG T tNG import org.testng.annotations.*; public class SimpleTest { @BeforeClass public void setUp() { } @Test(groups = { quot;calculadoraquot; }) public void somaTest() { bli id T t() System.out.println(quot;somaquot;); } }
  • 62. Ferramentas JUnit TestNG JMock
  • 63. JM k JMock • Utilizado para criar ou simular falsos  objetos/cenários • Alternativas: – EasyMock – MockObjetc
  • 64. S l i Selenium • Ferramenta para realização de testes  integrados e de aceitação • Usado no browser, grava todos os passos  ,g p executados na aplicação diretamente no  browser e os executa de forma automatizada  no browser
  • 66. Cl Clover • Ferramenta para análise de cobertura dos  testes existem na aplicação • Integrado a várias IDEs ‐ Eclipse ;‐) g p ;) • Existem diversas opções semelhantes: Existem diversas opções semelhantes:  JCoverage, Cobertura, etc g , ,
  • 67.
  • 70.
  • 71. C d Codesmell ll • Codesmell ou code smell é um dos conceitos  criados pelo XP • Um code smell é uma indicação superficial de  ç p que algo pode estar errado. Aquela mesma  sensação quando você abre sua geladeira e  sente um cheiro estranho
  • 73.
  • 74. R f t Refatoração ã • Sempre existiu, mas não tinha um nome • Estava implícito p • A novidade foi criar um vocabulário comum e A novidade foi criar um vocabulário comum e  catalogá los catalogá‐los • Assim podemos utilizar mais sistematicamente Assim podemos utilizar mais sistematicamente  e ensinar uns aos outros e ensinar uns aos outros
  • 75. Q Quando refatorar? d f t ? • Sempre há duas possibilidades: – Melhorar o código existente. – Jogar fora e começar do 0. • É sua responsabilidade avaliar a situação e  decidir quando é a hora de optar por um ou  por outro.
  • 76. R f t Refatoração ã • Os principais objetivos são: – Tornar o código mais claro, limpo, simples e  elegante; – Permitir que componentes mais simples ou  expressões mais eficientes sejam usadas.
  • 77. R f t Refatoração: Benefícios ã B fí i • Redução de código duplicado • Aumentar a simplicidade p • Facilitar a leitura Facilitar a leitura • Melhorar a performance e eficência Melhorar a performance e eficência • Manutenibilidade
  • 78. R f t Refatorar X Reescrever XR Refatorar Reescrever • Não altera a • Altera a funcionalidade ou funcionalidade do conteúdo do sistema/solução sistema/solução i t / l ã
  • 79. Garanta se nos testes Garanta‐se nos testes Altere o código sem medo
  • 80. G Garanta‐se nos testes t t t • Antes de começar a refatorar verifique se você  tem um conjunto de testes para garantir a  funcionalidade do código a ser refatorado • Refatorações podem adicionar erros • Os testes vão ajudá‐lo a detectar erros se eles  j forem criados
  • 81. Conclusões C l õ • Testes colaboram para o aumento da  qualidade d lid d dos sistemas; it • Desenvolvedores ficam mais corajosos e Desenvolvedores ficam mais corajosos e  confiantes ao programar; • O software cresce de forma ordenada e com  qualidade de design; de design; • O software se adapta com mais facilidade a  mudanças;
  • 82. Conclusões C l õ • 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  d desenvolvimento; l i t – Bugs de produção são encontrados e corrigidos com muito  mais velocidade; mais velocidade; • Então no fim das contas demora‐se muito menos  tempo e com muito mais qualidade; tempo e com muito mais qualidade; [10]
  • 84. Referências R f ê i • [1] ‐ NIST ‐ http://www.nist.gov/public_affairs/releases/n02‐10.htm • [2] ‐ ImproveIt ‐ http://www.improveit.com.br/xp/praticas/tdd • [ ] p // g [3] ‐ Caelum ‐ http://blog.caelum.com.br/2006/09/08/voce‐acredita‐no‐seu‐codigo/ / / / / g / • [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  d i t t • [6] – Wikipedia – http://en.wikipedia.org/wiki/Test‐driven_development • [7] ‐ TDD ‐ http://www.testdriven.com • [8] Brod http://www brod com br [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 • Algumas ilustações foram retiradas do site da ImproveIt.
  • 85. refatore Escreva código Escreva um E que passe Teste no teste
  • 86. D íd C íti Duvídas, Críticas e Sugestões S tõ • Para contato: – www.jeveaux.com – www.portaljava.com t lj – paulo@jeveaux.com – jeveaux@portaljava.com Obrigado a todos! Obrigado a todos! 27/09/2008