OTIMIZANDO INTEGRAÇÕES COMTESTES DE COLABORAÇÃO E CONTRATO                                                                ...
TEORIA DAS FILAS   http://www.flickr.com/photos/57665680@N06/5649865356/sizes/l/in/photostream/
TEORIA DAS FILAS“ Dado um processo B, que sucede um   processo A, as vezes, ao executar B,precisamos refazer parte de A. P...
TEORIA DAS FILAS    A     B
TEORIA DAS FILAS    A     B        20%
TEORIA DAS FILAS    B     A            Ciclos            curtos
REVENDO O WATERFALL       http://www.flickr.com/photos/chiaralily/4416226801/sizes/z/in/photostream/
REVENDO O WATERFALL Requisitos              Análise                        Design                             Código      ...
Código   Teste
Código      Teste         Bugs
Teste   Código                 Ciclos                 curtos
TesteDesign                 Código
TesteDesign                          Código         “Não testável”
Teste            Código        Design                          Ciclos                          Curtos
= TDDTeste            Código        Design                          Ciclos                          Curtos
Teste            CódigoAnálise                  Design
Teste            Código Análise                       Design“Não era isso que eu queria”
Teste   CódigoAnálise    Design                    Ciclos                    Curtos
= Agile  Teste   CódigoAnálise    Design                    Ciclos                    Curtos
INTEGRAÇÃO    http://www.edge-ka.com/uploads/Image/BioRails/collaboration.jpg
A   B
Teste   A   Código   B
Teste   A   Código   Teste   B   Código
Teste   A   Código   Teste   B   Código
Teste   A   Código                Teste   B   Código                     Integração
Teste   A   Código                Teste   B   Código                     Integração                     BUGS
WTF?
Teste                 Integração        Código
Teste                         Integração        Código           “quando juntei deu erro”
O QUE?
Teste                Código        Integração                              Ciclos                              curtos
COMO?
TESTES DE COLABORAÇÃO      E CONTRATO    http://www.flickr.com/photos/25143703@N04/2491903629/sizes/m/in/photostream/
COMO FUNCIONA    1       2       34       5       6       7    8               9
COMO FUNCIONA                  C                  o     Testes de    n                  t                      Testes de1 ...
COMO FUNCIONA          Colaboração       Fiz a pergunta certa?                                 51                         ...
COMO FUNCIONA        Contrato  Sou capaz de responder?                            5  Respondo como esperado?
COMO FUNCIONA    Colaboração             Contrato                       C      Fiz a pergunta   o    Sou capaz de         ...
Correspondência   entre testes
EXEMPLO REAL                       The                   Coffee Maker   https://github.com/snit-ram/contract-tests-lab
THE COFFEE MAKER               Water      Led              DispenserCoffeeMaker               Ground               Coffee ...
Init                 Water      Led                Dispenser  CoffeeMaker                 Ground                 Coffee   ...
Init                Init                        Water      Led                       Dispenser  CoffeeMaker               ...
Init                            On                 Water           Led                Dispenser  CoffeeMaker              ...
Fill                 Water      Led                Dispenser  CoffeeMaker                 Ground                 Coffee   ...
Fill                fill                        Water      Led                       Dispenser  CoffeeMaker               ...
Fill                            Off                 Water            Led                Dispenser  CoffeeMaker            ...
Make coffee                 Water      Led                Dispenser  CoffeeMaker                 Ground                 Co...
Make coffeeMakecoffee              Water      Led                   Dispenser     CoffeeMaker                    Ground   ...
Make coffee                        Water      Led            has?       Dispenser  CoffeeMaker                        Grou...
Make coffee                        Water      Led                y/n    Dispenser  CoffeeMaker                        Grou...
Make coffee                   Water      Led                  Dispenser    CoffeeMaker                   Ground           ...
Make coffee                       Water      Led                get   Dispenser  CoffeeMaker                       Ground ...
Make coffee                Give    Water      Led                       Dispenser  CoffeeMaker                        Grou...
Make coffee                has?                    Water      Led                   Dispenser  CoffeeMaker                ...
Make coffee                            On                 Water           Led                Dispenser  CoffeeMaker       ...
Make coffee                   Water      Led                  Dispenser    CoffeeMaker                   Ground           ...
COLABORAÇÃO              has(5)                         WaterCoffeeMaker             Dispenser                         Moc...
COLABORAÇÃO              has(5)                         WaterCoffeeMaker             Dispenser                         Moc...
CONTRATO                 amount=5     has(5)                   Water                  Dispenser  assertTrue()
CONTRATO                 amount=5     has(5)                   Water                  Dispenser  assertTrue()             ...
COLABORAÇÃOget(5)               assertFalse( led.on.called )   Water                                       Led  Dispenser ...
COLABORAÇÃOget(5)               assertFalse( led.on.called )   Water                                       Led  Dispenser ...
CONTRATO         on()                           LedassertTrue( self.is_on )
CONTRATO          on()                            LedassertTrue( self.is_on )          off()                            Le...
POR QUE?
Integração durante o fluxo de TDD
Integração durante o fluxo de TDD   Feedback mais rápido
Integração durante o fluxo de TDD   Feedback mais rápido  Continuous integration
Contratos sólidos
Contratos sólidosReduz bugs / retrabalho
Contratos sólidos Reduz bugs / retrabalhoColaborações transparentes
Contratos sólidos Reduz bugs / retrabalhoColaborações transparentes   Aumenta paralelismo
Reduz testes integrados
Reduz testes integradosSuite mais rápida
Reduz testes integrados    Suite mais rápidaMenos código para manter
Reduz testes integrados    Suite mais rápidaMenos código para manter    Trabalho focado
Outside-in Development
Outside-in Development  Design simples
Outside-in Development  Design simplesCódigo independente
MAY THECONTRACT TESTS  BE WITH YOU   rmartins@yahoo-inc.com               @snit_ram
Otimizando Integrações com testes de Colaboração e Contrato
Upcoming SlideShare
Loading in …5
×

Otimizando Integrações com testes de Colaboração e Contrato

720 views

Published on

Palestra que ministrei no Agile Vale, em 19 de agosto de 2011

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
720
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
28
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Otimizando Integrações com testes de Colaboração e Contrato

  1. 1. OTIMIZANDO INTEGRAÇÕES COMTESTES DE COLABORAÇÃO E CONTRATO @snit_ram http://www.flickr.com/photos/viasualart2011/5941136672/sizes/l/in/photostream/
  2. 2. TEORIA DAS FILAS http://www.flickr.com/photos/57665680@N06/5649865356/sizes/l/in/photostream/
  3. 3. TEORIA DAS FILAS“ Dado um processo B, que sucede um processo A, as vezes, ao executar B,precisamos refazer parte de A. Podemosevitar este retrabalho extraindo parte de B e executando-o antes do processo A ”
  4. 4. TEORIA DAS FILAS A B
  5. 5. TEORIA DAS FILAS A B 20%
  6. 6. TEORIA DAS FILAS B A Ciclos curtos
  7. 7. REVENDO O WATERFALL http://www.flickr.com/photos/chiaralily/4416226801/sizes/z/in/photostream/
  8. 8. REVENDO O WATERFALL Requisitos Análise Design Código Testes Manutenção
  9. 9. Código Teste
  10. 10. Código Teste Bugs
  11. 11. Teste Código Ciclos curtos
  12. 12. TesteDesign Código
  13. 13. TesteDesign Código “Não testável”
  14. 14. Teste Código Design Ciclos Curtos
  15. 15. = TDDTeste Código Design Ciclos Curtos
  16. 16. Teste CódigoAnálise Design
  17. 17. Teste Código Análise Design“Não era isso que eu queria”
  18. 18. Teste CódigoAnálise Design Ciclos Curtos
  19. 19. = Agile Teste CódigoAnálise Design Ciclos Curtos
  20. 20. INTEGRAÇÃO http://www.edge-ka.com/uploads/Image/BioRails/collaboration.jpg
  21. 21. A B
  22. 22. Teste A Código B
  23. 23. Teste A Código Teste B Código
  24. 24. Teste A Código Teste B Código
  25. 25. Teste A Código Teste B Código Integração
  26. 26. Teste A Código Teste B Código Integração BUGS
  27. 27. WTF?
  28. 28. Teste Integração Código
  29. 29. Teste Integração Código “quando juntei deu erro”
  30. 30. O QUE?
  31. 31. Teste Código Integração Ciclos curtos
  32. 32. COMO?
  33. 33. TESTES DE COLABORAÇÃO E CONTRATO http://www.flickr.com/photos/25143703@N04/2491903629/sizes/m/in/photostream/
  34. 34. COMO FUNCIONA 1 2 34 5 6 7 8 9
  35. 35. COMO FUNCIONA C o Testes de n t Testes de1 5 r Colaboração a Contrato t o
  36. 36. COMO FUNCIONA Colaboração Fiz a pergunta certa? 51 Mock Sei tratar a resposta?
  37. 37. COMO FUNCIONA Contrato Sou capaz de responder? 5 Respondo como esperado?
  38. 38. COMO FUNCIONA Colaboração Contrato C Fiz a pergunta o Sou capaz de certa? n responder? t r1 5 a a Sei tratar a t Respondo como o resposta? esperado?
  39. 39. Correspondência entre testes
  40. 40. EXEMPLO REAL The Coffee Maker https://github.com/snit-ram/contract-tests-lab
  41. 41. THE COFFEE MAKER Water Led DispenserCoffeeMaker Ground Coffee Led Dispenser
  42. 42. Init Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser
  43. 43. Init Init Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser Init
  44. 44. Init On Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser On
  45. 45. Fill Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser
  46. 46. Fill fill Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser fill
  47. 47. Fill Off Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser Off
  48. 48. Make coffee Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser
  49. 49. Make coffeeMakecoffee Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser
  50. 50. Make coffee Water Led has? Dispenser CoffeeMaker Ground Coffee Led has? Dispenser
  51. 51. Make coffee Water Led y/n Dispenser CoffeeMaker Ground Coffee Led y/n Dispenser
  52. 52. Make coffee Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenserexception
  53. 53. Make coffee Water Led get Dispenser CoffeeMaker Ground Coffee Led get Dispenser
  54. 54. Make coffee Give Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser Give
  55. 55. Make coffee has? Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser has?
  56. 56. Make coffee On Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser On
  57. 57. Make coffee Water Led Dispenser CoffeeMaker Ground Coffee Led Dispenser coffee
  58. 58. COLABORAÇÃO has(5) WaterCoffeeMaker Dispenser Mock True
  59. 59. COLABORAÇÃO has(5) WaterCoffeeMaker Dispenser Mock True has(5) WaterCoffeeMaker Dispenser Mock False
  60. 60. CONTRATO amount=5 has(5) Water Dispenser assertTrue()
  61. 61. CONTRATO amount=5 has(5) Water Dispenser assertTrue() amount=2 has(5) Water Dispenser assertFalse()
  62. 62. COLABORAÇÃOget(5) assertFalse( led.on.called ) Water Led Dispenser Mockamount=10
  63. 63. COLABORAÇÃOget(5) assertFalse( led.on.called ) Water Led Dispenser Mockamount=10get(5) assertTrue( led.on.called ) Water Led Dispenser Mockamount=5
  64. 64. CONTRATO on() LedassertTrue( self.is_on )
  65. 65. CONTRATO on() LedassertTrue( self.is_on ) off() LedassertFalse( self.is_on )
  66. 66. POR QUE?
  67. 67. Integração durante o fluxo de TDD
  68. 68. Integração durante o fluxo de TDD Feedback mais rápido
  69. 69. Integração durante o fluxo de TDD Feedback mais rápido Continuous integration
  70. 70. Contratos sólidos
  71. 71. Contratos sólidosReduz bugs / retrabalho
  72. 72. Contratos sólidos Reduz bugs / retrabalhoColaborações transparentes
  73. 73. Contratos sólidos Reduz bugs / retrabalhoColaborações transparentes Aumenta paralelismo
  74. 74. Reduz testes integrados
  75. 75. Reduz testes integradosSuite mais rápida
  76. 76. Reduz testes integrados Suite mais rápidaMenos código para manter
  77. 77. Reduz testes integrados Suite mais rápidaMenos código para manter Trabalho focado
  78. 78. Outside-in Development
  79. 79. Outside-in Development Design simples
  80. 80. Outside-in Development Design simplesCódigo independente
  81. 81. MAY THECONTRACT TESTS BE WITH YOU rmartins@yahoo-inc.com @snit_ram

×