SlideShare une entreprise Scribd logo
1  sur  128
Test-Driven Development




                          ... und
Oliver Klee, 21.06.2010   mehr
Unit-
Tests?
Manuelles Testen ist mühsam
Automatisierte
Tests sind
schnell
Unit-Tests für die
Realty-Manager-
   Extension
mehr als
1600 Tests
in weniger als
 60 Sekunden
Sicher sein, dass der
Code das Richtige tut
Verhindern, dass deine
Änderungen etwas anderes
           kaputt machen
Auch bei komplexen Projekten
         nichts kaputt machen
Grün fühlt sich   gut
                   an!
Grün fühlt sich   gut
                   an!
Kenne
    deine
Werkzeuge
Die phpunit-Extension
bringt alles Wichtige mit
Die phpunit-Extension
bringt alles Wichtige mit
phpunit (TYPO3-Extension)
Die phpunit-Extension
bringt alles Wichtige mit
phpunit (TYPO3-Extension)
  PHPUnit (PEAR-Paket)
Die phpunit-Extension
bringt alles Wichtige mit
phpunit (TYPO3-Extension)
  PHPUnit (PEAR-Paket)

 Testrunner
 (Back-end-
   Modul)
Die phpunit-Extension
bringt alles Wichtige mit
phpunit (TYPO3-Extension)
  PHPUnit (PEAR-Paket)

 Testrunner      Testrunner
 (Back-end-   (Kommandozeilen-
   Modul)          Modul)
Treffen sich
zwei Tests ...
Test   Treffen sich
       zwei Tests ...
Test      Treffen sich
Assertion   zwei Tests ...
Test      Treffen sich
Assertion   zwei Tests ...
  Test
  Test
Test      Treffen sich
Assertion   zwei Tests ...
  Test
  Test
Testcase
Test      Treffen sich
Assertion   zwei Tests ...
  Test
  Test
Testcase
Testcase
Test       Treffen sich
Assertion    zwei Tests ...
  Test
  Test
Testcase
Testcase
 Testsuite
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
Versionskontrolle
   ist deine Rettung
Branches erlauben
parallele 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
                    atur
                        e
Üblich: Der Trunk ist die
„Bleeding Edge“
                 Milestone 4
        Trunk
                 Fe
                    atur
                        e
Üblich: Der Trunk ist die
„Bleeding Edge“
                 Milestone 4
        Trunk
                 Fe         Bu
                    atur       gfi
                        e        x
Üblich: Der Trunk ist die
„Bleeding Edge“
                 Milestone 4
        Trunk
                 Fe         Bu       Fe
                    atur       gfi       atur
                        e        x          e
Üblich: Der Trunk ist die
„Bleeding Edge“
                  Milestone 4
        Trunk
                  Fe         Bu       Fe
        Br           atur       gfi       atur
          an             e        x          e
             ch
Üblich: Der Trunk ist die
„Bleeding Edge“
                   Milestone 4
        Trunk
                   Fe          Bu       Fe
        Br            a tur      gfi        atur
          an               e        x          e
             ch
                  Bug
                   fix
Üblich: Der Trunk ist die
„Bleeding Edge“
                   Milestone 4
        Trunk
                   Fe          Bu       Fe
        Br            a tur      gfi        atur
          an               e        x          e
             ch

                    RC 1
                  Bug
                   fix
Üblich: Der Trunk ist die
„Bleeding Edge“
                   Milestone 4
        Trunk
                   Fe          Bu        Fe
        Br            a tur      gfi         atur
          an               e        x           e
             ch

                    RC 1
                  Bug




                                 Bug
                   fix




                                    fix
Üblich: Der Trunk ist die
„Bleeding Edge“
                   Milestone 4
        Trunk
                   Fe          Bu        Fe
        Br            a tur      gfi         atur
          an               e        x           e
             ch

                    RC 1
                  Bug
                               RC 2



                                 Bug
                   fix




                                    fix
Üblich: Der Trunk ist die
„Bleeding Edge“
                   Milestone 4
        Trunk
                   Fe          Bu        Fe
        Br            a tur      gfi         atur
          an               e        x           e
             ch

                    RC 1
                  Bug
                               RC 2 V1.0



                                 Bug
                   fix




                                    fix
Branches für Experimente
             (eher selten)
Branches für Experimente
             (eher selten)

            tu re       fix      tu re
         Fea        B ug     Fea
Trunk
Branches für Experimente
              (eher selten)

             tu re       fix      tu re
          Fea        B ug     Fea
 Trunk
Br
an
  ch
Branches für Experimente
              (eher selten)

                       tu re        fix      tu re
                   Fea          B ug     Fea
 Trunk
          ure
Br




                 ure
an



            t




                          ure
         Fea
  ch




                   t
                Fea


                            t
                         Fea
Branches für Experimente
              (eher selten)

                       tu re        fix      tu re
                   Fea          B ug     Fea
 Trunk
          ure
Br




                 ure
an



            t




                          ure
         Fea
  ch




                   t
                Fea


                            t
                         Fea
Das Repository ist die
gemeinsame Werkstatt

         Repository (SVN)
Das Repository ist die
gemeinsame Werkstatt

                Repository (SVN)




 lokale Kopie
Das Repository ist die
gemeinsame Werkstatt

                Repository (SVN)

   Checkout



 lokale Kopie
Das Repository ist die
gemeinsame Werkstatt

                Repository (SVN)

   Checkout



                coden
 lokale Kopie            lokale Kopie
Das Repository ist die
gemeinsame Werkstatt

                Repository (SVN)

   Checkout



                coden
 lokale Kopie            lokale Kopie
Das Repository ist die
gemeinsame Werkstatt

                Repository (SVN)

   Checkout       Update



                coden
 lokale Kopie              lokale Kopie
Das Repository ist die
gemeinsame Werkstatt

                Repository (SVN)

   Checkout       Update



                coden
 lokale Kopie              lokale Kopie
Das Repository ist die
gemeinsame Werkstatt

                Repository (SVN)

   Checkout       Update                   Checkin
                                          (Commit)


                coden
 lokale Kopie              lokale Kopie
Continuous
Integration
Continuous
Integration
    =
Continuous
Integration
     =
 öfter mal
einchecken
Der Continuous-Integration-Server
               überwacht den Code
     Checkin

                            Repository (SVN)
Der Continuous-Integration-Server
               überwacht den Code
     Checkin




                    k
                -Hoo
                            Repository (SVN)

               SVN
Der Continuous-Integration-Server
                überwacht den Code
     Checkin




                      k
                  -Hoo
                            Repository (SVN)

                 SVN



 Continuous-Integration-
        Server
Der Continuous-Integration-Server
                überwacht den Code
     Checkin




                       k
                   -Hoo
                            Repository (SVN)

                 SVN
       Hey, eine
       Änderung!

 Continuous-Integration-
        Server
Der Continuous-Integration-Server
                überwacht den Code
     Checkin




                       k
                   -Hoo
                                   Repository (SVN)

                 SVN
       Hey, eine
       Änderung!

 Continuous-Integration-     Unit-Tests
        Server             laufen lassen
Der Continuous-Integration-Server
                überwacht den Code
     Checkin




                       k
                   -Hoo
                                   Repository (SVN)

                 SVN
       Hey, eine
       Änderung!

 Continuous-Integration-     Unit-Tests    Bericht
        Server             laufen lassen
Code Review:
    4-Augen-
      Prinzip
Mozilla setzt auf
  doppelte Kontrolle
Mozilla setzt auf
  doppelte Kontrolle


Patch
Mozilla setzt auf
  doppelte Kontrolle


Patch
        Bugtracker
Mozilla setzt auf
  doppelte Kontrolle

                      Peer-
Patch                Review
        Bugtracker
Mozilla setzt auf
  doppelte Kontrolle

        nicht okay
                      Peer-
Patch                Review
        Bugtracker
Mozilla setzt auf
  doppelte Kontrolle

        nicht okay
                      Peer-   so okay
Patch                Review
        Bugtracker
Mozilla setzt auf
  doppelte Kontrolle

        nicht okay
                      Peer-   so okay
Patch                Review
        Bugtracker

           okay, aber mit
           Änderungen
Mozilla setzt auf
  doppelte Kontrolle

        nicht okay
                      Peer-   so okay
Patch                Review
        Bugtracker

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
Mozilla setzt auf
  doppelte Kontrolle

        nicht okay
                      Peer-   so okay
Patch                Review
        Bugtracker

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
Mozilla setzt auf
  doppelte Kontrolle

        nicht okay                         Approval
                      Peer-   so okay        vom
Patch                Review                Module-
        Bugtracker                          Owner

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
Mozilla setzt auf
  doppelte Kontrolle
                         nicht okay

        nicht okay                         Approval
                      Peer-   so okay        vom
Patch                Review                Module-
        Bugtracker                          Owner

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
Mozilla setzt auf
  doppelte Kontrolle
                         nicht okay
                                           okay
        nicht okay                         Approval
                      Peer-   so okay        vom
Patch                Review                Module-
        Bugtracker                          Owner

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
Mozilla setzt auf
  doppelte Kontrolle
                                                 Checkin
                         nicht okay
                                           okay
        nicht okay                         Approval
                      Peer-   so okay        vom
Patch                Review                Module-
        Bugtracker                          Owner

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
oliverklee.de
                      reichen     4 Augen

        nicht okay
                      Peer-   so okay
Patch                Review
        Bugtracker

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
oliverklee.de
                      reichen     4 Augen

        nicht okay
                      Peer-   so okay       Checkin
Patch                Review
        Bugtracker

           okay, aber mit
           Änderungen           überarbeiteter
                                    Patch
Das TYPO3-Core-Team
         stimmt ab
Das TYPO3-Core-Team
             stimmt ab



Patch
Das TYPO3-Core-Team
                     stimmt ab


        Bugtracker
Patch
        Newsgroup
Das TYPO3-Core-Team
                           stimmt ab


        Bugtracker   Diskussion in
Patch                Newsgroup,
        Newsgroup     +1 oder -1
Das TYPO3-Core-Team
                           stimmt ab

   Überarbeitungsbedarf


        Bugtracker   Diskussion in
Patch                Newsgroup,
        Newsgroup     +1 oder -1
Das TYPO3-Core-Team
                           stimmt ab

   Überarbeitungsbedarf


                     Diskussion in   mehr +1
        Bugtracker                    als -1
Patch                Newsgroup,
        Newsgroup     +1 oder -1
Das TYPO3-Core-Team
                           stimmt ab

   Überarbeitungsbedarf      mindestens
                             ein +1 vom
                             Core-Team
                     Diskussion in    mehr +1
        Bugtracker                     als -1
Patch                Newsgroup,
        Newsgroup     +1 oder -1
Das TYPO3-Core-Team
                           stimmt ab
                                          Checkin
   Überarbeitungsbedarf      mindestens
                             ein +1 vom
                             Core-Team
                     Diskussion in    mehr +1
        Bugtracker                     als -1
Patch                Newsgroup,
        Newsgroup     +1 oder -1
Pair-
Programming
ist ständiger
Review
Pair-
Programming
ist ständiger
Review


        ... und
     ständige
    Schulung
Extreme Programming
(XP)
Extreme Programming
(XP)       ständige
          Integration
Extreme Programming
(XP)       ständige kurze
           Integration   Iterationen
Extreme Programming
(XP)       ständige kurze
           Integration    Iterationen

                         Test-Driven
                         Development
Extreme Programming
(XP)       ständige kurze
           Integration    Iterationen

                         Test-Driven
           Refactoring
                         Development
Extreme Programming
(XP)       ständige kurze
               Integration    Iterationen

     Pair                    Test-Driven
               Refactoring
 Programming                 Development
Extreme Programming
(XP)       ständige kurze
                Integration    Iterationen

     Pair                     Test-Driven
                Refactoring
 Programming                  Development

  kollektives
   Eigentum
Extreme Programming
(XP)       ständige kurze
                Integration    Iterationen

     Pair                     Test-Driven
                Refactoring
 Programming                  Development

  kollektives    Coding-
   Eigentum     Standards
Extreme Programming
(XP)       ständige kurze
                Integration    Iterationen

     Pair                     Test-Driven
                Refactoring
 Programming                  Development

  kollektives    Coding-       einfaches
   Eigentum     Standards       Design
Extreme Programming
(XP)       ständige kurze
                Integration    Iterationen

     Pair                     Test-Driven
                Refactoring
 Programming                  Development

  kollektives    Coding-       einfaches
   Eigentum     Standards       Design

                                 keine
                              Überstunden
Extreme Programming
(XP)       ständige kurze
                 Integration     Iterationen

     Pair                       Test-Driven
                 Refactoring
 Programming                    Development

  kollektives      Coding-       einfaches
   Eigentum       Standards       Design

                                   keine
                Planning Game
                                Überstunden
Extreme Programming
(XP)       ständige kurze
                 Integration     Iterationen

     Pair                       Test-Driven
                 Refactoring
 Programming                    Development

  kollektives      Coding-       einfaches
   Eigentum       Standards       Design

   Kunden                          keine
                Planning Game
 einbeziehen                    Überstunden
Es gibt
kleine und große
              Tests
Unit-Tests sind
    klein und schnell
Integration-Tests testen
      das große Ganze
Automatisierte Klick-Tests
 testen die Außenansicht
Automatisierte Klick-Tests
 testen die Außenansicht



                  Selenium
se r
           /
         n chU en die
   n   e a
     d m             ts
Ku              te s
             nz
      e p ta
  k z
A
Offene Baustellen der
 phpunit- und oelib-
     Extensions
Offene Baustellen der
 phpunit- und oelib-
     Extensions




 Selenium-
Integration
Offene Baustellen der
 phpunit- und oelib-
     Extensions




 Selenium-    Tests von BE-
Integration     Modulen
Offene Baustellen der
 phpunit- und oelib-
     Extensions




 Selenium-    Tests von BE-   schöneres
Integration     Modulen        Interface
Offene Baustellen der
 phpunit- und oelib-
     Extensions



                              Refactoring


 Selenium-    Tests von BE-   schöneres
Integration     Modulen        Interface
Offene Baustellen der
 phpunit- und oelib-
     Extensions



              Tests von BE-
                              Refactoring
               Permissions


 Selenium-    Tests von BE-   schöneres
Integration     Modulen        Interface
Offene Baustellen der
 phpunit- und oelib-
     Extensions



              Tests von BE-
 Bugfixes                      Refactoring
               Permissions


 Selenium-    Tests von BE-   schöneres
Integration     Modulen        Interface
TDD & Best Practices mit TYPO3

Contenu connexe

Plus de Oliver Klee

Test-driven Development mit TYPO3
Test-driven Development mit TYPO3Test-driven Development mit TYPO3
Test-driven Development mit TYPO3Oliver Klee
 
Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)Oliver Klee
 
Persönliches Zeitmanagement mit Getting Things Done (GTD)
Persönliches Zeitmanagement mit Getting Things Done (GTD)Persönliches Zeitmanagement mit Getting Things Done (GTD)
Persönliches Zeitmanagement mit Getting Things Done (GTD)Oliver Klee
 
Everything you need to know about the TYPO3 Security Team (T3DD10)
Everything you need to know about the TYPO3 Security Team (T3DD10)Everything you need to know about the TYPO3 Security Team (T3DD10)
Everything you need to know about the TYPO3 Security Team (T3DD10)Oliver Klee
 
Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)Oliver Klee
 
Unit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x coreUnit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x coreOliver Klee
 

Plus de Oliver Klee (7)

Test-driven Development mit TYPO3
Test-driven Development mit TYPO3Test-driven Development mit TYPO3
Test-driven Development mit TYPO3
 
Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)Test-driven development with TYPO3 (T3CON10)
Test-driven development with TYPO3 (T3CON10)
 
Persönliches Zeitmanagement mit Getting Things Done (GTD)
Persönliches Zeitmanagement mit Getting Things Done (GTD)Persönliches Zeitmanagement mit Getting Things Done (GTD)
Persönliches Zeitmanagement mit Getting Things Done (GTD)
 
Everything you need to know about the TYPO3 Security Team (T3DD10)
Everything you need to know about the TYPO3 Security Team (T3DD10)Everything you need to know about the TYPO3 Security Team (T3DD10)
Everything you need to know about the TYPO3 Security Team (T3DD10)
 
Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)Unit testing for the TYPO3 4.x core (T3DD10)
Unit testing for the TYPO3 4.x core (T3DD10)
 
GPG Workshop
GPG WorkshopGPG Workshop
GPG Workshop
 
Unit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x coreUnit testing for the TYPO3 4.x core
Unit testing for the TYPO3 4.x core
 

TDD & Best Practices mit TYPO3

Notes de l'éditeur