SlideShare una empresa de Scribd logo
1 de 67
Descargar para leer sin conexión
Coding Dojo e TDD

   Alex Tercete Matos

   11 de setembro de 2009
Antes de começar. . .




Grupo de Gestão do Conhecimento              Coding Dojo e Test-driven Development – 2 / 26
Quem sou eu?

       • CEFET/RJ
              − 9o período, Engenharia de Controle e Automação

       • Chemtech
              − 11 meses, Projeto Planta Piloto de Biorreator

       • Interesses
              − Software Livre,   ÆÍ»Ä ÒÙÜ   ,   ÈÝØ ÓÒ


              − Scrum, Extreme Programming (XP), Test-driven
                Development (TDD)

Grupo de Gestão do Conhecimento                      Coding Dojo e Test-driven Development – 3 / 26
Quem sou eu?

       • CEFET/RJ
              − 9o período, Engenharia de Controle e Automação

       • Chemtech
              − 11 meses, Projeto Planta Piloto de Biorreator

       • Interesses
              − Software Livre,   ÆÍ»Ä ÒÙÜ,   ÈÝØ ÓÒ


              − Scrum, Extreme Programming (XP), Test-driven
                Development (TDD)

Grupo de Gestão do Conhecimento                   Coding Dojo e Test-driven Development – 3 / 26
Quem sou eu?

       • CEFET/RJ
              − 9o período, Engenharia de Controle e Automação

       • Chemtech
              − 11 meses, Projeto Planta Piloto de Biorreator

       • Interesses
              − Software Livre,   ÆÍ»Ä ÒÙÜ,   ÈÝØ ÓÒ


              − Scrum, Extreme Programming (XP), Test-driven
                Development (TDD)

Grupo de Gestão do Conhecimento                   Coding Dojo e Test-driven Development – 3 / 26
Coding Dojo
                   (baseado nos slides de Danilo Sato e Rodolfo Carvalho)




Grupo de Gestão do Conhecimento                            Coding Dojo e Test-driven Development – 4 / 26
Motivação



                                  Programadores não
                                       treinam!




Grupo de Gestão do Conhecimento          Coding Dojo e Test-driven Development – 5 / 26
Motivação



                                     Programadores não
                                          treinam!




                                  Por que?

Grupo de Gestão do Conhecimento              Coding Dojo e Test-driven Development – 5 / 26
Origens

       • Kata → Coding Dojo
       • Definição:                ( ØØÔ »»
Ó   Ò Ó ÓºÓÖ )

                  Reunião na qual um grupo de pessoas se junta para trabalhar
                  em um desafio de programação. Eles estão lá para se divertir e,
                  engajados no uso de boas práticas, melhorar suas habilidades.




Grupo de Gestão do Conhecimento                             Coding Dojo e Test-driven Development – 6 / 26
Princípios


       • Aprendizado contínuo

       • Ambiente seguro
              − Não-competitivo

              − Colaborativo

              − Inclusivo

       • Falha e redundância

       • Passos de bebê


Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 7 / 26
Princípios


       • Aprendizado contínuo

       • Ambiente seguro
              − Não-competitivo

              − Colaborativo

              − Inclusivo

       • Falha e redundância

       • Passos de bebê


Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 7 / 26
Princípios


       • Aprendizado contínuo

       • Ambiente seguro
              − Não-competitivo

              − Colaborativo

              − Inclusivo

       • Falha e redundância

       • Passos de bebê


Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 7 / 26
Princípios


       • Aprendizado contínuo

       • Ambiente seguro
              − Não-competitivo

              − Colaborativo

              − Inclusivo

       • Falha e redundância

       • Passos de bebê


Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 7 / 26
Regras gerais




Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 8 / 26
Regras gerais




       • Computador + Projetor




Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 8 / 26
Regras gerais




       • Computador + Projetor
       • Par + Platéia




Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 8 / 26
Regras gerais




       • Computador + Projetor
       • Par + Platéia
       • TDD (vermelho → verde → refatoração)




Grupo de Gestão do Conhecimento           Coding Dojo e Test-driven Development – 8 / 26
Regras gerais




       • Computador + Projetor
       • Par + Platéia
       • TDD (vermelho → verde → refatoração)
       • Todos devem entender


Grupo de Gestão do Conhecimento           Coding Dojo e Test-driven Development – 8 / 26
Regras gerais




       • Computador + Projetor
       • Par + Platéia
       • TDD (vermelho → verde → refatoração)
       • Todos devem entender
       • Sempre começa do zero

Grupo de Gestão do Conhecimento           Coding Dojo e Test-driven Development – 8 / 26
O formato Randori

       • Programação em pares




Grupo de Gestão do Conhecimento   Coding Dojo e Test-driven Development – 9 / 26
O formato Randori

       • Programação em pares
       • Turnos time-boxed (5 a 7 minutos)




Grupo de Gestão do Conhecimento              Coding Dojo e Test-driven Development – 9 / 26
O formato Randori

       • Programação em pares
       • Turnos time-boxed (5 a 7 minutos)
       • Rodízio: após cada turno. . .
              − O co-piloto vira piloto
              − O piloto volta pra platéia
              − Um novo co-piloto é convidado da platéia




Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 9 / 26
O formato Randori

       • Programação em pares
       • Turnos time-boxed (5 a 7 minutos)
       • Rodízio: após cada turno. . .
              − O co-piloto vira piloto
              − O piloto volta pra platéia
              − Um novo co-piloto é convidado da platéia

       • Comentários e críticas somente no verde



Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 9 / 26
O formato Randori

       • Programação em pares
       • Turnos time-boxed (5 a 7 minutos)
       • Rodízio: após cada turno. . .
              − O co-piloto vira piloto
              − O piloto volta pra platéia
              − Um novo co-piloto é convidado da platéia

       • Comentários e críticas somente no verde
       • Silêncio no vermelho

Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 9 / 26
Retrospectiva

       • Ao final de cada sessão
              − O que aprendemos?
              − O que gostamos?
              − O que pode melhorar?
              − Comentários




Grupo de Gestão do Conhecimento        Coding Dojo e Test-driven Development – 10 / 26
Objetivo

       • Praticar
       • Ensinar
       • Aprender
       • Discutir com bases sobre codigo!




Grupo de Gestão do Conhecimento             Coding Dojo e Test-driven Development – 11 / 26
O que não faremos


       • Correr para terminar o problema

       • Resolver problemas “reais”

       • Entrar em flame wars nas discussões

       • Competir com os outros participantes

       • Deixar pessoas sem entender




Grupo de Gestão do Conhecimento             Coding Dojo e Test-driven Development – 12 / 26
O que não faremos


       • Correr para terminar o problema

       • Resolver problemas “reais”

       • Entrar em flame wars nas discussões

       • Competir com os outros participantes

       • Deixar pessoas sem entender




Grupo de Gestão do Conhecimento             Coding Dojo e Test-driven Development – 12 / 26
O que não faremos


       • Correr para terminar o problema

       • Resolver problemas “reais”

       • Entrar em flame wars nas discussões

       • Competir com os outros participantes

       • Deixar pessoas sem entender




Grupo de Gestão do Conhecimento             Coding Dojo e Test-driven Development – 12 / 26
O que não faremos


       • Correr para terminar o problema

       • Resolver problemas “reais”

       • Entrar em flame wars nas discussões

       • Competir com os outros participantes

       • Deixar pessoas sem entender




Grupo de Gestão do Conhecimento             Coding Dojo e Test-driven Development – 12 / 26
O que não faremos


       • Correr para terminar o problema

       • Resolver problemas “reais”

       • Entrar em flame wars nas discussões

       • Competir com os outros participantes

       • Deixar pessoas sem entender




Grupo de Gestão do Conhecimento             Coding Dojo e Test-driven Development – 12 / 26
Podemos. . .


       • Experimentar novas idéias

       • Nos divertir

       • Começar!

              − Coding Dojo Chemtech
                   Segunda-feira, 21 de setembro de 2009 – 17:30-19:00




Grupo de Gestão do Conhecimento                             Coding Dojo e Test-driven Development – 13 / 26
Podemos. . .


       • Experimentar novas idéias

       • Nos divertir

       • Começar!

              − Coding Dojo Chemtech
                   Segunda-feira, 21 de setembro de 2009 – 17:30-19:00




Grupo de Gestão do Conhecimento                             Coding Dojo e Test-driven Development – 13 / 26
Podemos. . .


       • Experimentar novas idéias

       • Nos divertir

       • Começar!

              − Coding Dojo Chemtech
                   Segunda-feira, 21 de setembro de 2009 – 17:30-19:00




Grupo de Gestão do Conhecimento                             Coding Dojo e Test-driven Development – 13 / 26
Test-driven Development
                             (TDD)




Grupo de Gestão do Conhecimento      Coding Dojo e Test-driven Development – 14 / 26
Testes unitários e o framework                    ÜÍÒ Ø




       • Método de verificação e validação do funcionamento de
         pequenas porções de código

       •        : framework que visa facilitar a criação,
            ÜÍÒ Ø

            agrupamento e execução de testes unitários
              − ×× ÖØ ÕÙ Ð×´ Ð Ú        ÕÙ   Ö   Ó´¿µ¸          µ

              − ×× ÖØÌÖÙ ´ÒÙÑ ÖÓ Ô Ö´ µµ

              − ×× ÖØ ÕÙ Ð×´ ÒÚ ÖØ ´³Ø ÜØÓ³µ¸ ³ÓØÜ Ø³µ

              − etc.


Grupo de Gestão do Conhecimento                   Coding Dojo e Test-driven Development – 15 / 26
Testes unitários e o framework                    ÜÍÒ Ø




       • Método de verificação e validação do funcionamento de
         pequenas porções de código

       •        : framework que visa facilitar a criação,
            ÜÍÒ Ø

            agrupamento e execução de testes unitários
              − ×× ÖØ ÕÙ Ð×´ Ð Ú        ÕÙ   Ö   Ó´¿µ¸          µ

              − ×× ÖØÌÖÙ ´ÒÙÑ ÖÓ Ô Ö´ µµ

              − ×× ÖØ ÕÙ Ð×´ ÒÚ ÖØ ´³Ø ÜØÓ³µ¸ ³ÓØÜ Ø³µ

              − etc.


Grupo de Gestão do Conhecimento                   Coding Dojo e Test-driven Development – 15 / 26
Testes unitários e o framework                    ÜÍÒ Ø




       • Método de verificação e validação do funcionamento de
         pequenas porções de código

       •        : framework que visa facilitar a criação,
            ÜÍÒ Ø

            agrupamento e execução de testes unitários
              − ×× ÖØ ÕÙ Ð×´ Ð Ú        ÕÙ   Ö   Ó´¿µ¸          µ

              − ×× ÖØÌÖÙ ´ÒÙÑ ÖÓ Ô Ö´ µµ

              − ×× ÖØ ÕÙ Ð×´ ÒÚ ÖØ ´³Ø ÜØÓ³µ¸ ³ÓØÜ Ø³µ

              − etc.


Grupo de Gestão do Conhecimento                   Coding Dojo e Test-driven Development – 15 / 26
O que é TDD?


       • Técnica de desenvolvimento que estimula o uso
         constante de testes unitários e refatoração

       • Quebra de paradigmas!

              − O teste é escrito antes do código

              − Escrever mais não é desperdício de tempo, é um
                investimento

              − A implementação não é tão importante



Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 16 / 26
O que é TDD?


       • Técnica de desenvolvimento que estimula o uso
         constante de testes unitários e refatoração

       • Quebra de paradigmas!

              − O teste é escrito antes do código

              − Escrever mais não é desperdício de tempo, é um
                investimento

              − A implementação não é tão importante



Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 16 / 26
O que é TDD?


       • Técnica de desenvolvimento que estimula o uso
         constante de testes unitários e refatoração

       • Quebra de paradigmas!

              − O teste é escrito antes do código

              − Escrever mais não é desperdício de tempo, é um
                investimento

              − A implementação não é tão importante



Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 16 / 26
O que é TDD?


       • Técnica de desenvolvimento que estimula o uso
         constante de testes unitários e refatoração

       • Quebra de paradigmas!

              − O teste é escrito antes do código

              − Escrever mais não é desperdício de tempo, é um
                investimento

              − A implementação não é tão importante



Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 16 / 26
Por que desenvolver guiado por testes?

       • Feedback instantâneo sobre falhas de software
              − Falhas descobertas tarde custam muito caro!

       • Ajuda a desenvolver menos, de forma mais simples e
         focada
       • Os testes servem como documentação atualizada do
         funcionamento do código
       • Aumenta a confiança do desenvolvedor na hora de
         refatorar, e evita o problema do “cobertor curto”
       • Atividades mais criativas e menos repetitivas

Grupo de Gestão do Conhecimento                      Coding Dojo e Test-driven Development – 17 / 26
Por que desenvolver guiado por testes?

       • Feedback instantâneo sobre falhas de software
              − Falhas descobertas tarde custam muito caro!

       • Ajuda a desenvolver menos, de forma mais simples e
         focada
       • Os testes servem como documentação atualizada do
         funcionamento do código
       • Aumenta a confiança do desenvolvedor na hora de
         refatorar, e evita o problema do “cobertor curto”
       • Atividades mais criativas e menos repetitivas

Grupo de Gestão do Conhecimento                      Coding Dojo e Test-driven Development – 17 / 26
Por que desenvolver guiado por testes?

       • Feedback instantâneo sobre falhas de software
              − Falhas descobertas tarde custam muito caro!

       • Ajuda a desenvolver menos, de forma mais simples e
         focada
       • Os testes servem como documentação atualizada do
         funcionamento do código
       • Aumenta a confiança do desenvolvedor na hora de
         refatorar, e evita o problema do “cobertor curto”
       • Atividades mais criativas e menos repetitivas

Grupo de Gestão do Conhecimento                      Coding Dojo e Test-driven Development – 17 / 26
Por que desenvolver guiado por testes?

       • Feedback instantâneo sobre falhas de software
              − Falhas descobertas tarde custam muito caro!

       • Ajuda a desenvolver menos, de forma mais simples e
         focada
       • Os testes servem como documentação atualizada do
         funcionamento do código
       • Aumenta a confiança do desenvolvedor na hora de
         refatorar, e evita o problema do “cobertor curto”
       • Atividades mais criativas e menos repetitivas

Grupo de Gestão do Conhecimento                      Coding Dojo e Test-driven Development – 17 / 26
Por que desenvolver guiado por testes?

       • Feedback instantâneo sobre falhas de software
              − Falhas descobertas tarde custam muito caro!

       • Ajuda a desenvolver menos, de forma mais simples e
         focada
       • Os testes servem como documentação atualizada do
         funcionamento do código
       • Aumenta a confiança do desenvolvedor na hora de
         refatorar, e evita o problema do “cobertor curto”
       • Atividades mais criativas e menos repetitivas

Grupo de Gestão do Conhecimento                      Coding Dojo e Test-driven Development – 17 / 26
O ciclo do desenvolvimento guiado por testes
                                                     Repita


          (Re)Escreva
            um teste                        Teste
                                           passou


                                   Veja se ele
                                     falhou

                                   Teste
                                  falhou            Escreva                  Um ou
                                                    código                 mais testes
                                                                            falharam


                                                                  Rode todos
                                                                   os testes

                                                              Todos os
                                                               testes
                                                              passaram                     Refatore


Grupo de Gestão do Conhecimento                                          Coding Dojo e Test-driven Development – 18 / 26
TDD na sua linguagem

       •    Â Ú       →       ÍÒ Ø


       •    ºÆ     Ì    →         ÒÍÒ Ø


       •    ÈÝØ ÓÒ          →      ÙÒ ØØ ×Ø


       •    ÊÙ Ý       →      Ì ×Ø     ÍÒ Ø


       •    ÈÀÈ        →     Ë ÑÔÐ Ì ×Ø


       •    Â Ú ×
Ö ÔØ             →   ×ÍÒ Ø


              −      ÉÙ ÖÝ         →   ÉÍÒ Ø



       • etc.

Grupo de Gestão do Conhecimento                   Coding Dojo e Test-driven Development – 19 / 26
TDD na prática!




Grupo de Gestão do Conhecimento               Coding Dojo e Test-driven Development – 20 / 26
ÈÝØ ÓÒ




       • Sintaxe elegante, simples e clara
       • Multiparadigma (OO, procedural, funcional)
       • Interpretável
       • Tipagem dinâmica, porém forte
       • Estruturas de dados de alto nível
              − tuplas, listas e dicionários

       • Blocos de código são delimitados por endentação


Grupo de Gestão do Conhecimento                Coding Dojo e Test-driven Development – 21 / 26
ÈÝØ ÓÒ




       • Sintaxe elegante, simples e clara
       • Multiparadigma (OO, procedural, funcional)
       • Interpretável
       • Tipagem dinâmica, porém forte
       • Estruturas de dados de alto nível
              − tuplas, listas e dicionários

       • Blocos de código são delimitados por endentação


Grupo de Gestão do Conhecimento                Coding Dojo e Test-driven Development – 21 / 26
ÈÝØ ÓÒ




       • Sintaxe elegante, simples e clara
       • Multiparadigma (OO, procedural, funcional)
       • Interpretável
       • Tipagem dinâmica, porém forte
       • Estruturas de dados de alto nível
              − tuplas, listas e dicionários

       • Blocos de código são delimitados por endentação


Grupo de Gestão do Conhecimento                Coding Dojo e Test-driven Development – 21 / 26
ÈÝØ ÓÒ




       • Sintaxe elegante, simples e clara
       • Multiparadigma (OO, procedural, funcional)
       • Interpretável
       • Tipagem dinâmica, porém forte
       • Estruturas de dados de alto nível
              − tuplas, listas e dicionários

       • Blocos de código são delimitados por endentação


Grupo de Gestão do Conhecimento                Coding Dojo e Test-driven Development – 21 / 26
ÈÝØ ÓÒ




       • Sintaxe elegante, simples e clara
       • Multiparadigma (OO, procedural, funcional)
       • Interpretável
       • Tipagem dinâmica, porém forte
       • Estruturas de dados de alto nível
              − tuplas, listas e dicionários

       • Blocos de código são delimitados por endentação


Grupo de Gestão do Conhecimento                Coding Dojo e Test-driven Development – 21 / 26
ÈÝØ ÓÒ




       • Sintaxe elegante, simples e clara
       • Multiparadigma (OO, procedural, funcional)
       • Interpretável
       • Tipagem dinâmica, porém forte
       • Estruturas de dados de alto nível
              − tuplas, listas e dicionários

       • Blocos de código são delimitados por endentação


Grupo de Gestão do Conhecimento                Coding Dojo e Test-driven Development – 21 / 26
O problema

       • Obter a lista de números primos até um determinado
         valor (ex.: 10 → 2, 3, 5, 7)
       • Crivo de Eratóstenes
              − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Para cada numero, remover seus múltiplos da lista,
                com exceção dele mesmo
                      ∗ 2 → 2, 3, 5, 7, 9
                      ∗ 3 → 2, 3, 5, 7
                      ∗ ...
Grupo de Gestão do Conhecimento                     Coding Dojo e Test-driven Development – 22 / 26
O problema

       • Obter a lista de números primos até um determinado
         valor (ex.: 10 → 2, 3, 5, 7)
       • Crivo de Eratóstenes
              − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Para cada numero, remover seus múltiplos da lista,
                com exceção dele mesmo
                      ∗ 2 → 2, 3, 5, 7, 9
                      ∗ 3 → 2, 3, 5, 7
                      ∗ ...
Grupo de Gestão do Conhecimento                     Coding Dojo e Test-driven Development – 22 / 26
O problema

       • Obter a lista de números primos até um determinado
         valor (ex.: 10 → 2, 3, 5, 7)
       • Crivo de Eratóstenes
              − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Para cada numero, remover seus múltiplos da lista,
                com exceção dele mesmo
                      ∗ 2 → 2, 3, 5, 7, 9
                      ∗ 3 → 2, 3, 5, 7
                      ∗ ...
Grupo de Gestão do Conhecimento                     Coding Dojo e Test-driven Development – 22 / 26
O problema

       • Obter a lista de números primos até um determinado
         valor (ex.: 10 → 2, 3, 5, 7)
       • Crivo de Eratóstenes
              − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Para cada numero, remover seus múltiplos da lista,
                com exceção dele mesmo
                      ∗ 2 → 2, 3, 5, 7, 9
                      ∗ 3 → 2, 3, 5, 7
                      ∗ ...
Grupo de Gestão do Conhecimento                     Coding Dojo e Test-driven Development – 22 / 26
O problema

       • Obter a lista de números primos até um determinado
         valor (ex.: 10 → 2, 3, 5, 7)
       • Crivo de Eratóstenes
              − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10
              − Para cada numero, remover seus múltiplos da lista,
                com exceção dele mesmo
                      ∗ 2 → 2, 3, 5, 7, 9
                      ∗ 3 → 2, 3, 5, 7
                      ∗ ...
Grupo de Gestão do Conhecimento                     Coding Dojo e Test-driven Development – 22 / 26
Considerações finais




Grupo de Gestão do Conhecimento            Coding Dojo e Test-driven Development – 23 / 26
E agora?

       • Seres humanos não gostam de mudanças
              − Mudanças devem ser gradativas

       • Coding Dojo: experimentação sem cobranças!




Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 24 / 26
E agora?

       • Seres humanos não gostam de mudanças
              − Mudanças devem ser gradativas

       • Coding Dojo: experimentação sem cobranças!




Grupo de Gestão do Conhecimento                 Coding Dojo e Test-driven Development – 24 / 26
E agora?

       • Seres humanos não gostam de mudanças
              − Mudanças devem ser gradativas

       • Coding Dojo: experimentação sem cobranças!

                                    Você só sabe o que há
                                  atrás de uma porta depois
                                       que a atravessa!



Grupo de Gestão do Conhecimento                       Coding Dojo e Test-driven Development – 24 / 26
Referências


       • ØØÔ »»
Ó                 Ò Ó ÓºÓÖ »

       • ØØÔ »» Ó ÓÖ ÓºÓÖ », ØØÔ »» Ó Ó×ÔºÓÖ »

       • Test-Driven Development: By Example – Kent Beck

       • ØØÔ »» ÑÔÖÓÚ                غ
ÓѺ Ö»ÜÔ»ÔÖ Ø 
 ×»Ø

       • ØØÔ »» ÙÒ Øº×ÓÙÖ
                ÓÖ   ºÒ Ø» Ó
»        Õ»         Õº ØÑ




Grupo de Gestão do Conhecimento                      Coding Dojo e Test-driven Development – 25 / 26
Obrigado pela presença!




Grupo de Gestão do Conhecimento     Coding Dojo e Test-driven Development – 26 / 26

Más contenido relacionado

La actualidad más candente

Demoiselle Paraguay Dojo 18/01/2012
Demoiselle Paraguay Dojo 18/01/2012Demoiselle Paraguay Dojo 18/01/2012
Demoiselle Paraguay Dojo 18/01/2012Cleverson Sacramento
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosDiego Santos
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 
Palestra: Desafios do desenvolvedor no mercado de trabalho
Palestra: Desafios do desenvolvedor no mercado de trabalhoPalestra: Desafios do desenvolvedor no mercado de trabalho
Palestra: Desafios do desenvolvedor no mercado de trabalhoJanynne Gomes
 
Apresentação Coding Dojo em 10 minutos
Apresentação Coding Dojo em 10 minutosApresentação Coding Dojo em 10 minutos
Apresentação Coding Dojo em 10 minutosVinícius Barros
 
Coding Dojo: uma abordagem teórica e prática
Coding Dojo: uma abordagem teórica e práticaCoding Dojo: uma abordagem teórica e prática
Coding Dojo: uma abordagem teórica e práticaFernando Kenji Kamei
 
O que é Desenvolvimento de Aplicações
O que é Desenvolvimento de AplicaçõesO que é Desenvolvimento de Aplicações
O que é Desenvolvimento de AplicaçõesProfThiagoAAlves
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 

La actualidad más candente (20)

Demoiselle Paraguay Dojo 18/01/2012
Demoiselle Paraguay Dojo 18/01/2012Demoiselle Paraguay Dojo 18/01/2012
Demoiselle Paraguay Dojo 18/01/2012
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores Efetivos
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
Dojo abril
Dojo abrilDojo abril
Dojo abril
 
Palestra: Desafios do desenvolvedor no mercado de trabalho
Palestra: Desafios do desenvolvedor no mercado de trabalhoPalestra: Desafios do desenvolvedor no mercado de trabalho
Palestra: Desafios do desenvolvedor no mercado de trabalho
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Coding Dojo #GuruPI
Coding Dojo #GuruPICoding Dojo #GuruPI
Coding Dojo #GuruPI
 
DojoTuba: Coding Dojo - Tubarão, SC
DojoTuba: Coding Dojo - Tubarão, SCDojoTuba: Coding Dojo - Tubarão, SC
DojoTuba: Coding Dojo - Tubarão, SC
 
Codding dojos
Codding dojosCodding dojos
Codding dojos
 
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + ScrumDDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
 
Apresentação Coding Dojo em 10 minutos
Apresentação Coding Dojo em 10 minutosApresentação Coding Dojo em 10 minutos
Apresentação Coding Dojo em 10 minutos
 
Piadas de CSS e Javascript
Piadas de CSS e JavascriptPiadas de CSS e Javascript
Piadas de CSS e Javascript
 
Coding Dojo: uma abordagem teórica e prática
Coding Dojo: uma abordagem teórica e práticaCoding Dojo: uma abordagem teórica e prática
Coding Dojo: uma abordagem teórica e prática
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
O que é Desenvolvimento de Aplicações
O que é Desenvolvimento de AplicaçõesO que é Desenvolvimento de Aplicações
O que é Desenvolvimento de Aplicações
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 

Similar a Coding Dojo e TDD: aprendizado, prática e discussão de código

Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean DevelopmentCriando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean DevelopmentDaniel Wildt
 
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Daniel Wildt
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...Daniel Wildt
 
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
 
Pós Ruy - 2 e 3 Camadas - Coding Dojo
Pós Ruy - 2 e 3 Camadas - Coding DojoPós Ruy - 2 e 3 Camadas - Coding Dojo
Pós Ruy - 2 e 3 Camadas - Coding DojoCleverson Sacramento
 
Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)elliando dias
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberCamilo Lopes
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkGiuseppe Lopes
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 

Similar a Coding Dojo e TDD: aprendizado, prática e discussão de código (20)

Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean DevelopmentCriando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
Criando um ambiente ágil! Lições aprendidas em XP, Scrum e Lean Development
 
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
Just Java 2006 - Qualidade em Desenvolvimento Java para todos os gostos - Dan...
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Test First, TDD e outros Bichos
Test First, TDD e outros BichosTest First, TDD e outros Bichos
Test First, TDD e outros Bichos
 
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
 
Pós Ruy - 2 e 3 Camadas - Coding Dojo
Pós Ruy - 2 e 3 Camadas - Coding DojoPós Ruy - 2 e 3 Camadas - Coding Dojo
Pós Ruy - 2 e 3 Camadas - Coding Dojo
 
TDC2008 Integração Contínua
TDC2008 Integração ContínuaTDC2008 Integração Contínua
TDC2008 Integração Contínua
 
#safaDojo com Android
#safaDojo com Android#safaDojo com Android
#safaDojo com Android
 
#safaDojo com Android
#safaDojo com Android#safaDojo com Android
#safaDojo com Android
 
Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)Gestão de Projeto de Desenvolvimento Agil(XP)
Gestão de Projeto de Desenvolvimento Agil(XP)
 
Curso Scrum
Curso ScrumCurso Scrum
Curso Scrum
 
Refactoring
RefactoringRefactoring
Refactoring
 
TDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saberTDC 2012 TDD e 20 coisas que você precisa saber
TDC 2012 TDD e 20 coisas que você precisa saber
 
Coding dojo
Coding dojo Coding dojo
Coding dojo
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do framework
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 

Coding Dojo e TDD: aprendizado, prática e discussão de código

  • 1. Coding Dojo e TDD Alex Tercete Matos 11 de setembro de 2009
  • 2. Antes de começar. . . Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 2 / 26
  • 3. Quem sou eu? • CEFET/RJ − 9o período, Engenharia de Controle e Automação • Chemtech − 11 meses, Projeto Planta Piloto de Biorreator • Interesses − Software Livre, ÆÍ»Ä ÒÙÜ , ÈÝØ ÓÒ − Scrum, Extreme Programming (XP), Test-driven Development (TDD) Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 3 / 26
  • 4. Quem sou eu? • CEFET/RJ − 9o período, Engenharia de Controle e Automação • Chemtech − 11 meses, Projeto Planta Piloto de Biorreator • Interesses − Software Livre, ÆÍ»Ä ÒÙÜ, ÈÝØ ÓÒ − Scrum, Extreme Programming (XP), Test-driven Development (TDD) Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 3 / 26
  • 5. Quem sou eu? • CEFET/RJ − 9o período, Engenharia de Controle e Automação • Chemtech − 11 meses, Projeto Planta Piloto de Biorreator • Interesses − Software Livre, ÆÍ»Ä ÒÙÜ, ÈÝØ ÓÒ − Scrum, Extreme Programming (XP), Test-driven Development (TDD) Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 3 / 26
  • 6. Coding Dojo (baseado nos slides de Danilo Sato e Rodolfo Carvalho) Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 4 / 26
  • 7. Motivação Programadores não treinam! Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 5 / 26
  • 8. Motivação Programadores não treinam! Por que? Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 5 / 26
  • 9. Origens • Kata → Coding Dojo • Definição: ( ØØÔ »» Ó Ò Ó ÓºÓÖ ) Reunião na qual um grupo de pessoas se junta para trabalhar em um desafio de programação. Eles estão lá para se divertir e, engajados no uso de boas práticas, melhorar suas habilidades. Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 6 / 26
  • 10. Princípios • Aprendizado contínuo • Ambiente seguro − Não-competitivo − Colaborativo − Inclusivo • Falha e redundância • Passos de bebê Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 7 / 26
  • 11. Princípios • Aprendizado contínuo • Ambiente seguro − Não-competitivo − Colaborativo − Inclusivo • Falha e redundância • Passos de bebê Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 7 / 26
  • 12. Princípios • Aprendizado contínuo • Ambiente seguro − Não-competitivo − Colaborativo − Inclusivo • Falha e redundância • Passos de bebê Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 7 / 26
  • 13. Princípios • Aprendizado contínuo • Ambiente seguro − Não-competitivo − Colaborativo − Inclusivo • Falha e redundância • Passos de bebê Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 7 / 26
  • 14. Regras gerais Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 8 / 26
  • 15. Regras gerais • Computador + Projetor Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 8 / 26
  • 16. Regras gerais • Computador + Projetor • Par + Platéia Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 8 / 26
  • 17. Regras gerais • Computador + Projetor • Par + Platéia • TDD (vermelho → verde → refatoração) Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 8 / 26
  • 18. Regras gerais • Computador + Projetor • Par + Platéia • TDD (vermelho → verde → refatoração) • Todos devem entender Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 8 / 26
  • 19. Regras gerais • Computador + Projetor • Par + Platéia • TDD (vermelho → verde → refatoração) • Todos devem entender • Sempre começa do zero Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 8 / 26
  • 20. O formato Randori • Programação em pares Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 9 / 26
  • 21. O formato Randori • Programação em pares • Turnos time-boxed (5 a 7 minutos) Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 9 / 26
  • 22. O formato Randori • Programação em pares • Turnos time-boxed (5 a 7 minutos) • Rodízio: após cada turno. . . − O co-piloto vira piloto − O piloto volta pra platéia − Um novo co-piloto é convidado da platéia Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 9 / 26
  • 23. O formato Randori • Programação em pares • Turnos time-boxed (5 a 7 minutos) • Rodízio: após cada turno. . . − O co-piloto vira piloto − O piloto volta pra platéia − Um novo co-piloto é convidado da platéia • Comentários e críticas somente no verde Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 9 / 26
  • 24. O formato Randori • Programação em pares • Turnos time-boxed (5 a 7 minutos) • Rodízio: após cada turno. . . − O co-piloto vira piloto − O piloto volta pra platéia − Um novo co-piloto é convidado da platéia • Comentários e críticas somente no verde • Silêncio no vermelho Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 9 / 26
  • 25. Retrospectiva • Ao final de cada sessão − O que aprendemos? − O que gostamos? − O que pode melhorar? − Comentários Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 10 / 26
  • 26. Objetivo • Praticar • Ensinar • Aprender • Discutir com bases sobre codigo! Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 11 / 26
  • 27. O que não faremos • Correr para terminar o problema • Resolver problemas “reais” • Entrar em flame wars nas discussões • Competir com os outros participantes • Deixar pessoas sem entender Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 12 / 26
  • 28. O que não faremos • Correr para terminar o problema • Resolver problemas “reais” • Entrar em flame wars nas discussões • Competir com os outros participantes • Deixar pessoas sem entender Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 12 / 26
  • 29. O que não faremos • Correr para terminar o problema • Resolver problemas “reais” • Entrar em flame wars nas discussões • Competir com os outros participantes • Deixar pessoas sem entender Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 12 / 26
  • 30. O que não faremos • Correr para terminar o problema • Resolver problemas “reais” • Entrar em flame wars nas discussões • Competir com os outros participantes • Deixar pessoas sem entender Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 12 / 26
  • 31. O que não faremos • Correr para terminar o problema • Resolver problemas “reais” • Entrar em flame wars nas discussões • Competir com os outros participantes • Deixar pessoas sem entender Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 12 / 26
  • 32. Podemos. . . • Experimentar novas idéias • Nos divertir • Começar! − Coding Dojo Chemtech Segunda-feira, 21 de setembro de 2009 – 17:30-19:00 Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 13 / 26
  • 33. Podemos. . . • Experimentar novas idéias • Nos divertir • Começar! − Coding Dojo Chemtech Segunda-feira, 21 de setembro de 2009 – 17:30-19:00 Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 13 / 26
  • 34. Podemos. . . • Experimentar novas idéias • Nos divertir • Começar! − Coding Dojo Chemtech Segunda-feira, 21 de setembro de 2009 – 17:30-19:00 Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 13 / 26
  • 35. Test-driven Development (TDD) Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 14 / 26
  • 36. Testes unitários e o framework ÜÍÒ Ø • Método de verificação e validação do funcionamento de pequenas porções de código • : framework que visa facilitar a criação, ÜÍÒ Ø agrupamento e execução de testes unitários − ×× ÖØ ÕÙ Ð×´ Ð Ú ÕÙ Ö Ó´¿µ¸ µ − ×× ÖØÌÖÙ ´ÒÙÑ ÖÓ Ô Ö´ µµ − ×× ÖØ ÕÙ Ð×´ ÒÚ ÖØ ´³Ø ÜØÓ³µ¸ ³ÓØÜ Ø³µ − etc. Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 15 / 26
  • 37. Testes unitários e o framework ÜÍÒ Ø • Método de verificação e validação do funcionamento de pequenas porções de código • : framework que visa facilitar a criação, ÜÍÒ Ø agrupamento e execução de testes unitários − ×× ÖØ ÕÙ Ð×´ Ð Ú ÕÙ Ö Ó´¿µ¸ µ − ×× ÖØÌÖÙ ´ÒÙÑ ÖÓ Ô Ö´ µµ − ×× ÖØ ÕÙ Ð×´ ÒÚ ÖØ ´³Ø ÜØÓ³µ¸ ³ÓØÜ Ø³µ − etc. Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 15 / 26
  • 38. Testes unitários e o framework ÜÍÒ Ø • Método de verificação e validação do funcionamento de pequenas porções de código • : framework que visa facilitar a criação, ÜÍÒ Ø agrupamento e execução de testes unitários − ×× ÖØ ÕÙ Ð×´ Ð Ú ÕÙ Ö Ó´¿µ¸ µ − ×× ÖØÌÖÙ ´ÒÙÑ ÖÓ Ô Ö´ µµ − ×× ÖØ ÕÙ Ð×´ ÒÚ ÖØ ´³Ø ÜØÓ³µ¸ ³ÓØÜ Ø³µ − etc. Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 15 / 26
  • 39. O que é TDD? • Técnica de desenvolvimento que estimula o uso constante de testes unitários e refatoração • Quebra de paradigmas! − O teste é escrito antes do código − Escrever mais não é desperdício de tempo, é um investimento − A implementação não é tão importante Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 16 / 26
  • 40. O que é TDD? • Técnica de desenvolvimento que estimula o uso constante de testes unitários e refatoração • Quebra de paradigmas! − O teste é escrito antes do código − Escrever mais não é desperdício de tempo, é um investimento − A implementação não é tão importante Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 16 / 26
  • 41. O que é TDD? • Técnica de desenvolvimento que estimula o uso constante de testes unitários e refatoração • Quebra de paradigmas! − O teste é escrito antes do código − Escrever mais não é desperdício de tempo, é um investimento − A implementação não é tão importante Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 16 / 26
  • 42. O que é TDD? • Técnica de desenvolvimento que estimula o uso constante de testes unitários e refatoração • Quebra de paradigmas! − O teste é escrito antes do código − Escrever mais não é desperdício de tempo, é um investimento − A implementação não é tão importante Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 16 / 26
  • 43. Por que desenvolver guiado por testes? • Feedback instantâneo sobre falhas de software − Falhas descobertas tarde custam muito caro! • Ajuda a desenvolver menos, de forma mais simples e focada • Os testes servem como documentação atualizada do funcionamento do código • Aumenta a confiança do desenvolvedor na hora de refatorar, e evita o problema do “cobertor curto” • Atividades mais criativas e menos repetitivas Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 17 / 26
  • 44. Por que desenvolver guiado por testes? • Feedback instantâneo sobre falhas de software − Falhas descobertas tarde custam muito caro! • Ajuda a desenvolver menos, de forma mais simples e focada • Os testes servem como documentação atualizada do funcionamento do código • Aumenta a confiança do desenvolvedor na hora de refatorar, e evita o problema do “cobertor curto” • Atividades mais criativas e menos repetitivas Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 17 / 26
  • 45. Por que desenvolver guiado por testes? • Feedback instantâneo sobre falhas de software − Falhas descobertas tarde custam muito caro! • Ajuda a desenvolver menos, de forma mais simples e focada • Os testes servem como documentação atualizada do funcionamento do código • Aumenta a confiança do desenvolvedor na hora de refatorar, e evita o problema do “cobertor curto” • Atividades mais criativas e menos repetitivas Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 17 / 26
  • 46. Por que desenvolver guiado por testes? • Feedback instantâneo sobre falhas de software − Falhas descobertas tarde custam muito caro! • Ajuda a desenvolver menos, de forma mais simples e focada • Os testes servem como documentação atualizada do funcionamento do código • Aumenta a confiança do desenvolvedor na hora de refatorar, e evita o problema do “cobertor curto” • Atividades mais criativas e menos repetitivas Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 17 / 26
  • 47. Por que desenvolver guiado por testes? • Feedback instantâneo sobre falhas de software − Falhas descobertas tarde custam muito caro! • Ajuda a desenvolver menos, de forma mais simples e focada • Os testes servem como documentação atualizada do funcionamento do código • Aumenta a confiança do desenvolvedor na hora de refatorar, e evita o problema do “cobertor curto” • Atividades mais criativas e menos repetitivas Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 17 / 26
  • 48. O ciclo do desenvolvimento guiado por testes Repita (Re)Escreva um teste Teste passou Veja se ele falhou Teste falhou Escreva Um ou código mais testes falharam Rode todos os testes Todos os testes passaram Refatore Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 18 / 26
  • 49. TDD na sua linguagem • Â Ú → ÍÒ Ø • ºÆ Ì → ÒÍÒ Ø • ÈÝØ ÓÒ → ÙÒ ØØ ×Ø • ÊÙ Ý → Ì ×Ø ÍÒ Ø • ÈÀÈ → Ë ÑÔÐ Ì ×Ø • Â Ú × Ö ÔØ → ×ÍÒ Ø − ÉÙ ÖÝ → ÉÍÒ Ø • etc. Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 19 / 26
  • 50. TDD na prática! Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 20 / 26
  • 51. ÈÝØ ÓÒ • Sintaxe elegante, simples e clara • Multiparadigma (OO, procedural, funcional) • Interpretável • Tipagem dinâmica, porém forte • Estruturas de dados de alto nível − tuplas, listas e dicionários • Blocos de código são delimitados por endentação Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 21 / 26
  • 52. ÈÝØ ÓÒ • Sintaxe elegante, simples e clara • Multiparadigma (OO, procedural, funcional) • Interpretável • Tipagem dinâmica, porém forte • Estruturas de dados de alto nível − tuplas, listas e dicionários • Blocos de código são delimitados por endentação Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 21 / 26
  • 53. ÈÝØ ÓÒ • Sintaxe elegante, simples e clara • Multiparadigma (OO, procedural, funcional) • Interpretável • Tipagem dinâmica, porém forte • Estruturas de dados de alto nível − tuplas, listas e dicionários • Blocos de código são delimitados por endentação Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 21 / 26
  • 54. ÈÝØ ÓÒ • Sintaxe elegante, simples e clara • Multiparadigma (OO, procedural, funcional) • Interpretável • Tipagem dinâmica, porém forte • Estruturas de dados de alto nível − tuplas, listas e dicionários • Blocos de código são delimitados por endentação Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 21 / 26
  • 55. ÈÝØ ÓÒ • Sintaxe elegante, simples e clara • Multiparadigma (OO, procedural, funcional) • Interpretável • Tipagem dinâmica, porém forte • Estruturas de dados de alto nível − tuplas, listas e dicionários • Blocos de código são delimitados por endentação Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 21 / 26
  • 56. ÈÝØ ÓÒ • Sintaxe elegante, simples e clara • Multiparadigma (OO, procedural, funcional) • Interpretável • Tipagem dinâmica, porém forte • Estruturas de dados de alto nível − tuplas, listas e dicionários • Blocos de código são delimitados por endentação Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 21 / 26
  • 57. O problema • Obter a lista de números primos até um determinado valor (ex.: 10 → 2, 3, 5, 7) • Crivo de Eratóstenes − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10 − Para cada numero, remover seus múltiplos da lista, com exceção dele mesmo ∗ 2 → 2, 3, 5, 7, 9 ∗ 3 → 2, 3, 5, 7 ∗ ... Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 22 / 26
  • 58. O problema • Obter a lista de números primos até um determinado valor (ex.: 10 → 2, 3, 5, 7) • Crivo de Eratóstenes − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10 − Para cada numero, remover seus múltiplos da lista, com exceção dele mesmo ∗ 2 → 2, 3, 5, 7, 9 ∗ 3 → 2, 3, 5, 7 ∗ ... Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 22 / 26
  • 59. O problema • Obter a lista de números primos até um determinado valor (ex.: 10 → 2, 3, 5, 7) • Crivo de Eratóstenes − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10 − Para cada numero, remover seus múltiplos da lista, com exceção dele mesmo ∗ 2 → 2, 3, 5, 7, 9 ∗ 3 → 2, 3, 5, 7 ∗ ... Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 22 / 26
  • 60. O problema • Obter a lista de números primos até um determinado valor (ex.: 10 → 2, 3, 5, 7) • Crivo de Eratóstenes − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10 − Para cada numero, remover seus múltiplos da lista, com exceção dele mesmo ∗ 2 → 2, 3, 5, 7, 9 ∗ 3 → 2, 3, 5, 7 ∗ ... Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 22 / 26
  • 61. O problema • Obter a lista de números primos até um determinado valor (ex.: 10 → 2, 3, 5, 7) • Crivo de Eratóstenes − Gerar lista → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 − Remover 0 e 1 → 2, 3, 4, 5, 6, 7, 8, 9, 10 − Para cada numero, remover seus múltiplos da lista, com exceção dele mesmo ∗ 2 → 2, 3, 5, 7, 9 ∗ 3 → 2, 3, 5, 7 ∗ ... Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 22 / 26
  • 62. Considerações finais Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 23 / 26
  • 63. E agora? • Seres humanos não gostam de mudanças − Mudanças devem ser gradativas • Coding Dojo: experimentação sem cobranças! Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 24 / 26
  • 64. E agora? • Seres humanos não gostam de mudanças − Mudanças devem ser gradativas • Coding Dojo: experimentação sem cobranças! Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 24 / 26
  • 65. E agora? • Seres humanos não gostam de mudanças − Mudanças devem ser gradativas • Coding Dojo: experimentação sem cobranças! Você só sabe o que há atrás de uma porta depois que a atravessa! Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 24 / 26
  • 66. Referências • ØØÔ »» Ó Ò Ó ÓºÓÖ » • ØØÔ »» Ó ÓÖ ÓºÓÖ », ØØÔ »» Ó Ó×ÔºÓÖ » • Test-Driven Development: By Example – Kent Beck • ØØÔ »» ÑÔÖÓÚ Øº ÓѺ Ö»ÜÔ»ÔÖ Ø ×»Ø • ØØÔ »» ÙÒ Øº×ÓÙÖ ÓÖ ºÒ Ø» Ó » Õ» Õº ØÑ Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 25 / 26
  • 67. Obrigado pela presença! Grupo de Gestão do Conhecimento Coding Dojo e Test-driven Development – 26 / 26