Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Test-Driven Development ... und mehr

2,293 views

Published on

Published in: Technology
  • Be the first to comment

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

×