SlideShare uma empresa Scribd logo
1 de 47
TEST DRIVEN DEVELOPMENT
RECORDAR…
TESTES
     DE
SOFTWARE
PRINCIPAIS
CONCEITOS
TESTE DE
UNIDADE
TESTE DE
INTEGRAÇÃO
TESTE
FUNCIONAL
TESTE DE
 TENSÃO
TESTE DE
ACEITAÇÃO
TDD
   =
   TESTE
  UNITÁRIO
TEST DRIVEN DEVELOPMENT
ACEITAÇÃO
          TENSÃO
         FUNCIONAL
         INTEGRAÇÃO



          UNITÁRIO




TEST DRIVEN DEVELOPMENT
PATTERNS
EMTDD
TEST DRIVEN DEVELOPMENT
TESTES
TESTES

                              TESTES
TESTES

ISOLADOS      * A execução de um teste não pode afetar outro teste.




  TEST DRIVEN DEVELOPMENT
LISTA                                       TESTES
                                            TESTES
                                            TESTES
                                            TESTES
 * Fazer uma lista com todos os testes que o desenvolvedor acredita que será necessário escrever.




TEST DRIVEN DEVELOPMENT
FAÇA O TESTE
         * Os testes devem ser escritos antes do código que será testado.




TEST DRIVEN DEVELOPMENT
DADOS
                                 TESTES

DADOS
           EVIDENTES
       * Devem ser utilizados dados que tornem os testes fáceis de ler e seguir.
       * Devem ser incluídos nos testes os dados esperados e o resultado atual.




TEST DRIVEN DEVELOPMENT
POR QUE


TEST DRIVEN DEVELOPMENT
ONDE ESTÁ
O BUG?
TEST DRIVEN DEVELOPMENT
CORRIJA
RÁPIDO
TEST DRIVEN DEVELOPMENT
EN             ME
TE
ND
               LH
 A             OR
TEST DRIVEN DEVELOPMENT
CICLO
DE   VIDA
TEST DRIVEN DEVELOPMENT
Adicionar
       um teste


Ok
       Executar
        o teste



       Modificar



Erro               Ok…
       Executar
        o teste
Adiciona
                 Teste

                                  Veja
Refatore                          teste
                                 falhar




      Rode os              Escreva
       testes              Código
E AGORA?
REGRAS
   TDD
BOAS PRÁTICAS
TEST DRIVEN DEVELOPMENT
 Especificar os testes, elaborando uma lista de
  testes a serem executados.
 Iniciar pelo teste mais simples.
 Iniciar a construção do código pela construção
  do teste.
 Construir apenas o necessário que deseja
  testar.
 Evitar construir testes grandes, buscar dividir
  em blocos.



Framework em JAVA                           JUnit
SHOW
             ME
             THE
             CODE
              THE CODE IS THE DESIGN




Framework em JAVA                      JUnit
MEU TESTE
   import static org.junit.Assert.*;
   import org.junit.Test;

   public class TestCalculator{
               @Test
               public void testAdiciona() {
                     Calculator calcula = new Calculator();
                     double result = calcula.add(1.0,5.0);
                     assertEquals(6.0, result, 0);
               }
   }



   * Método de teste de unidade que garante a validação do método de soma da classe Calculator.




Framework em JAVA                                                                          JUnit
MEU PROGRAMA
    public class Calculator{
                public double add(double numero1, double numero2){
                             return numero1 + numero2;
                }
                public double sub(double numero1, double numero2){
                             return numero1 - numero2;
                }
                public double mult(double numero1, double numero2){
                             return numero1 * numero2;
                }
                public double div(double numero1, double numero2){
                             return numero1 / numero2;
                }
    }




Framework em JAVA                                                     JUnit
KEEP
             THE
             BAR
             GREEN

Framework em JAVA    JUnit
TEST DRIVEN DEVELOPMENT
MASSOL, Vincent e HUDTED, Ted. Junit em Ação, Rio de Janeiro, Editora Ciência Moderna,
1ª edição, 2005.

STEPHENS, Matt e ROSENBERG, Doug. Design Driven Testing, Estados Unidos da América,
Springer Science+Business Media, 2010.

GASPARETO, Otávio. Test Driven Development, Rio Grande do Sul, 2013. Disponível em: <
http://www.inf.ufrgs.br/~cesantin/TDD-Otavio.pdf>. Acesso em: 22 mar. 2013.

LOPES, Camilo. Princípios de TDD, 2012. Disponível em: <
http://imasters.com.br/artigo/24242/desenvolvimento/principios-de-test-driven-
development-tdd/>. Acesso em: 30 mar. 2013.

GAMA, Alexandre. TDD Simples e Prático, Parte 1. Disponível em:
<http://www.devmedia.com.br/tdd-simples-e-pratico-parte-i/18533>Acesso em: 30 mar.
2013.

http://www.agiledata.org/essays/tdd.html
http://pt.wikipedia.org/wiki/Test_Driven_Development


       REFERÊNCIAS BIBLIOGRÁFICAS
DICAS DE LEITURA
Alexandre Werneck
          @xanwerneck
     xanwerneck@gmail.com




TEST DRIVEN DEVELOPMENT
TDD em 220V

Mais conteúdo relacionado

Mais procurados

Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitRobinson Castilho
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnitelliando dias
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Ariane Izac
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Robson Agapito Correa
 
Introdução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitIntrodução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitelliando dias
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 

Mais procurados (20)

Junit 4.0
Junit 4.0Junit 4.0
Junit 4.0
 
Junit
JunitJunit
Junit
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
 
Java 12
Java 12Java 12
Java 12
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Introdução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitIntrodução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnit
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 

Destaque

Special report by epic research 05.04.13
Special report by epic research 05.04.13Special report by epic research 05.04.13
Special report by epic research 05.04.13Epic Daily Report
 
Journal Entry 4
Journal Entry 4Journal Entry 4
Journal Entry 4Ms. Beka
 
Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...
Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...
Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...Ireland & UK Moodlemoot 2012
 
Educação inclusiva- Escola inclusiva
Educação inclusiva- Escola inclusivaEducação inclusiva- Escola inclusiva
Educação inclusiva- Escola inclusivaSimone Dias
 
cooling systems of transformers
cooling systems of transformerscooling systems of transformers
cooling systems of transformersMalik Armughan
 
Pasos para crear una cuenta en blogger
Pasos para crear una cuenta en bloggerPasos para crear una cuenta en blogger
Pasos para crear una cuenta en bloggerPatty Moreeno
 
Bon Appétit. Branding and Packaging design
Bon Appétit. Branding and Packaging designBon Appétit. Branding and Packaging design
Bon Appétit. Branding and Packaging designemezetacreativo
 
Em cada amanhecer
Em cada amanhecerEm cada amanhecer
Em cada amanhecerslidshows
 
Top verkkopalvelu kao
Top verkkopalvelu kaoTop verkkopalvelu kao
Top verkkopalvelu kaohellevitervo
 
Contents page analysis
Contents page analysisContents page analysis
Contents page analysisSean-Clampitt
 

Destaque (14)

Special report by epic research 05.04.13
Special report by epic research 05.04.13Special report by epic research 05.04.13
Special report by epic research 05.04.13
 
Journal Entry 4
Journal Entry 4Journal Entry 4
Journal Entry 4
 
Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...
Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...
Mootie13 Can 'e-learning' for language and literacy offer an opportunity to u...
 
Educação inclusiva- Escola inclusiva
Educação inclusiva- Escola inclusivaEducação inclusiva- Escola inclusiva
Educação inclusiva- Escola inclusiva
 
cooling systems of transformers
cooling systems of transformerscooling systems of transformers
cooling systems of transformers
 
Ter localizacao absoluta
Ter localizacao absolutaTer localizacao absoluta
Ter localizacao absoluta
 
Pasos para crear una cuenta en blogger
Pasos para crear una cuenta en bloggerPasos para crear una cuenta en blogger
Pasos para crear una cuenta en blogger
 
Bon Appétit. Branding and Packaging design
Bon Appétit. Branding and Packaging designBon Appétit. Branding and Packaging design
Bon Appétit. Branding and Packaging design
 
Presentación 2
Presentación 2Presentación 2
Presentación 2
 
Em cada amanhecer
Em cada amanhecerEm cada amanhecer
Em cada amanhecer
 
Top verkkopalvelu kao
Top verkkopalvelu kaoTop verkkopalvelu kao
Top verkkopalvelu kao
 
Grupo
GrupoGrupo
Grupo
 
Laminaspasatiempo
LaminaspasatiempoLaminaspasatiempo
Laminaspasatiempo
 
Contents page analysis
Contents page analysisContents page analysis
Contents page analysis
 

Semelhante a TDD em 220V

Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislAdriano Petrich
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Wellington Moreira
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Diego Pacheco
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testesCarol Vilas Boas
 

Semelhante a TDD em 220V (20)

Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Unit test & TDD
Unit test & TDDUnit test & TDD
Unit test & TDD
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
Testes
TestesTestes
Testes
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
J unit xp
J unit xpJ unit xp
J unit xp
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
ATDD Android
ATDD AndroidATDD Android
ATDD Android
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2
 
Desenvolvimento orientado a testes
Desenvolvimento orientado a testesDesenvolvimento orientado a testes
Desenvolvimento orientado a testes
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 

TDD em 220V

  • 3.
  • 4. TESTES DE SOFTWARE
  • 6.
  • 8.
  • 10.
  • 12.
  • 14.
  • 16.
  • 17. TDD = TESTE UNITÁRIO TEST DRIVEN DEVELOPMENT
  • 18. ACEITAÇÃO TENSÃO FUNCIONAL INTEGRAÇÃO UNITÁRIO TEST DRIVEN DEVELOPMENT
  • 20.
  • 21. TESTES TESTES TESTES TESTES ISOLADOS * A execução de um teste não pode afetar outro teste. TEST DRIVEN DEVELOPMENT
  • 22. LISTA TESTES TESTES TESTES TESTES * Fazer uma lista com todos os testes que o desenvolvedor acredita que será necessário escrever. TEST DRIVEN DEVELOPMENT
  • 23. FAÇA O TESTE * Os testes devem ser escritos antes do código que será testado. TEST DRIVEN DEVELOPMENT
  • 24. DADOS TESTES DADOS EVIDENTES * Devem ser utilizados dados que tornem os testes fáceis de ler e seguir. * Devem ser incluídos nos testes os dados esperados e o resultado atual. TEST DRIVEN DEVELOPMENT
  • 25. POR QUE TEST DRIVEN DEVELOPMENT
  • 26.
  • 27. ONDE ESTÁ O BUG? TEST DRIVEN DEVELOPMENT
  • 28.
  • 30.
  • 31. EN ME TE ND LH A OR TEST DRIVEN DEVELOPMENT
  • 32. CICLO DE VIDA TEST DRIVEN DEVELOPMENT
  • 33. Adicionar um teste Ok Executar o teste Modificar Erro Ok… Executar o teste
  • 34. Adiciona Teste Veja Refatore teste falhar Rode os Escreva testes Código
  • 36. REGRAS TDD BOAS PRÁTICAS TEST DRIVEN DEVELOPMENT
  • 37.
  • 38.  Especificar os testes, elaborando uma lista de testes a serem executados.  Iniciar pelo teste mais simples.  Iniciar a construção do código pela construção do teste.  Construir apenas o necessário que deseja testar.  Evitar construir testes grandes, buscar dividir em blocos. Framework em JAVA JUnit
  • 39. SHOW ME THE CODE THE CODE IS THE DESIGN Framework em JAVA JUnit
  • 40. MEU TESTE import static org.junit.Assert.*; import org.junit.Test; public class TestCalculator{ @Test public void testAdiciona() { Calculator calcula = new Calculator(); double result = calcula.add(1.0,5.0); assertEquals(6.0, result, 0); } } * Método de teste de unidade que garante a validação do método de soma da classe Calculator. Framework em JAVA JUnit
  • 41. MEU PROGRAMA public class Calculator{ public double add(double numero1, double numero2){ return numero1 + numero2; } public double sub(double numero1, double numero2){ return numero1 - numero2; } public double mult(double numero1, double numero2){ return numero1 * numero2; } public double div(double numero1, double numero2){ return numero1 / numero2; } } Framework em JAVA JUnit
  • 42. KEEP THE BAR GREEN Framework em JAVA JUnit
  • 44. MASSOL, Vincent e HUDTED, Ted. Junit em Ação, Rio de Janeiro, Editora Ciência Moderna, 1ª edição, 2005. STEPHENS, Matt e ROSENBERG, Doug. Design Driven Testing, Estados Unidos da América, Springer Science+Business Media, 2010. GASPARETO, Otávio. Test Driven Development, Rio Grande do Sul, 2013. Disponível em: < http://www.inf.ufrgs.br/~cesantin/TDD-Otavio.pdf>. Acesso em: 22 mar. 2013. LOPES, Camilo. Princípios de TDD, 2012. Disponível em: < http://imasters.com.br/artigo/24242/desenvolvimento/principios-de-test-driven- development-tdd/>. Acesso em: 30 mar. 2013. GAMA, Alexandre. TDD Simples e Prático, Parte 1. Disponível em: <http://www.devmedia.com.br/tdd-simples-e-pratico-parte-i/18533>Acesso em: 30 mar. 2013. http://www.agiledata.org/essays/tdd.html http://pt.wikipedia.org/wiki/Test_Driven_Development REFERÊNCIAS BIBLIOGRÁFICAS
  • 46. Alexandre Werneck @xanwerneck xanwerneck@gmail.com TEST DRIVEN DEVELOPMENT