Test-Driven Development                              ... undOliver Klee, 27.-28.08.2011   mehr
Unit-Tests?
Manuelles Testen ist mühsam
AutomatisierteTests sindschnell
Unit-Tests für dieRealty-Manager-   Extension
mehr als1600 Tests
in weniger als 60 Sekunden
Sicher sein, dass derCode das Richtige tut
Verhindern, dass deineÄnderungen etwas anderes           kaputt machen
Verhindern,         dass andere Leutedeinen Code kaputtmachen
Auch bei komplexen Projekten         nichts kaputt machen
Baue ein   Sicherheitsnetz            fürs Refactoring
Grün fühlt sich   gut                   an!
Grün fühlt sich   gut                   an!
Kenne    deineWerkzeuge
Die phpunit-Extensionbringt alles Wichtige mit
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket)
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket) Testrunner (Back-end-   Modul)
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket) Testrunner      Testrunner (...
Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)  PHPUnit (PEAR-Paket)  Testing-Framework für FE & ...
Treffen sichzwei Tests ...
Test   Treffen sich       zwei Tests ...
Test      Treffen sichAssertion   zwei Tests ...
Test      Treffen sichAssertion   zwei Tests ...  Test  Test
Test      Treffen sichAssertion   zwei Tests ...  Test  TestTestcase
Test      Treffen sichAssertion   zwei Tests ...  Test  TestTestcaseTestcase
Test       Treffen sichAssertion    zwei Tests ...  Test  TestTestcaseTestcase Testsuite
Benutze   aussagekräftige                    Unit-Test-   Namen
Benutze   aussagekräftige                          Unit-Test-   NamenBenenne das Verhalten.             classCanBeInstanti...
Benutze   aussagekräftige                          Unit-Test-   NamenBenenne das Verhalten.             classCanBeInstanti...
Benutze   aussagekräftige                                Unit-Test-   Namen Benenne das  Verhalten.                  class...
Benutze   aussagekräftige                                Unit-Test-   Namen Benenne das  Verhalten.                  class...
Benutze   aussagekräftige                                Unit-Test-   Namen Benenne das  Verhalten.                  class...
Benutze   aussagekräftige                                Unit-Test-   Namen Benenne das  Verhalten.                  class...
Lebenszyklus Tests           eines
Lebenszyklus Tests           eines
Lebenszyklus Tests            eines           new FooTest();
Lebenszyklus Tests            eines           new FooTest();
Lebenszyklus Tests            eines           new FooTest();                    setUp();
Lebenszyklus Tests            eines           new FooTest();                    setUp();           /** @test */           ...
Lebenszyklus Tests            eines           new FooTest();                    setUp();           /** @test */           ...
Lebenszyklus Tests            eines           new FooTest();                    setUp();           /** @test */           ...
Lebenszyklus Tests            eines           new FooTest();                    setUp();           /** @test */           ...
Lebenszyklus Tests            eines           new FooTest();                    setUp();           /** @test */           ...
Schreibe   zuerst   den   Test
Schreibe   zuerst   den   Test
Schreibe   zuerst   den   Test        Test     schreiben
Schreibe   zuerst   den   Test        Test     schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben                             refactoren
Schreibe   zuerst   den   Test        Test       Code     schreiben   schreiben                             refactoren
Es gibtkleine und große              Tests
Unit-Tests sind    klein und schnell
Integrationstests testen      das große Ganze
Automatisierte Klick-Tests testen die Außenansicht
Automatisierte Klick-Tests testen die Außenansicht                  Selenium
Blackbox-Tests      testen         das   nach außen Sichtbare
Whitebox-Tests    testen                  wie genau es        innen funktioniert
Code Review:    4-Augen-      Prinzip
Mozilla setzt auf  doppelte Kontrolle
Mozilla setzt auf  doppelte KontrollePatch
Mozilla setzt auf  doppelte KontrollePatch        Bugtracker
Mozilla setzt auf  doppelte Kontrolle                      Peer-Patch                Review        Bugtracker
Mozilla setzt auf  doppelte Kontrolle        nicht okay                      Peer-Patch                Review        Bugtr...
Mozilla setzt auf  doppelte Kontrolle        nicht okay                      Peer-   so okayPatch                Review   ...
Mozilla setzt auf  doppelte Kontrolle        nicht okay                      Peer-   so okayPatch                Review   ...
Mozilla setzt auf  doppelte Kontrolle        nicht okay                      Peer-   so okayPatch                Review   ...
Mozilla setzt auf  doppelte Kontrolle        nicht okay                      Peer-   so okayPatch                Review   ...
Mozilla setzt auf  doppelte Kontrolle        nicht okay                         Approval                      Peer-   so o...
Mozilla setzt auf  doppelte Kontrolle                         nicht okay        nicht okay                         Approva...
Mozilla setzt auf  doppelte Kontrolle                         nicht okay                                           okay   ...
Mozilla setzt auf  doppelte Kontrolle                                                 Checkin                         nich...
oliverklee.de                      reichen     4 Augen        nicht okay                      Peer-   so okayPatch        ...
oliverklee.de                      reichen     4 Augen        nicht okay                      Peer-   so okay       Checki...
Das TYPO3-Core -Team          stimmt ab
Das TYPO3-Core -Team              stimmt abPatch
Das TYPO3-Core -Team                     stimmt ab        BugtrackerPatch        Newsgroup
Das TYPO3-Core -Team                           stimmt ab        Bugtracker   Diskussion inPatch                Newsgroup, ...
Das TYPO3-Core -Team                           stimmt ab   Überarbeitungsbedarf        Bugtracker   Diskussion inPatch    ...
Das TYPO3-Core -Team                           stimmt ab   Überarbeitungsbedarf                     Diskussion in   mehr +...
Das TYPO3-Core -Team                           stimmt ab   Überarbeitungsbedarf      mindestens                           ...
Das TYPO3-Core -Team                           stimmt ab                                          Checkin   Überarbeitungs...
Pair-Programmingist ständigerReview
Pair-Programmingist ständigerReview        ... und     ständige    Schulung
Versionskontrolle   ist deine Rettung
Branches erlaubenparallele Versionen
Üblich: Der Trunk ist die„Bleeding Edge“
Üblich: Der Trunk ist die„Bleeding Edge“        Trunk
Üblich: Der Trunk ist die„Bleeding Edge“        Trunk                 Fe                    atu                        re
Üblich: Der Trunk ist die„Bleeding Edge“                 Milestone 4        Trunk                 Fe                    at...
Üblich: Der Trunk ist die„Bleeding Edge“                 Milestone 4        Trunk                 Fe          Bu          ...
Üblich: Der Trunk ist die„Bleeding Edge“                 Milestone 4        Trunk                 Fe          Bu       Fe ...
Üblich: Der Trunk ist die„Bleeding Edge“                  Milestone 4        Trunk                  Fe          Bu       F...
Üblich: Der Trunk ist die„Bleeding Edge“                   Milestone 4        Trunk                   Fe          Bu      ...
Üblich: Der Trunk ist die„Bleeding Edge“                   Milestone 4        Trunk                   Fe          Bu      ...
Üblich: Der Trunk ist die„Bleeding Edge“                   Milestone 4        Trunk                   Fe          Bu      ...
Üblich: Der Trunk ist die„Bleeding Edge“                   Milestone 4        Trunk                   Fe          Bu      ...
Üblich: Der Trunk ist die„Bleeding Edge“                   Milestone 4        Trunk                   Fe          Bu      ...
Branches für Experimente             (eher selten)
Branches für Experimente             (eher selten)            tu re      fix      tu re         Fea        Bug     FeaTrunk
Branches für Experimente              (eher selten)             tu re      fix      tu re          Fea        Bug     Fea T...
Branches für Experimente              (eher selten)                      tu re       fix      tu re                   Fea  ...
Branches für Experimente              (eher selten)                      tu re       fix      tu re                   Fea  ...
ContinuousIntegration
ContinuousIntegration    =
ContinuousIntegration     = öfter maleinchecken
Der Continuous-Integration-Server               überwacht den Code     Checkin                            Repository (SVN)
Der Continuous-Integration-Server               überwacht den Code     Checkin                      k                  -Ho...
Der Continuous-Integration-Server                überwacht den Code     Checkin                        k                  ...
Der Continuous-Integration-Server                überwacht den Code     Checkin                        k                  ...
Der Continuous-Integration-Server                überwacht den Code     Checkin                        k                  ...
Der Continuous-Integration-Server                überwacht den Code     Checkin                        k                  ...
Test-Driven Development ... und mehr
Test-Driven Development ... und mehr
Nächste SlideShare
Wird geladen in …5
×

Test-Driven Development ... und mehr

2.104 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Test-Driven Development ... und mehr

  1. 1. Test-Driven Development ... undOliver Klee, 27.-28.08.2011 mehr
  2. 2. Unit-Tests?
  3. 3. Manuelles Testen ist mühsam
  4. 4. AutomatisierteTests sindschnell
  5. 5. Unit-Tests für dieRealty-Manager- Extension
  6. 6. mehr als1600 Tests
  7. 7. in weniger als 60 Sekunden
  8. 8. Sicher sein, dass derCode das Richtige tut
  9. 9. Verhindern, dass deineÄnderungen etwas anderes kaputt machen
  10. 10. Verhindern, dass andere Leutedeinen Code kaputtmachen
  11. 11. Auch bei komplexen Projekten nichts kaputt machen
  12. 12. Baue ein Sicherheitsnetz fürs Refactoring
  13. 13. Grün fühlt sich gut an!
  14. 14. Grün fühlt sich gut an!
  15. 15. Kenne deineWerkzeuge
  16. 16. Die phpunit-Extensionbringt alles Wichtige mit
  17. 17. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension)
  18. 18. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket)
  19. 19. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket) Testrunner (Back-end- Modul)
  20. 20. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket) Testrunner Testrunner (Back-end- (Kommandozeilen- Modul) Modul)
  21. 21. Die phpunit-Extensionbringt alles Wichtige mitphpunit (TYPO3-Extension) PHPUnit (PEAR-Paket) Testing-Framework für FE & DB Testrunner Testrunner (Back-end- (Kommandozeilen- Modul) Modul)
  22. 22. Treffen sichzwei Tests ...
  23. 23. Test Treffen sich zwei Tests ...
  24. 24. Test Treffen sichAssertion zwei Tests ...
  25. 25. Test Treffen sichAssertion zwei Tests ... Test Test
  26. 26. Test Treffen sichAssertion zwei Tests ... Test TestTestcase
  27. 27. Test Treffen sichAssertion zwei Tests ... Test TestTestcaseTestcase
  28. 28. Test Treffen sichAssertion zwei Tests ... Test TestTestcaseTestcase Testsuite
  29. 29. Benutze aussagekräftige Unit-Test- Namen
  30. 30. Benutze aussagekräftige Unit-Test- NamenBenenne das Verhalten. classCanBeInstantiated
  31. 31. Benutze aussagekräftige Unit-Test- NamenBenenne das Verhalten. classCanBeInstantiated Nenne die Methode. setTitleSetsTitle
  32. 32. Benutze aussagekräftige Unit-Test- Namen Benenne das Verhalten. classCanBeInstantiated Nenne die Methode. setTitleSetsTitle Nenne die setSizeWithZeroThrowsExceptionVorbedingungen. hasTitleForEmptyTitleReturnsFalse
  33. 33. Benutze aussagekräftige Unit-Test- Namen Benenne das Verhalten. classCanBeInstantiated Nenne die Methode. setTitleSetsTitle Nenne die setSizeWithZeroThrowsExceptionVorbedingungen. hasTitleForEmptyTitleReturnsFalse Benutze nicht „works“ oder „correctly“.
  34. 34. Benutze aussagekräftige Unit-Test- Namen Benenne das Verhalten. classCanBeInstantiated Nenne die Methode. setTitleSetsTitle Nenne die setSizeWithZeroThrowsExceptionVorbedingungen. hasTitleForEmptyTitleReturnsFalse Benutze nicht „works“ oder measureFrubbleWorksCorrectly „correctly“.
  35. 35. Benutze aussagekräftige Unit-Test- Namen Benenne das Verhalten. classCanBeInstantiated Nenne die Methode. setTitleSetsTitle Nenne die setSizeWithZeroThrowsExceptionVorbedingungen. hasTitleForEmptyTitleReturnsFalse Benutze nicht „works“ oder measureFrubbleWorksCorrectly „correctly“.
  36. 36. Lebenszyklus Tests eines
  37. 37. Lebenszyklus Tests eines
  38. 38. Lebenszyklus Tests eines new FooTest();
  39. 39. Lebenszyklus Tests eines new FooTest();
  40. 40. Lebenszyklus Tests eines new FooTest(); setUp();
  41. 41. Lebenszyklus Tests eines new FooTest(); setUp(); /** @test */ lifeIsGood();
  42. 42. Lebenszyklus Tests eines new FooTest(); setUp(); /** @test */ lifeIsGood();
  43. 43. Lebenszyklus Tests eines new FooTest(); setUp(); /** @test */ lifeIsGood(); tearDown();
  44. 44. Lebenszyklus Tests eines new FooTest(); setUp(); /** @test */ lifeIsGood(); tearDown();
  45. 45. Lebenszyklus Tests eines new FooTest(); setUp(); /** @test */ lifeIsGood(); tearDown();
  46. 46. Schreibe zuerst den Test
  47. 47. Schreibe zuerst den Test
  48. 48. Schreibe zuerst den Test Test schreiben
  49. 49. Schreibe zuerst den Test Test schreiben
  50. 50. Schreibe zuerst den Test Test Code schreiben schreiben
  51. 51. Schreibe zuerst den Test Test Code schreiben schreiben
  52. 52. Schreibe zuerst den Test Test Code schreiben schreiben
  53. 53. Schreibe zuerst den Test Test Code schreiben schreiben refactoren
  54. 54. Schreibe zuerst den Test Test Code schreiben schreiben refactoren
  55. 55. Es gibtkleine und große Tests
  56. 56. Unit-Tests sind klein und schnell
  57. 57. Integrationstests testen das große Ganze
  58. 58. Automatisierte Klick-Tests testen die Außenansicht
  59. 59. Automatisierte Klick-Tests testen die Außenansicht Selenium
  60. 60. Blackbox-Tests testen das nach außen Sichtbare
  61. 61. Whitebox-Tests testen wie genau es innen funktioniert
  62. 62. Code Review: 4-Augen- Prinzip
  63. 63. Mozilla setzt auf doppelte Kontrolle
  64. 64. Mozilla setzt auf doppelte KontrollePatch
  65. 65. Mozilla setzt auf doppelte KontrollePatch Bugtracker
  66. 66. Mozilla setzt auf doppelte Kontrolle Peer-Patch Review Bugtracker
  67. 67. Mozilla setzt auf doppelte Kontrolle nicht okay Peer-Patch Review Bugtracker
  68. 68. Mozilla setzt auf doppelte Kontrolle nicht okay Peer- so okayPatch Review Bugtracker
  69. 69. Mozilla setzt auf doppelte Kontrolle nicht okay Peer- so okayPatch Review Bugtracker okay, aber mit Änderungen
  70. 70. Mozilla setzt auf doppelte Kontrolle nicht okay Peer- so okayPatch Review Bugtracker okay, aber mit Änderungen überarbeiteter Patch
  71. 71. Mozilla setzt auf doppelte Kontrolle nicht okay Peer- so okayPatch Review Bugtracker okay, aber mit Änderungen überarbeiteter Patch
  72. 72. Mozilla setzt auf doppelte Kontrolle nicht okay Approval Peer- so okay vomPatch Review Module- Bugtracker Owner okay, aber mit Änderungen überarbeiteter Patch
  73. 73. Mozilla setzt auf doppelte Kontrolle nicht okay nicht okay Approval Peer- so okay vomPatch Review Module- Bugtracker Owner okay, aber mit Änderungen überarbeiteter Patch
  74. 74. Mozilla setzt auf doppelte Kontrolle nicht okay okay nicht okay Approval Peer- so okay vomPatch Review Module- Bugtracker Owner okay, aber mit Änderungen überarbeiteter Patch
  75. 75. Mozilla setzt auf doppelte Kontrolle Checkin nicht okay okay nicht okay Approval Peer- so okay vomPatch Review Module- Bugtracker Owner okay, aber mit Änderungen überarbeiteter Patch
  76. 76. oliverklee.de reichen 4 Augen nicht okay Peer- so okayPatch Review Bugtracker okay, aber mit Änderungen überarbeiteter Patch
  77. 77. oliverklee.de reichen 4 Augen nicht okay Peer- so okay CheckinPatch Review Bugtracker okay, aber mit Änderungen überarbeiteter Patch
  78. 78. Das TYPO3-Core -Team stimmt ab
  79. 79. Das TYPO3-Core -Team stimmt abPatch
  80. 80. Das TYPO3-Core -Team stimmt ab BugtrackerPatch Newsgroup
  81. 81. Das TYPO3-Core -Team stimmt ab Bugtracker Diskussion inPatch Newsgroup, Newsgroup +1 oder -1
  82. 82. Das TYPO3-Core -Team stimmt ab Überarbeitungsbedarf Bugtracker Diskussion inPatch Newsgroup, Newsgroup +1 oder -1
  83. 83. Das TYPO3-Core -Team stimmt ab Überarbeitungsbedarf Diskussion in mehr +1 Bugtracker als -1Patch Newsgroup, Newsgroup +1 oder -1
  84. 84. Das TYPO3-Core -Team stimmt ab Überarbeitungsbedarf mindestens ein +1 vom Core-Team Diskussion in mehr +1 Bugtracker als -1Patch Newsgroup, Newsgroup +1 oder -1
  85. 85. Das TYPO3-Core -Team stimmt ab Checkin Überarbeitungsbedarf mindestens ein +1 vom Core-Team Diskussion in mehr +1 Bugtracker als -1Patch Newsgroup, Newsgroup +1 oder -1
  86. 86. Pair-Programmingist ständigerReview
  87. 87. Pair-Programmingist ständigerReview ... und ständige Schulung
  88. 88. Versionskontrolle ist deine Rettung
  89. 89. Branches erlaubenparallele Versionen
  90. 90. Üblich: Der Trunk ist die„Bleeding Edge“
  91. 91. Üblich: Der Trunk ist die„Bleeding Edge“ Trunk
  92. 92. Üblich: Der Trunk ist die„Bleeding Edge“ Trunk Fe atu re
  93. 93. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe atu re
  94. 94. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu atu gfi re x
  95. 95. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu Fe atu gfi atu re x re
  96. 96. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu Fe Br atu gfi atu an re x re ch
  97. 97. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu Fe Br atu gfi atu an re x re ch Bug fix
  98. 98. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu Fe Br atu gfi atu an re x re ch RC 1 Bug fix
  99. 99. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu Fe Br atu gfi atu an re x re ch RC 1 Bug Bug fix fix
  100. 100. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu Fe Br atu gfi atu an re x re ch RC 1 Bug RC 2 Bug fix fix
  101. 101. Üblich: Der Trunk ist die„Bleeding Edge“ Milestone 4 Trunk Fe Bu Fe Br atu gfi atu an re x re ch RC 1 Bug RC 2 V1.0 Bug fix fix
  102. 102. Branches für Experimente (eher selten)
  103. 103. Branches für Experimente (eher selten) tu re fix tu re Fea Bug FeaTrunk
  104. 104. Branches für Experimente (eher selten) tu re fix tu re Fea Bug Fea TrunkBran ch
  105. 105. Branches für Experimente (eher selten) tu re fix tu re Fea Bug Fea Trunk ureBr urean t ure Fea ch t Fea t Fea
  106. 106. Branches für Experimente (eher selten) tu re fix tu re Fea Bug Fea Trunk ureBr urean t ure Fea ch t Fea t Fea
  107. 107. ContinuousIntegration
  108. 108. ContinuousIntegration =
  109. 109. ContinuousIntegration = öfter maleinchecken
  110. 110. Der Continuous-Integration-Server überwacht den Code Checkin Repository (SVN)
  111. 111. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN
  112. 112. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Continuous-Integration- Server
  113. 113. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Hey, eine Änderung! Continuous-Integration- Server
  114. 114. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Hey, eine Änderung! Continuous-Integration- Unit-Tests Server laufen lassen
  115. 115. Der Continuous-Integration-Server überwacht den Code Checkin k -Hoo Repository (SVN) SVN Hey, eine Änderung! Continuous-Integration- Unit-Tests Bericht Server laufen lassen

×