SlideShare uma empresa Scribd logo
1 de 48
Trilha – Agile
TDD e 20 coisas que você precisa
              saber
            Camilo Lopes




                           Globalcode – Open4education
Quem sou eu?
 Trabalha com desenvolvimento de software desde 2003. Atualmente Desenvolvedor de
 Software na ADP Labs, escritor do livro "Guia do exame SCJP" e "Guia Prático JEE com
 frameworks".Trabalhou na como desenvolvedor de software na IBM e HP Labs em
 projeto com Cloud computing e Agile. Em breve estará lançando seu livro "TDD na
 Prática" pela Editora Ciência Moderna. Entrou no mundo Agile em 2010 e ultimamente
 vem se dedicando aos estudos e experiência em projeto Agile.




    2010                        2011                        Agosto/2012
                                                              Globalcode – Open4education
TDD – Test Driven Development

 “Eu diria que TDD é uma forma de testar
 meu software antes de tê-lo pronto e não
 apenas criar testes. Com TDD validamos
 não somente se há um erro de lógica no
 código, mas também se os requisitos estão
 bem definidos para que possamos entregar
 aquilo que é esperado.”

                               Globalcode – Open4education
E o que muitos pensam….
Apenas criar unit test;
É ter unit test;
Que é coisa de desenvolvedor nerd;
É algo que só funciona no mundo do
Martin Fowler ,Kent Beck etc;
TDD = software sem bug.


                         Globalcode – Open4education
Será?????

       Globalcode – Open4education
NÃO!!

        Globalcode – Open4education
TDD é…
Menor custo para manutenção do software;
Melhorar nas estimativas;
Legibilidade do código;
Design guiado pelo Testes.




                             Globalcode – Open4education
Tudo isso afeta…


QUALIDADE
 INTERNA

              Globalcode – Open4education
O que aprendi com
 TDD nos últimos
     2 anos?

             Globalcode – Open4education
Case Projeto

         Globalcode – Open4education
Problemas...
Baixa qualidade interna;
Crescente número de bugs;
Baixa legibilidade no código;
Baixa curva de aprendizado;
Problemas com estimativas – Entregas.



                              Globalcode – Open4education
Como resolver?

          Globalcode – Open4education
TDD



      Globalcode – Open4education
Só um momento…

O gerente quer falar…




                Globalcode – Open4education
Isso não vai ser
    oneroso?



             Globalcode – Open4education
Globalcode – Open4education
É oneroso...
Se o desenvolvedor não entende a técnica;
Acredita que design & TDD são separados;
Acha que é receita de bolo.




                               Globalcode – Open4education
E como evitar?




            Globalcode – Open4education
Percepção




            Globalcode – Open4education
Críticas




           Globalcode – Open4education
Resultado…




             Globalcode – Open4education
Resultado
Maior qualidade no código;
Entregas mais rápidas;
Desenvolvimento ágil;
Melhoria nas estimativas.




                             Globalcode – Open4education
Já o team NOT TDD
Problemas nas estimativas;
“O código está feito, falta testar”;
 Unit test com baixa qualidade;
 Alta quantidade de bugs.




                                       Globalcode – Open4education
Lições Aprendidas
20 coisas que você precisa saber…




                         Globalcode – Open4education
Lições Aprendidas
                1
Coragem: administrar o medo durante a
           programação.




                            Globalcode – Open4education
Lições Aprendidas


                  2
Adicione um teste antes de qualquer coisa.




                               Globalcode – Open4education
Lições Aprendidas
           3
Faça uma coisa de cada vez.




                       Globalcode – Open4education
Lições Aprendidas


                 4
Faça o mínimo de trabalho possível para
              compilar.




                             Globalcode – Open4education
Lições Aprendidas

         5
   Falha é progresso.




                        Globalcode – Open4education
Lições Aprendidas

                  6
Eliminar as duplicações antes de ir para o
              próximo teste.




                               Globalcode – Open4education
Lições Aprendidas
                    7
TDD não é dar passos pequenos e sim saber dar
            os passos pequenos.




                                Globalcode – Open4education
Lições Aprendidas
              8
Quando receber uma barra vermelha
    inesperada, dê marcha ré.




                          Globalcode – Open4education
Lições Aprendidas
                   9
Rode os testes a cada nova implementação.
 Só para garantir: o que é óbvio para você,
   também é óbvio para o computador.




                                Globalcode – Open4education
Lições Aprendidas
                     10
Quando um defeito passar, aprenderemos uma
 lição de como o teste deveria ter sido escrito e
seguiremos em frente (mas reflita antes como fez
          falhar e aprenda com o erro).




                                   Globalcode – Open4education
Lições Aprendidas
                   11
Quanto mais pressão sofrer, busque adicionar
  mais testes de requisitos na lista TO-DO.




                                Globalcode – Open4education
Lições Aprendidas
                     12
Esqueça literalmente qualquer tipo de refatoração
       enquanto o sinal não ficar verde.




                                   Globalcode – Open4education
Lições Aprendidas
                    13
De tempos em tempos nosso raciocínio falhará, é
 normal, não estamos lutando pela perfeição,
            então é hora do break.




                                  Globalcode – Open4education
Lições Aprendidas

                   14
Não é pecado fazer um teste funcionar através
   da duplicação, lembre-se do ciclo TDD.




                                 Globalcode – Open4education
Lições Aprendidas

                  15
Não vá para cama até que a duplicação tenha
                 sumido.




                               Globalcode – Open4education
Lições Aprendidas


                    16
Documente o que é significativo, não o projeto.




                                  Globalcode – Open4education
Lições Aprendidas

                   17
Escreva testes que exatamente gostaria de ter.




                                  Globalcode – Open4education
Lições Aprendidas
                18
Não interromper o que estamos fazendo,
  perder o foco pode ser um problema




                             Globalcode – Open4education
Lições Aprendidas
                  19
Está se sentindo inseguro? Troque a marcha,
             ou seja, não avance.




                               Globalcode – Open4education
Lições Aprendidas
                  20
Não escrever novos testes quando temos uma
              barra vermelha.




                               Globalcode – Open4education
Reflexão
“Se você diz que precisa de mais tempo
para entregar alguma coisa por que usa
TDD, infelizmente você está fazendo algo
de errado.”
                             Camilo Lopes




                              Globalcode – Open4education
Por onde começar?




               Globalcode – Open4education
Obrigado!
    www.camilolopes.com
       @camilolope
camilo@camilolopes.com.br




                          Globalcode – Open4education
Sorteio???




             Globalcode – Open4education

Mais conteúdo relacionado

Mais procurados

Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
A transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterA transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterJéssica Mollo
 
Tdc2016 eu naogarantoa_qualidade
Tdc2016 eu naogarantoa_qualidadeTdc2016 eu naogarantoa_qualidade
Tdc2016 eu naogarantoa_qualidadeDiego Blond
 
Automatizando testes em 4 passos
Automatizando testes em 4 passosAutomatizando testes em 4 passos
Automatizando testes em 4 passosHélio Medeiros
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoHélio Medeiros
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETGabriel Schade Cardoso
 
Multidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo timesMultidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo timesHélio Medeiros
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Adam Victor Brandizzi
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startupstdc-globalcode
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosDiego Santos
 
Coding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios ÁgeisCoding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios ÁgeisLorival Smolski Chapuis
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasGabriel Schade Cardoso
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startupstdc-globalcode
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Adolfo Neto
 

Mais procurados (20)

Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
A transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterA transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile Tester
 
Tdc2016 eu naogarantoa_qualidade
Tdc2016 eu naogarantoa_qualidadeTdc2016 eu naogarantoa_qualidade
Tdc2016 eu naogarantoa_qualidade
 
Automatizando testes em 4 passos
Automatizando testes em 4 passosAutomatizando testes em 4 passos
Automatizando testes em 4 passos
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concreto
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
Multidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo timesMultidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo times
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
 
Programação Funcional usando C#
Programação Funcional usando C#Programação Funcional usando C#
Programação Funcional usando C#
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores Efetivos
 
Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
Coding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios ÁgeisCoding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios Ágeis
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 

Semelhante a 20 coisas TDD

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...Vinicius Campos Silva
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
Existem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeExistem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeDécio Heinzelmann Luckow
 
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antespriscilaelpo
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP Domingos Teruel
 
CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP Felipe Albuquerque
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
Errar é bom e faz parte... mas não jogue sua ideia fora!
Errar é bom e faz parte... mas não jogue sua ideia fora!Errar é bom e faz parte... mas não jogue sua ideia fora!
Errar é bom e faz parte... mas não jogue sua ideia fora!Gustavo Neves
 
Tdc2014 scrum remoto rola ou nao rola
Tdc2014  scrum remoto rola ou  nao rolaTdc2014  scrum remoto rola ou  nao rola
Tdc2014 scrum remoto rola ou nao rolaCamilo Lopes
 
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...Vinicius Campos Silva
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingPedro Pereira Martins
 
TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...
TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...
TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...Felipe Albuquerque
 
TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...tdc-globalcode
 
Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...
Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...
Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...Natalia Manha
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDKTDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDKtdc-globalcode
 

Semelhante a 20 coisas TDD (20)

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
[TDCPOA2018] Desmistificando a eXtreme Programming para desenvolvedores "não ...
 
Tdc2016 gustavofonseca
Tdc2016 gustavofonsecaTdc2016 gustavofonseca
Tdc2016 gustavofonseca
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
Existem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeExistem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu time
 
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
10 lições que eu aprendi implantando o Scrum e que ninguém me contou antes
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 
CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP CONWIP: uma outra opção para restrição do WIP
CONWIP: uma outra opção para restrição do WIP
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Testes
TestesTestes
Testes
 
Errar é bom e faz parte... mas não jogue sua ideia fora!
Errar é bom e faz parte... mas não jogue sua ideia fora!Errar é bom e faz parte... mas não jogue sua ideia fora!
Errar é bom e faz parte... mas não jogue sua ideia fora!
 
Tdc2014 scrum remoto rola ou nao rola
Tdc2014  scrum remoto rola ou  nao rolaTdc2014  scrum remoto rola ou  nao rola
Tdc2014 scrum remoto rola ou nao rola
 
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
 
TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...
TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...
TDC 2017 - Agile Coaching - Resolvendo Problemas Complexos com Método Científ...
 
TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Agile Coaching I How we figured out we had a SRE...
 
Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...
Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...
Do Scrum ao Kanban, passando pelo Scrumban: lições aprendidas do desenvolvime...
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDKTDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
 

Mais de Camilo Lopes

Mitos e verdades startup
Mitos e verdades startupMitos e verdades startup
Mitos e verdades startupCamilo Lopes
 
Usecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do TrocoUsecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do TrocoCamilo Lopes
 
Apresentando Scrum ao cliente
Apresentando Scrum ao clienteApresentando Scrum ao cliente
Apresentando Scrum ao clienteCamilo Lopes
 
ITS de Startup para Startups
ITS  de Startup para StartupsITS  de Startup para Startups
ITS de Startup para StartupsCamilo Lopes
 
Overview about AngularJS Framework
Overview about AngularJS Framework Overview about AngularJS Framework
Overview about AngularJS Framework Camilo Lopes
 
Start-up adotando Scrum
Start-up adotando ScrumStart-up adotando Scrum
Start-up adotando ScrumCamilo Lopes
 
Como ser escritor no brasil
Como ser escritor no brasilComo ser escritor no brasil
Como ser escritor no brasilCamilo Lopes
 
Boas práticas com TDD
Boas práticas com TDD Boas práticas com TDD
Boas práticas com TDD Camilo Lopes
 
Scrum in few minutes
Scrum in few minutesScrum in few minutes
Scrum in few minutesCamilo Lopes
 
Convencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5minConvencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5minCamilo Lopes
 
Guia JEE com Frameworks
Guia JEE com FrameworksGuia JEE com Frameworks
Guia JEE com FrameworksCamilo Lopes
 
Palestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealandPalestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealandCamilo Lopes
 
Guia de Bolso SCJP
Guia de Bolso SCJPGuia de Bolso SCJP
Guia de Bolso SCJPCamilo Lopes
 
Seminario Refatoracao
Seminario RefatoracaoSeminario Refatoracao
Seminario RefatoracaoCamilo Lopes
 

Mais de Camilo Lopes (18)

Mitos e verdades startup
Mitos e verdades startupMitos e verdades startup
Mitos e verdades startup
 
Usecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do TrocoUsecash - Meio de Pagamento através do Troco
Usecash - Meio de Pagamento através do Troco
 
Apresentando Scrum ao cliente
Apresentando Scrum ao clienteApresentando Scrum ao cliente
Apresentando Scrum ao cliente
 
ITS de Startup para Startups
ITS  de Startup para StartupsITS  de Startup para Startups
ITS de Startup para Startups
 
Overview about AngularJS Framework
Overview about AngularJS Framework Overview about AngularJS Framework
Overview about AngularJS Framework
 
Start-up adotando Scrum
Start-up adotando ScrumStart-up adotando Scrum
Start-up adotando Scrum
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
Como ser escritor no brasil
Como ser escritor no brasilComo ser escritor no brasil
Como ser escritor no brasil
 
Boas práticas com TDD
Boas práticas com TDD Boas práticas com TDD
Boas práticas com TDD
 
Mock with Mockito
Mock with MockitoMock with Mockito
Mock with Mockito
 
Scrum in few minutes
Scrum in few minutesScrum in few minutes
Scrum in few minutes
 
Convencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5minConvencendo o cliente usar Scrum 5min
Convencendo o cliente usar Scrum 5min
 
Guia JEE com Frameworks
Guia JEE com FrameworksGuia JEE com Frameworks
Guia JEE com Frameworks
 
Palestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealandPalestra Exchange Program - NewZealand
Palestra Exchange Program - NewZealand
 
Guia de Bolso SCJP
Guia de Bolso SCJPGuia de Bolso SCJP
Guia de Bolso SCJP
 
Certificacao Java
Certificacao JavaCertificacao Java
Certificacao Java
 
Seminario Refatoracao
Seminario RefatoracaoSeminario Refatoracao
Seminario Refatoracao
 
Refactoring
RefactoringRefactoring
Refactoring
 

20 coisas TDD

  • 1. Trilha – Agile TDD e 20 coisas que você precisa saber Camilo Lopes Globalcode – Open4education
  • 2. Quem sou eu? Trabalha com desenvolvimento de software desde 2003. Atualmente Desenvolvedor de Software na ADP Labs, escritor do livro "Guia do exame SCJP" e "Guia Prático JEE com frameworks".Trabalhou na como desenvolvedor de software na IBM e HP Labs em projeto com Cloud computing e Agile. Em breve estará lançando seu livro "TDD na Prática" pela Editora Ciência Moderna. Entrou no mundo Agile em 2010 e ultimamente vem se dedicando aos estudos e experiência em projeto Agile. 2010 2011 Agosto/2012 Globalcode – Open4education
  • 3. TDD – Test Driven Development “Eu diria que TDD é uma forma de testar meu software antes de tê-lo pronto e não apenas criar testes. Com TDD validamos não somente se há um erro de lógica no código, mas também se os requisitos estão bem definidos para que possamos entregar aquilo que é esperado.” Globalcode – Open4education
  • 4. E o que muitos pensam…. Apenas criar unit test; É ter unit test; Que é coisa de desenvolvedor nerd; É algo que só funciona no mundo do Martin Fowler ,Kent Beck etc; TDD = software sem bug. Globalcode – Open4education
  • 5. Será????? Globalcode – Open4education
  • 6. NÃO!! Globalcode – Open4education
  • 7. TDD é… Menor custo para manutenção do software; Melhorar nas estimativas; Legibilidade do código; Design guiado pelo Testes. Globalcode – Open4education
  • 8. Tudo isso afeta… QUALIDADE INTERNA Globalcode – Open4education
  • 9. O que aprendi com TDD nos últimos 2 anos? Globalcode – Open4education
  • 10. Case Projeto Globalcode – Open4education
  • 11. Problemas... Baixa qualidade interna; Crescente número de bugs; Baixa legibilidade no código; Baixa curva de aprendizado; Problemas com estimativas – Entregas. Globalcode – Open4education
  • 12. Como resolver? Globalcode – Open4education
  • 13. TDD Globalcode – Open4education
  • 14. Só um momento… O gerente quer falar… Globalcode – Open4education
  • 15. Isso não vai ser oneroso? Globalcode – Open4education
  • 17. É oneroso... Se o desenvolvedor não entende a técnica; Acredita que design & TDD são separados; Acha que é receita de bolo. Globalcode – Open4education
  • 18. E como evitar? Globalcode – Open4education
  • 19. Percepção Globalcode – Open4education
  • 20. Críticas Globalcode – Open4education
  • 21. Resultado… Globalcode – Open4education
  • 22. Resultado Maior qualidade no código; Entregas mais rápidas; Desenvolvimento ágil; Melhoria nas estimativas. Globalcode – Open4education
  • 23. Já o team NOT TDD Problemas nas estimativas; “O código está feito, falta testar”; Unit test com baixa qualidade; Alta quantidade de bugs. Globalcode – Open4education
  • 24. Lições Aprendidas 20 coisas que você precisa saber… Globalcode – Open4education
  • 25. Lições Aprendidas 1 Coragem: administrar o medo durante a programação. Globalcode – Open4education
  • 26. Lições Aprendidas 2 Adicione um teste antes de qualquer coisa. Globalcode – Open4education
  • 27. Lições Aprendidas 3 Faça uma coisa de cada vez. Globalcode – Open4education
  • 28. Lições Aprendidas 4 Faça o mínimo de trabalho possível para compilar. Globalcode – Open4education
  • 29. Lições Aprendidas 5 Falha é progresso. Globalcode – Open4education
  • 30. Lições Aprendidas 6 Eliminar as duplicações antes de ir para o próximo teste. Globalcode – Open4education
  • 31. Lições Aprendidas 7 TDD não é dar passos pequenos e sim saber dar os passos pequenos. Globalcode – Open4education
  • 32. Lições Aprendidas 8 Quando receber uma barra vermelha inesperada, dê marcha ré. Globalcode – Open4education
  • 33. Lições Aprendidas 9 Rode os testes a cada nova implementação. Só para garantir: o que é óbvio para você, também é óbvio para o computador. Globalcode – Open4education
  • 34. Lições Aprendidas 10 Quando um defeito passar, aprenderemos uma lição de como o teste deveria ter sido escrito e seguiremos em frente (mas reflita antes como fez falhar e aprenda com o erro). Globalcode – Open4education
  • 35. Lições Aprendidas 11 Quanto mais pressão sofrer, busque adicionar mais testes de requisitos na lista TO-DO. Globalcode – Open4education
  • 36. Lições Aprendidas 12 Esqueça literalmente qualquer tipo de refatoração enquanto o sinal não ficar verde. Globalcode – Open4education
  • 37. Lições Aprendidas 13 De tempos em tempos nosso raciocínio falhará, é normal, não estamos lutando pela perfeição, então é hora do break. Globalcode – Open4education
  • 38. Lições Aprendidas 14 Não é pecado fazer um teste funcionar através da duplicação, lembre-se do ciclo TDD. Globalcode – Open4education
  • 39. Lições Aprendidas 15 Não vá para cama até que a duplicação tenha sumido. Globalcode – Open4education
  • 40. Lições Aprendidas 16 Documente o que é significativo, não o projeto. Globalcode – Open4education
  • 41. Lições Aprendidas 17 Escreva testes que exatamente gostaria de ter. Globalcode – Open4education
  • 42. Lições Aprendidas 18 Não interromper o que estamos fazendo, perder o foco pode ser um problema Globalcode – Open4education
  • 43. Lições Aprendidas 19 Está se sentindo inseguro? Troque a marcha, ou seja, não avance. Globalcode – Open4education
  • 44. Lições Aprendidas 20 Não escrever novos testes quando temos uma barra vermelha. Globalcode – Open4education
  • 45. Reflexão “Se você diz que precisa de mais tempo para entregar alguma coisa por que usa TDD, infelizmente você está fazendo algo de errado.” Camilo Lopes Globalcode – Open4education
  • 46. Por onde começar? Globalcode – Open4education
  • 47. Obrigado! www.camilolopes.com @camilolope camilo@camilolopes.com.br Globalcode – Open4education
  • 48. Sorteio??? Globalcode – Open4education