SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
II Beljungle
                             SEPAI              2005
                                        JUnit
                        Implementando Testes
                              Unitários em Java




                         br.groups.yahoo.com/group/xpnorte
JUnit – Implementado Testes Unitários em Java     Por Manoel Pimentel - Fundador do XPNorte
Palestrante: Manoel Pimentel Medeiros
           É Engenheiro de Software, com mais de 15 anos na área de TI, atualmente
            trabalha com projetos pela Rhealeza(SP). É Diretor Editorial da Revista Visão
            Ágil, Membro da Agile Alliance e foi um dos pioneiros na utilização e divulgação
            de métodos ágeis no Brasil.         Já escreveu artigos para importantes revistas e
            portais especializados no Brasil e no exterior. Possui as certificações CSM e
            CSP da Scrum Alliance. Já participou do time de Desenvolvimento do
            NetBeans(Sun), foi criador do projeto BoxSQL, fundador do grupo XPNorte e
            do NUG-BR e frequentemente palestra em eventos sobre processos e
            tecnologias. Maiores informações em: http://manoelpimentel.blogspot.com




JUnit – Implementado Testes Unitários em Java             Por Manoel Pimentel - Fundador do XPNorte
Agenda:
           Um pouco de XP.
           Como programar guiado a testes?
           Teste Unitário (O que?, por que?, quando?, quem?,
            como?).
           JUnit(O que?, por que?, quando?, quem?, como?).
           JUnit(Planejamento e arquitetura das classes ).
           JUnit(Funcionamento e Análise do resultado ).
           Implementado testes em JUnit usando o Eclipse.
           Outros métodos e técnicas complementares.
           Conclusão.
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Um pouco de XP:
           XP é um apelido carinhoso de uma
            metodologia ágil de desenvolvimento
            designada Extreme Programming,  com
                                Programming
            foco em agilidade de equipes e qualidade de
            projetos, apoiada em valores como
            simplicidade, comunicação, feedback e
            coragem.


JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Você desenvolve “O”
        Você faz programa
        programa com o cliente?
        com o cliente?
           XP é metodologia muito comportamental,
            onde prima mudanças de atitudes e práticas.

           Sua principal mudança está na máxima
            integração entre pessoas e principalmente,
            estimulando uma participação maior do
            cliente. Portando, literalmente, temos que
            FAZER O PROGRAMA COM O CLIENTE.


JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Práticas XP
           XP sugere um conjunto de boas práticas
            que melhoram o planejamento, execução,
            e gerenciamento de seu projeto de
            software.

           Essas práticas melhoram sua eficiência e
            eficácia, diminuindo o retrabalho,
            garantindo dessa forma a qualidade em seu
            projeto.
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Práticas organizacionais
                                                                        Práticas de equipe


       Práticas XP                                                      Práticas de pares



                                Equipe(Técnicos e clientes)




              Propriedade               Teste Unitário             Padrão
                  Coletiva                                         De Código

Teste de                                                                         Jogo de
Aceitação              Programação                       Refatoração             Planejamento
                       Em par


              Integração                                        Ritmo
                                            Design
                Contínua                                        Sustentável
                                            Simples


                                         Metáforas
                                      Pequenas Versões
JUnit – Implementado Testes Unitários em Java            Por Manoel Pimentel - Fundador do XPNorte
TDD
       Test Driven Development
        Desenvolvimento Guiado por Testes, define que
         antes de criarmos um código novo, devemos
         escrever um teste para ele.
        E testes serão usados como métrica em todo o
         tempo de vida do projeto.

Obter                 Criar Código de            Codificar                 Fazer
tarefa               Teste para a tarefa                                Refactoring




                                         Passou nos testes?
                           Sim: Nova tarefa              Não: Revisar código
JUnit – Implementado Testes Unitários em Java     Por Manoel Pimentel - Fundador do XPNorte
Teste Unitário

                                        Imagine se um avião só fosse
                                        testado após a conclusão de sua
                                        construção....


                                        Seria um desastre....




JUnit – Implementado Testes Unitários em Java     Por Manoel Pimentel - Fundador do XPNorte
Teste Unitário
       (O que é?)
         O teste unitário é uma modalidade de
         testes que se concentra na verificação da
         menor unidade do projeto de software. É
         realizado o teste de uma unidade lógica,
         com uso de dados suficientes para se testar
         apenas a lógica da unidade em questão.
         Em sistemas construídos com uso de
         linguagens orientadas a objetos, essa unidade
         pode ser identificada como um método, uma
         classe ou mesmo um objeto.
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Teste Unitário
       (Por que?)
           Previne contra o aparecimento de “BUG’S” oriundos
            de códigos mal escritos.
           Código testado é mais confiável.
           Permite alterações sem medo(coragem)
           Testa situações de sucesso e de falha.
           Resulta em outras práticas XP como : Código
            coletivo, refatoração, integração contínua.
           Serve como métrica do projeto ( teste ==requisitos)
           Gera e preserva um “conhecimento” sobre o projeto.
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Teste Unitário
       (Organização dos testes e práticas XP)




JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Teste Unitário
       (Quando fazer?)
           No início
            Primeiro projetar e escrever as classes de
            testes, depois as classes com regra de
            negócios
           Diariamente
            È SUGERIDO que seja rodado os testes várias
            vezes ao dia (é fácil corrigir pequenos
            problemas do que corrigir um “problemão”
            somente no final do projeto.
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Teste Unitário
       (Quem faz?)
           Test Case(para cada classe)
            Desenvolvedor(Projeta, escreve e roda)

            Test Suite(Rodas vários test cases)
             Coordenador e Desenvolvedor
            (Projeta, escreve e roda)

        * Teste de aceitação(homologação) é feito
          junto ao cliente.
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Teste Unitário
       (Que Testar?)
           A principal regra para saber o que testar é: “Tenha criatividade para
            imaginar as possibilidades de testes”.

           Comece pelas mais simples e deixe os testes “complexos“ para o final.

           Use apenas dados suficientes (não teste 10 condições se três forem
            suficientes)

           Não teste métodos triviais, tipo get e set.

           No caso de um método set, só faça o teste caso haja validação de
            dados.

           Achou um bug? Não conserte sem antes escrever um teste que o
            pegue (se você não o fizer, ele volta)!
JUnit – Implementado Testes Unitários em Java      Por Manoel Pimentel - Fundador do XPNorte
Exercício de Imaginação
       - Ache as possibilidades de testes neste diagrama de classe




JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – O que é?
           Um framework que facilita o
            desenvolvimento e execução de testes
            de unidade em código Java

           Fornece Uma API para construir os
            testes e Aplicações para executar testes


JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Por que?
           JUnit pode verificar se cada unidade de código
            funciona da forma esperada.

           Facilita a criação, execução automática de testes e
            a apresentação dos resultados.

           É Orientado a Objeto

           É Free e pode ser baixado em:
            www.junit.org
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Como instalar?
           Incluir o arquivo junit.jar no
            classpath para compilar e rodar os
            programas de teste

           Já vem configurado nas versões
            recentes de IDE’s como Eclipse,
            JBuilder, BlueJ e outros.
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Planejando os testes
           1. Defina uma lista de tarefas a implementar( o que
            testar)

           2. Escreva uma classe (test case) e implemente um
            método de teste para uma tarefa da lista.

           3. Rode o JUnit e certifique-se que o teste falha

           4. Implemente o código mais simples que rode o
            teste
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Planejando os testes
           5. Refatore o código para remover a duplicação de
            dados

           6. Caso necessário, escreva mais um teste ou refine
            o existente

           7. Faça esses passos para toda a lista de tarefas.



JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit- Arquitetura das Classes




                                                     Fonte: Manual do JUnit (Cooks Tour)
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Como implementar
           1. Crie uma classe que estenda junit.framework.TestCase
            para cada classe a ser testada
                  import junit.framework.*;
                  class SuaClasseTest extends TestCase
                  {...
                   }
           2. Para cada método a ser testado defina um método public void
            test???() no test case
           SuaClasse:
                  public int Soma(Object o ...)
                  { ...
                   }
           SuaClasseTest:
                  public void testSoma()
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Funcionamento
                             O TestRunner recebe uma subclasse de
                              junit.framework.TestCase

                             Cada método testXXX(), executa:
                                1. o método setUp() /* Opcional */

                                2. o próprio método testXXX()

                                3. o método tearDown() /* Opcional */




JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Analisando o
       Resultado
           Em modo gráfico, os métodos testados
            podem apresentar o seguintes
            resultados:

           Sucesso

           Falha

           exceção
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Criando a classe
de teste no Eclipse
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Sua Classe a
ser testada
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Rodando o teste em
modo gráfico
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Resultado em caso
de SUCESSO
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Resultado em caso
de FALHA
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Automatizando a criação
dos Test Cases
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Outros Exemplo
de teste
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Criando Test Suite
para rodar vários
test cases
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit - Outros Métodos
       de Testes
            assertEquals
                Testa igualdade entre dois objetos(esperado x retornado)
           assertFalse( )
                Testa Retorno booleano FALSO
           assertTrue( )
                Testa Retorno booleano VERDADEIRO
           assertNotNull( )
                Testa se um valor de um objeto NÃO está NULO
           assertNull( )
                Testa se um valor de um objeto está NULO
JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
JUnit – métodos setUp() e
       tearDown()
          São os dados reutilizados por vários testes, Inicializados no
           setUp() e destruídos no tearDown() (se necessário)




JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Técnicas complementares
           É importante também, ser aplicado
            tipos de testes como:
                Teste       de    Performance,
                Teste       de    Carga,
                Teste       de    estresse,
                Teste       de    aceitação, etc.


JUnit – Implementado Testes Unitários em Java   Por Manoel Pimentel - Fundador do XPNorte
Dúvidas?

      E-mail: manoelp@gmail.com

                  Ou

   br.groups.yahoo.com/group/xpnorte

Mais conteúdo relacionado

Mais procurados

Unit Test Presentation
Unit Test PresentationUnit Test Presentation
Unit Test Presentation
Sayedur Rahman
 
Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect couple
Stephen Tucker
 

Mais procurados (20)

Unit Test Presentation
Unit Test PresentationUnit Test Presentation
Unit Test Presentation
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
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
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a Objetos
 
Teste de Mutação
Teste de MutaçãoTeste de Mutação
Teste de Mutação
 
Agile and ATDD the perfect couple
Agile and ATDD the perfect coupleAgile and ATDD the perfect couple
Agile and ATDD the perfect couple
 
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDD
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Unit and integration Testing
Unit and integration TestingUnit and integration Testing
Unit and integration Testing
 
TDD and BDD and ATDD
TDD and BDD and ATDDTDD and BDD and ATDD
TDD and BDD and ATDD
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first steps
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
TestNG Session presented in PB
TestNG Session presented in PBTestNG Session presented in PB
TestNG Session presented in PB
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeis
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
 
BDD with Cucumber
BDD with CucumberBDD with Cucumber
BDD with Cucumber
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
 
Testes de ponta a ponta
Testes de ponta a pontaTestes de ponta a ponta
Testes de ponta a ponta
 

Destaque

Destaque (20)

Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Cómo hacer concept tests
Cómo hacer concept tests Cómo hacer concept tests
Cómo hacer concept tests
 
Marco General
Marco GeneralMarco General
Marco General
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univem
 
Jornada sobre Seguridad en Medios de Pago: PCI DSS
Jornada sobre Seguridad en Medios de Pago: PCI DSSJornada sobre Seguridad en Medios de Pago: PCI DSS
Jornada sobre Seguridad en Medios de Pago: PCI DSS
 
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
 
Os 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSFOs 10 maus hábitos dos desenvolvedores JSF
Os 10 maus hábitos dos desenvolvedores JSF
 
From DOT to Dotty
From DOT to DottyFrom DOT to Dotty
From DOT to Dotty
 
Proyecto Domótica Marcelo Bernal
Proyecto Domótica Marcelo BernalProyecto Domótica Marcelo Bernal
Proyecto Domótica Marcelo Bernal
 
Curso de Java #10 - Estruturas Condicionais (Parte 2)
Curso de Java #10 - Estruturas Condicionais (Parte 2)Curso de Java #10 - Estruturas Condicionais (Parte 2)
Curso de Java #10 - Estruturas Condicionais (Parte 2)
 
Ericsson Radio Dot System: Introduction
Ericsson Radio Dot System: Introduction Ericsson Radio Dot System: Introduction
Ericsson Radio Dot System: Introduction
 
Certificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade de SoftwareCertificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade 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
 
El test psicométrico y la evaluación neuropsicológica
El test psicométrico y la evaluación neuropsicológicaEl test psicométrico y la evaluación neuropsicológica
El test psicométrico y la evaluación neuropsicológica
 
Diretrizes curriculares nacionais para educação infantil
Diretrizes curriculares nacionais para educação infantilDiretrizes curriculares nacionais para educação infantil
Diretrizes curriculares nacionais para educação infantil
 
Living with licensing
Living with licensingLiving with licensing
Living with licensing
 
Nova ortografia
Nova ortografiaNova ortografia
Nova ortografia
 
Minería e fontes de enerxía en España e Galicia
Minería e fontes de enerxía en España e GaliciaMinería e fontes de enerxía en España e Galicia
Minería e fontes de enerxía en España e Galicia
 
Service Desing Week2
Service Desing Week2Service Desing Week2
Service Desing Week2
 
Beyond "The Crisis in Civics"
Beyond "The Crisis in Civics"Beyond "The Crisis in Civics"
Beyond "The Crisis in Civics"
 

Semelhante a Implementando Testes Unitários em Java - Manoel Pimentel

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
 
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
 
Vi ebts implantação de fábrica de teste - desafios, resultados e melhores p...
Vi ebts   implantação de fábrica de teste - desafios, resultados e melhores p...Vi ebts   implantação de fábrica de teste - desafios, resultados e melhores p...
Vi ebts implantação de fábrica de teste - desafios, resultados e melhores p...
Welington Monteiro
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
Paulo César M Jeveaux
 

Semelhante a Implementando Testes Unitários em Java - Manoel Pimentel (20)

Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
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
 
Testes
TestesTestes
Testes
 
J unit xp
J unit xpJ unit xp
J unit xp
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2a
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Vi ebts implantação de fábrica de teste - desafios, resultados e melhores p...
Vi ebts   implantação de fábrica de teste - desafios, resultados e melhores p...Vi ebts   implantação de fábrica de teste - desafios, resultados e melhores p...
Vi ebts implantação de fábrica de teste - desafios, resultados e melhores p...
 
Testes unitários x unit
Testes unitários   x unitTestes unitários   x unit
Testes unitários x unit
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2
 
IBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesIBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em Testes
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em RecifeO XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
 
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
 

Mais de Manoel Pimentel Medeiros

Mais de Manoel Pimentel Medeiros (20)

The DNA for Catalysing Organisational Improvements
The DNA for Catalysing Organisational ImprovementsThe DNA for Catalysing Organisational Improvements
The DNA for Catalysing Organisational Improvements
 
The Agile Coaching DNA - Overview
The Agile Coaching DNA -  OverviewThe Agile Coaching DNA -  Overview
The Agile Coaching DNA - Overview
 
Organisational Plasticity - Agile 2018
Organisational Plasticity - Agile 2018Organisational Plasticity - Agile 2018
Organisational Plasticity - Agile 2018
 
How to evolve your career as Agile Coach using The Agile Coaching DNA
How to evolve your career as Agile Coach using The Agile Coaching DNAHow to evolve your career as Agile Coach using The Agile Coaching DNA
How to evolve your career as Agile Coach using The Agile Coaching DNA
 
Como não ficar careca em Agile Transformations
Como não ficar careca em Agile TransformationsComo não ficar careca em Agile Transformations
Como não ficar careca em Agile Transformations
 
How to use the emergent learning as an enabler for product innovation
How to use the emergent learning as an enabler for product innovationHow to use the emergent learning as an enabler for product innovation
How to use the emergent learning as an enabler for product innovation
 
The Cone of Change - Manoel Pimentel (keynote)
The Cone of Change - Manoel Pimentel (keynote)The Cone of Change - Manoel Pimentel (keynote)
The Cone of Change - Manoel Pimentel (keynote)
 
Fusing the Agile Testing into an Agile Team
Fusing the Agile Testing into an Agile TeamFusing the Agile Testing into an Agile Team
Fusing the Agile Testing into an Agile Team
 
Creating Great Teams using Management 3.0
Creating Great Teams using Management 3.0Creating Great Teams using Management 3.0
Creating Great Teams using Management 3.0
 
The Conflict Fast Model - Agile2016
The Conflict Fast Model - Agile2016The Conflict Fast Model - Agile2016
The Conflict Fast Model - Agile2016
 
Hacking the World - Keynote - TaSafoConf2015
Hacking the World - Keynote - TaSafoConf2015Hacking the World - Keynote - TaSafoConf2015
Hacking the World - Keynote - TaSafoConf2015
 
Problem Pitch
Problem PitchProblem Pitch
Problem Pitch
 
Thinking Hack - Workouts
Thinking Hack - WorkoutsThinking Hack - Workouts
Thinking Hack - Workouts
 
Thinking Hack - in 18 minutes
Thinking Hack - in 18 minutesThinking Hack - in 18 minutes
Thinking Hack - in 18 minutes
 
10 dicas para escalar Agile usando SAFe
10 dicas para escalar Agile usando SAFe10 dicas para escalar Agile usando SAFe
10 dicas para escalar Agile usando SAFe
 
SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?SAFe - Como escalar algo artesanal?
SAFe - Como escalar algo artesanal?
 
Estratégias para Transição Ágil
Estratégias para Transição ÁgilEstratégias para Transição Ágil
Estratégias para Transição Ágil
 
Os beatos ágeis e os pecados mundanos das grandes empresas
Os beatos ágeis e os pecados mundanos das grandes empresasOs beatos ágeis e os pecados mundanos das grandes empresas
Os beatos ágeis e os pecados mundanos das grandes empresas
 
Como escalar algo essencialmente artesanal?
Como escalar algo essencialmente artesanal?Como escalar algo essencialmente artesanal?
Como escalar algo essencialmente artesanal?
 
Escalando a Gestão Ágil com SAFe - Manoel Pimentel
Escalando a Gestão Ágil com SAFe - Manoel PimentelEscalando a Gestão Ágil com SAFe - Manoel Pimentel
Escalando a Gestão Ágil com SAFe - Manoel Pimentel
 

Implementando Testes Unitários em Java - Manoel Pimentel

  • 1. II Beljungle SEPAI 2005 JUnit Implementando Testes Unitários em Java br.groups.yahoo.com/group/xpnorte JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 2. Palestrante: Manoel Pimentel Medeiros  É Engenheiro de Software, com mais de 15 anos na área de TI, atualmente trabalha com projetos pela Rhealeza(SP). É Diretor Editorial da Revista Visão Ágil, Membro da Agile Alliance e foi um dos pioneiros na utilização e divulgação de métodos ágeis no Brasil. Já escreveu artigos para importantes revistas e portais especializados no Brasil e no exterior. Possui as certificações CSM e CSP da Scrum Alliance. Já participou do time de Desenvolvimento do NetBeans(Sun), foi criador do projeto BoxSQL, fundador do grupo XPNorte e do NUG-BR e frequentemente palestra em eventos sobre processos e tecnologias. Maiores informações em: http://manoelpimentel.blogspot.com JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 3. Agenda:  Um pouco de XP.  Como programar guiado a testes?  Teste Unitário (O que?, por que?, quando?, quem?, como?).  JUnit(O que?, por que?, quando?, quem?, como?).  JUnit(Planejamento e arquitetura das classes ).  JUnit(Funcionamento e Análise do resultado ).  Implementado testes em JUnit usando o Eclipse.  Outros métodos e técnicas complementares.  Conclusão. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 4. Um pouco de XP:  XP é um apelido carinhoso de uma metodologia ágil de desenvolvimento designada Extreme Programming,  com Programming foco em agilidade de equipes e qualidade de projetos, apoiada em valores como simplicidade, comunicação, feedback e coragem. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 5. Você desenvolve “O” Você faz programa programa com o cliente? com o cliente?  XP é metodologia muito comportamental, onde prima mudanças de atitudes e práticas.  Sua principal mudança está na máxima integração entre pessoas e principalmente, estimulando uma participação maior do cliente. Portando, literalmente, temos que FAZER O PROGRAMA COM O CLIENTE. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 6. Práticas XP  XP sugere um conjunto de boas práticas que melhoram o planejamento, execução, e gerenciamento de seu projeto de software.  Essas práticas melhoram sua eficiência e eficácia, diminuindo o retrabalho, garantindo dessa forma a qualidade em seu projeto. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 7. Práticas organizacionais Práticas de equipe Práticas XP Práticas de pares Equipe(Técnicos e clientes) Propriedade Teste Unitário Padrão Coletiva De Código Teste de Jogo de Aceitação Programação Refatoração Planejamento Em par Integração Ritmo Design Contínua Sustentável Simples Metáforas Pequenas Versões JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 8. TDD Test Driven Development  Desenvolvimento Guiado por Testes, define que antes de criarmos um código novo, devemos escrever um teste para ele.  E testes serão usados como métrica em todo o tempo de vida do projeto. Obter Criar Código de Codificar Fazer tarefa Teste para a tarefa Refactoring Passou nos testes? Sim: Nova tarefa Não: Revisar código JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 9. Teste Unitário Imagine se um avião só fosse testado após a conclusão de sua construção.... Seria um desastre.... JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 10. Teste Unitário (O que é?) O teste unitário é uma modalidade de testes que se concentra na verificação da menor unidade do projeto de software. É realizado o teste de uma unidade lógica, com uso de dados suficientes para se testar apenas a lógica da unidade em questão. Em sistemas construídos com uso de linguagens orientadas a objetos, essa unidade pode ser identificada como um método, uma classe ou mesmo um objeto. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 11. Teste Unitário (Por que?)  Previne contra o aparecimento de “BUG’S” oriundos de códigos mal escritos.  Código testado é mais confiável.  Permite alterações sem medo(coragem)  Testa situações de sucesso e de falha.  Resulta em outras práticas XP como : Código coletivo, refatoração, integração contínua.  Serve como métrica do projeto ( teste ==requisitos)  Gera e preserva um “conhecimento” sobre o projeto. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 12. Teste Unitário (Organização dos testes e práticas XP) JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 13. Teste Unitário (Quando fazer?)  No início Primeiro projetar e escrever as classes de testes, depois as classes com regra de negócios  Diariamente È SUGERIDO que seja rodado os testes várias vezes ao dia (é fácil corrigir pequenos problemas do que corrigir um “problemão” somente no final do projeto. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 14. Teste Unitário (Quem faz?)  Test Case(para cada classe) Desenvolvedor(Projeta, escreve e roda)  Test Suite(Rodas vários test cases) Coordenador e Desenvolvedor (Projeta, escreve e roda) * Teste de aceitação(homologação) é feito junto ao cliente. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 15. Teste Unitário (Que Testar?)  A principal regra para saber o que testar é: “Tenha criatividade para imaginar as possibilidades de testes”.  Comece pelas mais simples e deixe os testes “complexos“ para o final.  Use apenas dados suficientes (não teste 10 condições se três forem suficientes)  Não teste métodos triviais, tipo get e set.  No caso de um método set, só faça o teste caso haja validação de dados.  Achou um bug? Não conserte sem antes escrever um teste que o pegue (se você não o fizer, ele volta)! JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 16. Exercício de Imaginação - Ache as possibilidades de testes neste diagrama de classe JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 17. JUnit – O que é?  Um framework que facilita o desenvolvimento e execução de testes de unidade em código Java  Fornece Uma API para construir os testes e Aplicações para executar testes JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 18. JUnit – Por que?  JUnit pode verificar se cada unidade de código funciona da forma esperada.  Facilita a criação, execução automática de testes e a apresentação dos resultados.  É Orientado a Objeto  É Free e pode ser baixado em: www.junit.org JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 19. JUnit – Como instalar?  Incluir o arquivo junit.jar no classpath para compilar e rodar os programas de teste  Já vem configurado nas versões recentes de IDE’s como Eclipse, JBuilder, BlueJ e outros. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 20. JUnit – Planejando os testes  1. Defina uma lista de tarefas a implementar( o que testar)  2. Escreva uma classe (test case) e implemente um método de teste para uma tarefa da lista.  3. Rode o JUnit e certifique-se que o teste falha  4. Implemente o código mais simples que rode o teste JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 21. JUnit – Planejando os testes  5. Refatore o código para remover a duplicação de dados  6. Caso necessário, escreva mais um teste ou refine o existente  7. Faça esses passos para toda a lista de tarefas. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 22. JUnit- Arquitetura das Classes Fonte: Manual do JUnit (Cooks Tour) JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 23. JUnit – Como implementar  1. Crie uma classe que estenda junit.framework.TestCase para cada classe a ser testada import junit.framework.*; class SuaClasseTest extends TestCase {... }  2. Para cada método a ser testado defina um método public void test???() no test case  SuaClasse: public int Soma(Object o ...) { ... }  SuaClasseTest: public void testSoma() JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 24. JUnit – Funcionamento  O TestRunner recebe uma subclasse de junit.framework.TestCase  Cada método testXXX(), executa:  1. o método setUp() /* Opcional */  2. o próprio método testXXX()  3. o método tearDown() /* Opcional */ JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 25. JUnit – Analisando o Resultado  Em modo gráfico, os métodos testados podem apresentar o seguintes resultados:  Sucesso  Falha  exceção JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 26. Criando a classe de teste no Eclipse
  • 27. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 28. Sua Classe a ser testada
  • 29. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 30. Rodando o teste em modo gráfico
  • 31. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 33. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 35. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 37. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 38. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 39. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 40. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 41. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 43. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 44. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 45. Criando Test Suite para rodar vários test cases
  • 46. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 47. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 48. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 49. JUnit - Outros Métodos de Testes  assertEquals  Testa igualdade entre dois objetos(esperado x retornado)  assertFalse( )  Testa Retorno booleano FALSO  assertTrue( )  Testa Retorno booleano VERDADEIRO  assertNotNull( )  Testa se um valor de um objeto NÃO está NULO  assertNull( )  Testa se um valor de um objeto está NULO JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 50. JUnit – métodos setUp() e tearDown()  São os dados reutilizados por vários testes, Inicializados no setUp() e destruídos no tearDown() (se necessário) JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 51. Técnicas complementares  É importante também, ser aplicado tipos de testes como:  Teste de Performance,  Teste de Carga,  Teste de estresse,  Teste de aceitação, etc. JUnit – Implementado Testes Unitários em Java Por Manoel Pimentel - Fundador do XPNorte
  • 52. Dúvidas? E-mail: manoelp@gmail.com Ou br.groups.yahoo.com/group/xpnorte