SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
Community       .com




        Introdução ao

        T             D      D



@CharlesFortes
Introdução ao
 Test-Driven Development
                                                                   .com


Cadastro de Usuário Cadastro de Usuário

    Cadastro de Usuário
          Cadastro de Usuário   Cadastro de Usuário
Cadastro de Usuário        Cadastro de Usuário
                                                 Cadastro de Usuário




    @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                          .com




        • Meu sistema pode ter no máximo 6 usuários;

        • Para poder cadastrar um usuário, deve-se estar logado no sistema e possuir
          permissão específica para isto;

        • Não podem haver dois logins iguais no sistema;

        • A senha deve ter no mínimo 6 caracteres e não pode ter mais de 50 caracteres;

        • Nome, Login e senha são campos obrigatórios;




   @CharlesFortes
Introdução ao
Test-Driven Development
                                      .com




    O que é



         Test-DrivenDevelopment   ?
   @CharlesFortes
Introdução ao
Test-Driven Development
                                                .com




                É Desenvolver Focado no Caso
                de Testes, nas Especificações



   @CharlesFortes
Introdução ao
Test-Driven Development
                                          .com




                    WTF?
          É Desenvolver Focado no Caso
          de Testes, nas Especificações

   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                   .com




       Casos de Testes são condições aos quais o
       software deverá ser submetido para que possa ser testado
       quanto ao seu funcionamento adequado e verificando se ele
       atende ao que foi solicitado




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                                                 .com



 Entende-se que nossa tela de cadastro                      de usuário está
 funcionando corretamente quando as seguintes condições estiverem
 satisfeitas:

                1. Logado no sistema e tendo permissão para cadastrar usuários, cadastrar um usuário  Incluir
                                                                   corretamente, exibir mensagem de sucesso
                            2. Tentar inserir 7 usuário  O sistema não pode permitir, retornando uma exceção
        3. Com 6 usuários cadastrados, remover um usuário e inserir um novo  Incluir corretamente, exibir
                                                                                        mensagem de sucesso
                  4. Tentar cadastrar um usuário sem estar logado no sistema  Não permitir, retornar exceção
     5. Estando logado no sistema, tentar cadastrar um usuário sem ter permissão  Não permitir, retornar
                                                                                                      exceção
                   6. Tentar cadastrar dois usuários com o mesmo nome  Não permitir, retornar uma exceção
                                              7. Remover um usuário e cadastrar um novo com o mesmo nome



   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                                             .com



 Entende-se que nossa tela de cadastro                   de usuário está
 funcionando corretamente quando as seguintes condições estiverem
 satisfeitas:

                    1. Tentar salvar um usuário com o login em branco  não permitir, retornar uma exceção
                  2. Tentar salvar um usuário com o nome em branco  não permitir, retornar uma exceção
                3. Tentar cadastrar um usuário com senha em branco  não permitir, retornar uma exceção
                          4. Tentar cadastrar uma senha com 5 dígitos  não permitir, retornar uma exceção
           5. Tentar cadastrar uma senha com 6 dígitos  Incluir corretamente, exibir mensagem de sucesso
           6. Tentar cadastrar uma senha de 50 dígitos  Incluir corretamente, exibir mensagem de sucesso
                        7. Tentar cadastrar uma senha com 51 dígitos  não permitir, retornar uma exceção




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                    .com




                    Para cada um dos casos de testes apresentados anteriormente,
                      deve existir um   teste de unidade que o valide de forma
                                                                        absoluta.




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                 .com




                                                   WTF?
                Para cada um dos casos de testes apresentados anteriormente,
                    deve existir um   teste de unidade que o valide de forma
                                                                     absoluta.




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                        .com




      Segundo a Wikipédia



             “Testes de unidade é um método pelo qual as   unidades individuais do
             código-fonte   são testados para   determinar       se eles estão aptos
             para o uso.

             A unidade é a menor parte testável de um aplicativo. Na programação
             procedural uma unidade   pode ser uma função               individual ou
             procedimento. Na programação orientada a objeto uma unidade           é
             normalmente um método.”




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                          .com




    Um     teste de unidade, é um teste automatizado que testa
                uma funcionalidade/aspecto/Requisito do sistema




                                          i.e. Testar a capacidade do sistema de se permitir
                                          cadastrar um usuário dentro dos moldes do
                                          negócio




   @CharlesFortes
Introdução ao
Test-Driven Development
                                  .com




                          Testa




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                           .com




   Teste de unidade deve ser executável independente dos dados




                                            O teste de unidade deve conter tudo

    o que o teste   necessita, ele não pode depender de estados gerados por
     outros testes, ele deve funcionar tão bem sendo executado sozinho como com todos os
                                                                                  demais




   Teste de unidade sempre será usado como teste de regressão



   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                     .com




                    Teste de unidade feito por fazer não tem valor




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                 .com




    Não altere ou exclua testes para ter um novo. O teste só deve mudar
    quando a funcionalidade mudar



    Teste de unidade deve testar   o Contrato, não teste nada além do contrato




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                   .com




        No modelo tradicional de desenvolvimento,   primeiro se cria o código, e
        depois se implementam os testes necessários para seu funcionamento

                                       Planeja >
                Requisitos                                       Teste de Aceite
                                       Planeja >
                    Análise                                 Teste de Sistema
                                       Planeja >
                       Desenho                           Teste de Integração
                                       Planeja >
                              Código                Teste de Unidade


   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                             .com




    O   problema deste modelo é que o teste muitas vezes se torna viciado,
    acaba sendo um teste criado para provar   que o código funciona, e não
    para validar se há ou não falhas




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                                                .com




   Pensando em como solucionar este problema, foi criado o                                                TDD




                                  Desenho reaproveitado de uma tirinha do site vidadeprogramador.com.br
                                  O texto apresentado não é o texto original da tirinha.




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                .com




   Pensando em como solucionar este problema, foi criado o   TDD
                                   Planeja >
 Requisitos                                                      Teste de Aceite

           Análise                 Planeja >                 Teste de Sistema


                    Desenho        Planeja >        Teste de Integração

                                     Planeja >
                Teste de Unidade                 Código



   @CharlesFortes
Introdução ao
Test-Driven Development
                                                    .com




   Quem diz: _“o importante é testar, não importa
   quando” esta errado, porque entende TDD como
   uma abordagem de testes.

   TDD utiliza testes para dirigir o desenvolvimento
                                         da aplicação



   @CharlesFortes
Introdução ao
Test-Driven Development
                                                            .com




       “Testes escritos antes do código da aplicação,
       antes de serem testes, são especificações”


                                           Giovanni Bassi




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                              .com




    Dentre as vantagens desta abordagem estão o fato de que se   desenvolve
    apenas o necessário e com          agilidade


           E a segurança de que a aplicação      continuará funcionando no
                futuro (evitando regressões), qualquer erro que apareça pode ser facilmente
                                       encontrado sem ficar debugando o código a esmo.




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                                                        .com




 O TDD     NÃO realiza todos os testes que o projeto precisa, ele apenas fornece
 uma    direção     para ser seguida durante o desenvolvimento que foca as
 especificações. Ele testa se o que foi solicitado funciona.




                     O TDD deve ser realizado pelo desenvolvedor, de forma que   guie
                     seu raciocínio quanto a   como e o que implementar


   @CharlesFortes
Introdução ao
Test-Driven Development
                                                    .com


01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100



                    Lets Test
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100


   @CharlesFortes
Introdução ao
 Test-Driven Development
                                                                .com


Pensando em como solucionar este problema, foi criado o   TDD




    @CharlesFortes
Introdução ao
Test-Driven Development        Pré-Condição                                         .com




 Deve ser preparado o   ambiente de testes, suas pré-condições

                             Podem ser usados MOCKs, fakes, querys, a execução de
                             outro teste (ou outros), etc...




   @CharlesFortes
Introdução ao
Test-Driven Development       Pré-Condição                                           .com


                    O Visual Studio usa a marcação TestInitialize em um método para
                                                    executar algo que prepara o ambiente.




   @CharlesFortes
Introdução ao
  Domain-Driven Design
                                                                                      .com




u Escreva o Código para que ele passe Rode todos os testes Refatore Escreva o Teste Verifiq




     @CharlesFortes
Introdução ao
Domain-Driven Design
                       .com




   @CharlesFortes
Introdução ao
  Domain-Driven Design
                                                                                              .com




e Verifique       se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore E




     @CharlesFortes
Introdução ao
Domain-Driven Design
                       .com




   @CharlesFortes
Introdução ao
  Domain-Driven Design
                                                                                       .com




que se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore Escreva




     @CharlesFortes
Introdução ao
Domain-Driven Design
                       .com




   @CharlesFortes
Introdução ao
  Domain-Driven Design
                                                                                      .com




que se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore Escreva




     @CharlesFortes
Introdução ao
Domain-Driven Design
                       .com




   @CharlesFortes
Introdução ao
  Domain-Driven Design
                                                                                  .com




que se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore Es




     @CharlesFortes
Introdução ao
Test-Driven Development
                          .com




                    VB6




   @CharlesFortes
Introdução ao
Test-Driven Development
                                                    .com


01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100



                    Lets Code
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100
01000001111010101011111100000111001101101010010101010
00001110011011010100101010100100000111101000000011100


   @CharlesFortes
Introdução ao
Test-Driven Development
                                                               .com




                    http://bugbang.com.br

                    http://artofunittesting.com

                    http://www.agiledata.org/essays/tdd.html




   @CharlesFortes
Introdução ao
Test-Driven Development



                @CharlesFortes

                br.linkedin.com/in/charlesfortes

                pangeanet.org/profile/charlesfortes

Mais conteúdo relacionado

Mais procurados

Automatização de testes funcionais com selenium etapa 1
Automatização de testes funcionais com selenium  etapa 1Automatização de testes funcionais com selenium  etapa 1
Automatização de testes funcionais com selenium etapa 1Cintia Armesto
 
Teste de aplicações web com selenium
Teste de aplicações web com seleniumTeste de aplicações web com selenium
Teste de aplicações web com seleniumMayron Cachina
 
Automacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumAutomacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumFabrício Lemos
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelManoel Pimentel Medeiros
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de SeleniumAutotic
 
TDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testesTDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testesRafael Dohms
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Vanderson Silva
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddCarlos Santana
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Vanderson Silva
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/IntegradosGiovanni Bassi
 
JUnit - Selenium
JUnit - SeleniumJUnit - Selenium
JUnit - SeleniumCaue Guerra
 

Mais procurados (20)

Automatização de testes funcionais com selenium etapa 1
Automatização de testes funcionais com selenium  etapa 1Automatização de testes funcionais com selenium  etapa 1
Automatização de testes funcionais com selenium etapa 1
 
Teste de aplicações web com selenium
Teste de aplicações web com seleniumTeste de aplicações web com selenium
Teste de aplicações web com selenium
 
Selenium ide apresentação
Selenium ide   apresentaçãoSelenium ide   apresentação
Selenium ide apresentação
 
Automacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumAutomacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com Selenium
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel Pimentel
 
J unit xp
J unit xpJ unit xp
J unit xp
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de Selenium
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Hands On Selenium
Hands On SeleniumHands On Selenium
Hands On Selenium
 
TDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testesTDC 2011 - E no sétimo dia ele escreveu testes
TDC 2011 - E no sétimo dia ele escreveu testes
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tdd
 
Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
 
Selenium ide
Selenium ideSelenium ide
Selenium ide
 
TDC 2011 Trilha de Teste
TDC 2011 Trilha de TesteTDC 2011 Trilha de Teste
TDC 2011 Trilha de Teste
 
Java 12
Java 12Java 12
Java 12
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
JUnit - Selenium
JUnit - SeleniumJUnit - Selenium
JUnit - Selenium
 

Destaque

Medição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasMedição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasCharles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosPitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosCharles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalPitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalCharles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Charles Fortes
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusCharles Fortes
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaCharles Fortes
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materiaCharles Fortes
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguroCharles Fortes
 
Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaCharles Fortes
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação ProfessorCharles Fortes
 
Sistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsSistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsCharles Fortes
 
PE2 - Funções e Structs
PE2 - Funções e StructsPE2 - Funções e Structs
PE2 - Funções e StructsCharles Fortes
 
Programação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CProgramação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CCharles Fortes
 
Programação Genetica
Programação GeneticaProgramação Genetica
Programação GeneticaCharles Fortes
 
IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do ProfessorCharles Fortes
 

Destaque (20)

MVC Pattern
MVC PatternMVC Pattern
MVC Pattern
 
Medição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasMedição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelas
 
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosPitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalPitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
 
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
 
Introdução ao DDD
Introdução ao DDDIntrodução ao DDD
Introdução ao DDD
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - Concorrência
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materia
 
Metodologias ageis
Metodologias ageisMetodologias ageis
Metodologias ageis
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 
Lambda Expressions
Lambda ExpressionsLambda Expressions
Lambda Expressions
 
Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à Máquina
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação Professor
 
Sistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e ThreadsSistemas Operacionais - Aula 7 - Processos e Threads
Sistemas Operacionais - Aula 7 - Processos e Threads
 
PE2 - Funções e Structs
PE2 - Funções e StructsPE2 - Funções e Structs
PE2 - Funções e Structs
 
Programação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CProgramação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão C
 
Programação Genetica
Programação GeneticaProgramação Genetica
Programação Genetica
 
IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do Professor
 

Semelhante a Introdução ao TDD

Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
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
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driverJúlio de Lima
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de SoftwareCapgemini
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreCloves da Rocha
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaChristian Cunha
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeisQualister
 
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no WordpressRoger Ritter
 

Semelhante a Introdução ao TDD (20)

Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Teste agora! Não deixe para depois!
Teste agora! Não deixe para depois!Teste agora! Não deixe para depois!
Teste agora! Não deixe para depois!
 
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
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do Mestre
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeis
 
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
[Iniciante] - Testes Unitários com WP-UNIT no Wordpress
 

Mais de Charles Fortes

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkCharles Fortes
 
inteligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãointeligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãoCharles Fortes
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorCharles Fortes
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialCharles Fortes
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de DecisãoCharles Fortes
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)Charles Fortes
 
LPC - aula 1 - Introdução .NET
LPC  - aula 1 - Introdução .NETLPC  - aula 1 - Introdução .NET
LPC - aula 1 - Introdução .NETCharles Fortes
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do ProfessorCharles Fortes
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosCharles Fortes
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosCharles Fortes
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e InglaterraCharles Fortes
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalCharles Fortes
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareCharles Fortes
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisCharles Fortes
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOCharles Fortes
 

Mais de Charles Fortes (16)

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity framework
 
inteligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineraçãointeligência artificial - fuzzy - mineração
inteligência artificial - fuzzy - mineração
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do Professor
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência Artificial
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de Decisão
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
 
LPC - aula 1 - Introdução .NET
LPC  - aula 1 - Introdução .NETLPC  - aula 1 - Introdução .NET
LPC - aula 1 - Introdução .NET
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do Professor
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e Inglaterra
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e Software
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SO
 

Introdução ao TDD

  • 1. Community .com Introdução ao T D D @CharlesFortes
  • 2. Introdução ao Test-Driven Development .com Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário @CharlesFortes
  • 3. Introdução ao Test-Driven Development .com • Meu sistema pode ter no máximo 6 usuários; • Para poder cadastrar um usuário, deve-se estar logado no sistema e possuir permissão específica para isto; • Não podem haver dois logins iguais no sistema; • A senha deve ter no mínimo 6 caracteres e não pode ter mais de 50 caracteres; • Nome, Login e senha são campos obrigatórios; @CharlesFortes
  • 4. Introdução ao Test-Driven Development .com O que é Test-DrivenDevelopment ? @CharlesFortes
  • 5. Introdução ao Test-Driven Development .com É Desenvolver Focado no Caso de Testes, nas Especificações @CharlesFortes
  • 6. Introdução ao Test-Driven Development .com WTF? É Desenvolver Focado no Caso de Testes, nas Especificações @CharlesFortes
  • 7. Introdução ao Test-Driven Development .com Casos de Testes são condições aos quais o software deverá ser submetido para que possa ser testado quanto ao seu funcionamento adequado e verificando se ele atende ao que foi solicitado @CharlesFortes
  • 8. Introdução ao Test-Driven Development .com Entende-se que nossa tela de cadastro de usuário está funcionando corretamente quando as seguintes condições estiverem satisfeitas: 1. Logado no sistema e tendo permissão para cadastrar usuários, cadastrar um usuário  Incluir corretamente, exibir mensagem de sucesso 2. Tentar inserir 7 usuário  O sistema não pode permitir, retornando uma exceção 3. Com 6 usuários cadastrados, remover um usuário e inserir um novo  Incluir corretamente, exibir mensagem de sucesso 4. Tentar cadastrar um usuário sem estar logado no sistema  Não permitir, retornar exceção 5. Estando logado no sistema, tentar cadastrar um usuário sem ter permissão  Não permitir, retornar exceção 6. Tentar cadastrar dois usuários com o mesmo nome  Não permitir, retornar uma exceção 7. Remover um usuário e cadastrar um novo com o mesmo nome @CharlesFortes
  • 9. Introdução ao Test-Driven Development .com Entende-se que nossa tela de cadastro de usuário está funcionando corretamente quando as seguintes condições estiverem satisfeitas: 1. Tentar salvar um usuário com o login em branco  não permitir, retornar uma exceção 2. Tentar salvar um usuário com o nome em branco  não permitir, retornar uma exceção 3. Tentar cadastrar um usuário com senha em branco  não permitir, retornar uma exceção 4. Tentar cadastrar uma senha com 5 dígitos  não permitir, retornar uma exceção 5. Tentar cadastrar uma senha com 6 dígitos  Incluir corretamente, exibir mensagem de sucesso 6. Tentar cadastrar uma senha de 50 dígitos  Incluir corretamente, exibir mensagem de sucesso 7. Tentar cadastrar uma senha com 51 dígitos  não permitir, retornar uma exceção @CharlesFortes
  • 10. Introdução ao Test-Driven Development .com Para cada um dos casos de testes apresentados anteriormente, deve existir um teste de unidade que o valide de forma absoluta. @CharlesFortes
  • 11. Introdução ao Test-Driven Development .com WTF? Para cada um dos casos de testes apresentados anteriormente, deve existir um teste de unidade que o valide de forma absoluta. @CharlesFortes
  • 12. Introdução ao Test-Driven Development .com Segundo a Wikipédia “Testes de unidade é um método pelo qual as unidades individuais do código-fonte são testados para determinar se eles estão aptos para o uso. A unidade é a menor parte testável de um aplicativo. Na programação procedural uma unidade pode ser uma função individual ou procedimento. Na programação orientada a objeto uma unidade é normalmente um método.” @CharlesFortes
  • 13. Introdução ao Test-Driven Development .com Um teste de unidade, é um teste automatizado que testa uma funcionalidade/aspecto/Requisito do sistema i.e. Testar a capacidade do sistema de se permitir cadastrar um usuário dentro dos moldes do negócio @CharlesFortes
  • 14. Introdução ao Test-Driven Development .com Testa @CharlesFortes
  • 15. Introdução ao Test-Driven Development .com Teste de unidade deve ser executável independente dos dados O teste de unidade deve conter tudo o que o teste necessita, ele não pode depender de estados gerados por outros testes, ele deve funcionar tão bem sendo executado sozinho como com todos os demais Teste de unidade sempre será usado como teste de regressão @CharlesFortes
  • 16. Introdução ao Test-Driven Development .com Teste de unidade feito por fazer não tem valor @CharlesFortes
  • 17. Introdução ao Test-Driven Development .com Não altere ou exclua testes para ter um novo. O teste só deve mudar quando a funcionalidade mudar Teste de unidade deve testar o Contrato, não teste nada além do contrato @CharlesFortes
  • 18. Introdução ao Test-Driven Development .com No modelo tradicional de desenvolvimento, primeiro se cria o código, e depois se implementam os testes necessários para seu funcionamento Planeja > Requisitos Teste de Aceite Planeja > Análise Teste de Sistema Planeja > Desenho Teste de Integração Planeja > Código Teste de Unidade @CharlesFortes
  • 19. Introdução ao Test-Driven Development .com O problema deste modelo é que o teste muitas vezes se torna viciado, acaba sendo um teste criado para provar que o código funciona, e não para validar se há ou não falhas @CharlesFortes
  • 20. Introdução ao Test-Driven Development .com Pensando em como solucionar este problema, foi criado o TDD Desenho reaproveitado de uma tirinha do site vidadeprogramador.com.br O texto apresentado não é o texto original da tirinha. @CharlesFortes
  • 21. Introdução ao Test-Driven Development .com Pensando em como solucionar este problema, foi criado o TDD Planeja > Requisitos Teste de Aceite Análise Planeja > Teste de Sistema Desenho Planeja > Teste de Integração Planeja > Teste de Unidade Código @CharlesFortes
  • 22. Introdução ao Test-Driven Development .com Quem diz: _“o importante é testar, não importa quando” esta errado, porque entende TDD como uma abordagem de testes. TDD utiliza testes para dirigir o desenvolvimento da aplicação @CharlesFortes
  • 23. Introdução ao Test-Driven Development .com “Testes escritos antes do código da aplicação, antes de serem testes, são especificações” Giovanni Bassi @CharlesFortes
  • 24. Introdução ao Test-Driven Development .com Dentre as vantagens desta abordagem estão o fato de que se desenvolve apenas o necessário e com agilidade E a segurança de que a aplicação continuará funcionando no futuro (evitando regressões), qualquer erro que apareça pode ser facilmente encontrado sem ficar debugando o código a esmo. @CharlesFortes
  • 25. Introdução ao Test-Driven Development .com O TDD NÃO realiza todos os testes que o projeto precisa, ele apenas fornece uma direção para ser seguida durante o desenvolvimento que foca as especificações. Ele testa se o que foi solicitado funciona. O TDD deve ser realizado pelo desenvolvedor, de forma que guie seu raciocínio quanto a como e o que implementar @CharlesFortes
  • 26. Introdução ao Test-Driven Development .com 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 Lets Test 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 @CharlesFortes
  • 27. Introdução ao Test-Driven Development .com Pensando em como solucionar este problema, foi criado o TDD @CharlesFortes
  • 28. Introdução ao Test-Driven Development Pré-Condição .com Deve ser preparado o ambiente de testes, suas pré-condições Podem ser usados MOCKs, fakes, querys, a execução de outro teste (ou outros), etc... @CharlesFortes
  • 29. Introdução ao Test-Driven Development Pré-Condição .com O Visual Studio usa a marcação TestInitialize em um método para executar algo que prepara o ambiente. @CharlesFortes
  • 30. Introdução ao Domain-Driven Design .com u Escreva o Código para que ele passe Rode todos os testes Refatore Escreva o Teste Verifiq @CharlesFortes
  • 32. Introdução ao Domain-Driven Design .com e Verifique se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore E @CharlesFortes
  • 34. Introdução ao Domain-Driven Design .com que se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore Escreva @CharlesFortes
  • 36. Introdução ao Domain-Driven Design .com que se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore Escreva @CharlesFortes
  • 38. Introdução ao Domain-Driven Design .com que se ele falhou Escreva o Código para que ele passe Rode todos os testes Refatore Es @CharlesFortes
  • 39. Introdução ao Test-Driven Development .com VB6 @CharlesFortes
  • 40. Introdução ao Test-Driven Development .com 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 Lets Code 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 01000001111010101011111100000111001101101010010101010 00001110011011010100101010100100000111101000000011100 @CharlesFortes
  • 41. Introdução ao Test-Driven Development .com http://bugbang.com.br http://artofunittesting.com http://www.agiledata.org/essays/tdd.html @CharlesFortes
  • 42. Introdução ao Test-Driven Development @CharlesFortes br.linkedin.com/in/charlesfortes pangeanet.org/profile/charlesfortes