ÁGIL na  PRÁTICA
Uma pesquisa do Departamento de Comércio dos EUA, publicada em 2002, revelou que falhas de software são tão comuns e tão danosas que se estima que causem um prejuízo anual de mais de 60 bilhões de dólares para a economia americana. O estudo também alega que, embora não seja possível remover todos os erros, mais de um terço destes custos poderia ser eliminado caso se utilizasse uma infra-estrutura de testes melhor, que permitisse identificar e remover defeitos mais cedo e de forma mais eficaz. Atualmente, calcula-se que cerca de 50% dos defeitos são encontrados apenas nas fases finais dos projetos, ou após os sistemas começarem a ser utilizados em produção. Testes Igo Coelho  www.igocoelho.com.br
Escreva o teste da implementação ANTES de escrevê-la
Escreva somente código suficiente para o  teste passar e nada além disso
Escreva testes pequenos: teste a menor  quantidade possível de código de cada vez
Escreva testes muito rápidos: não devem  demorar mais do que alguns segundos para serem executados TDD Regras fundamentais do TDD Igo Coelho  www.igocoelho.com.br
Criar um teste
Executar todos os testes da aplicação para  ver o teste falhar
Escrever a implementação testada
Executar os testes para ver se todos est ão OK
Refactoring
Executar os testes novamente para ver se  eles continuam passando TDD Etapas da programação com TDD Igo Coelho  www.igocoelho.com.br
TDD Design Implementação Teste Igo Coelho  www.igocoelho.com.br
TDD Design Implementação Teste Igo Coelho  www.igocoelho.com.br
TDD Design Implementação Teste Teste Igo Coelho  www.igocoelho.com.br
TDD Design Implementação Teste Teste Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
TDD Igo Coelho  www.igocoelho.com.br
Código mais testável Estimula um design melhor
Força que os designs antigos que são pouco  testáveis sejam refatorados Facilita o refactoring
Evita o “overdesign” Só se escreve código suficiente para o teste passar
Evita que o desenvolvedor tente advinhar o futuo Colabora com a documentação TDD Consequências: Igo Coelho  www.igocoelho.com.br
Colabora para o aumento da qualidade dos sistemas
Desenvolvedores ficam mais corajosos e confiantes ao programar!
Software cresce de forma ordenada e com qualidade de design
Software se adapta com mais facilidade a mudanças TDD Conclusões: No início, trabalhar com TDD pode parecer um pouco doloroso, pois temos que fazer o inverso do que estamos acostumados. Mas, como em todo aprendizado,  a dificuldade vem apenas no começo e nos tornamos melhores à medida que praticamos. Pelos problemas que foram descritos no início e o impacto negativo que eles trazem para nós, para nossa indústria e nossos clientes, o esforço certamente é válido! Igo Coelho  www.igocoelho.com.br
Assegure que seja possível executar o  build  e todos os  testes automatizados  do projeto em até dez minutos. Builds automatizados são importantes porque fazem a equipe ganhar tempo e garantem que os passos sejam consistentemente seguidos sempre que são executados. Build de 10 minutos Igo Coelho  www.igocoelho.com.br
Se o build demora demais... Build de 10 minutos A equipe deixará de executá-lo frequentemente
Menos feedback
Erros tendem a se acumular
Aumento do stress da equipe Igo Coelho  www.igocoelho.com.br
Mantenha o build rápido para... Build de 10 minutos Garantir a consistência dos passos
Testes ajudam a detectar falhas mais cedo
Diminuir o stress da equipe Igo Coelho  www.igocoelho.com.br
Para algumas equipes o  build  de dez minutos pode parecer algo distante da realidade. Nesses casos, dez minutos devem ser vistos como um ideal. Quando a equipe possui uma boa base de  testes automatizados , um dos maiores desafios é assegurar que eles executem de forma suficientemente rápida para que o ideal de um  build  de dez minutos seja alcançado. Build de 10 minutos Igo Coelho  www.igocoelho.com.br
É o processo de alteração de um sistema de software de modo que o comportamento observável do código não mude, mas que sua estrutura interna seja melhorada. É uma maneira disciplinada de aperfeiçoar o código que minimiza a chance de introdução de falhas. Em essência, refatorar é melhorar o projeto do código após este ter sido escrito. [Fowler, Refatoracão] Refatoração Igo Coelho  www.igocoelho.com.br
Refatoração Igo Coelho  www.igocoelho.com.br

Ágil na Prática

  • 1.
    ÁGIL na PRÁTICA
  • 2.
    Uma pesquisa doDepartamento de Comércio dos EUA, publicada em 2002, revelou que falhas de software são tão comuns e tão danosas que se estima que causem um prejuízo anual de mais de 60 bilhões de dólares para a economia americana. O estudo também alega que, embora não seja possível remover todos os erros, mais de um terço destes custos poderia ser eliminado caso se utilizasse uma infra-estrutura de testes melhor, que permitisse identificar e remover defeitos mais cedo e de forma mais eficaz. Atualmente, calcula-se que cerca de 50% dos defeitos são encontrados apenas nas fases finais dos projetos, ou após os sistemas começarem a ser utilizados em produção. Testes Igo Coelho www.igocoelho.com.br
  • 3.
    Escreva o testeda implementação ANTES de escrevê-la
  • 4.
    Escreva somente códigosuficiente para o teste passar e nada além disso
  • 5.
    Escreva testes pequenos:teste a menor quantidade possível de código de cada vez
  • 6.
    Escreva testes muitorápidos: não devem demorar mais do que alguns segundos para serem executados TDD Regras fundamentais do TDD Igo Coelho www.igocoelho.com.br
  • 7.
  • 8.
    Executar todos ostestes da aplicação para ver o teste falhar
  • 9.
  • 10.
    Executar os testespara ver se todos est ão OK
  • 11.
  • 12.
    Executar os testesnovamente para ver se eles continuam passando TDD Etapas da programação com TDD Igo Coelho www.igocoelho.com.br
  • 13.
    TDD Design ImplementaçãoTeste Igo Coelho www.igocoelho.com.br
  • 14.
    TDD Design ImplementaçãoTeste Igo Coelho www.igocoelho.com.br
  • 15.
    TDD Design ImplementaçãoTeste Teste Igo Coelho www.igocoelho.com.br
  • 16.
    TDD Design ImplementaçãoTeste Teste Igo Coelho www.igocoelho.com.br
  • 17.
    TDD Igo Coelho www.igocoelho.com.br
  • 18.
    TDD Igo Coelho www.igocoelho.com.br
  • 19.
    TDD Igo Coelho www.igocoelho.com.br
  • 20.
    TDD Igo Coelho www.igocoelho.com.br
  • 21.
    TDD Igo Coelho www.igocoelho.com.br
  • 22.
    TDD Igo Coelho www.igocoelho.com.br
  • 23.
    TDD Igo Coelho www.igocoelho.com.br
  • 24.
    TDD Igo Coelho www.igocoelho.com.br
  • 25.
    TDD Igo Coelho www.igocoelho.com.br
  • 26.
    Código mais testávelEstimula um design melhor
  • 27.
    Força que osdesigns antigos que são pouco testáveis sejam refatorados Facilita o refactoring
  • 28.
    Evita o “overdesign”Só se escreve código suficiente para o teste passar
  • 29.
    Evita que odesenvolvedor tente advinhar o futuo Colabora com a documentação TDD Consequências: Igo Coelho www.igocoelho.com.br
  • 30.
    Colabora para oaumento da qualidade dos sistemas
  • 31.
    Desenvolvedores ficam maiscorajosos e confiantes ao programar!
  • 32.
    Software cresce deforma ordenada e com qualidade de design
  • 33.
    Software se adaptacom mais facilidade a mudanças TDD Conclusões: No início, trabalhar com TDD pode parecer um pouco doloroso, pois temos que fazer o inverso do que estamos acostumados. Mas, como em todo aprendizado, a dificuldade vem apenas no começo e nos tornamos melhores à medida que praticamos. Pelos problemas que foram descritos no início e o impacto negativo que eles trazem para nós, para nossa indústria e nossos clientes, o esforço certamente é válido! Igo Coelho www.igocoelho.com.br
  • 34.
    Assegure que sejapossível executar o build e todos os testes automatizados do projeto em até dez minutos. Builds automatizados são importantes porque fazem a equipe ganhar tempo e garantem que os passos sejam consistentemente seguidos sempre que são executados. Build de 10 minutos Igo Coelho www.igocoelho.com.br
  • 35.
    Se o builddemora demais... Build de 10 minutos A equipe deixará de executá-lo frequentemente
  • 36.
  • 37.
    Erros tendem ase acumular
  • 38.
    Aumento do stressda equipe Igo Coelho www.igocoelho.com.br
  • 39.
    Mantenha o buildrápido para... Build de 10 minutos Garantir a consistência dos passos
  • 40.
    Testes ajudam adetectar falhas mais cedo
  • 41.
    Diminuir o stressda equipe Igo Coelho www.igocoelho.com.br
  • 42.
    Para algumas equipeso build de dez minutos pode parecer algo distante da realidade. Nesses casos, dez minutos devem ser vistos como um ideal. Quando a equipe possui uma boa base de testes automatizados , um dos maiores desafios é assegurar que eles executem de forma suficientemente rápida para que o ideal de um build de dez minutos seja alcançado. Build de 10 minutos Igo Coelho www.igocoelho.com.br
  • 43.
    É o processode alteração de um sistema de software de modo que o comportamento observável do código não mude, mas que sua estrutura interna seja melhorada. É uma maneira disciplinada de aperfeiçoar o código que minimiza a chance de introdução de falhas. Em essência, refatorar é melhorar o projeto do código após este ter sido escrito. [Fowler, Refatoracão] Refatoração Igo Coelho www.igocoelho.com.br
  • 44.
    Refatoração Igo Coelho www.igocoelho.com.br