SlideShare una empresa de Scribd logo
1 de 117
Test-Driven Development




                              ... und
Oliver Klee, 27.-28.08.2011   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
Verhindern,
         dass andere Leute
deinen 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
    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)
Die phpunit-Extension
bringt alles Wichtige mit
phpunit (TYPO3-Extension)
  PHPUnit (PEAR-Paket)
  Testing-Framework für FE & DB
 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
Benutze   aussagekräftige
                    Unit-Test-   Namen
Benutze   aussagekräftige
                          Unit-Test-   Namen
Benenne das
 Verhalten.             classCanBeInstantiated
Benutze   aussagekräftige
                          Unit-Test-   Namen
Benenne das
 Verhalten.             classCanBeInstantiated


 Nenne die
 Methode.                   setTitleSetsTitle
Benutze   aussagekräftige
                                Unit-Test-   Namen
 Benenne das
  Verhalten.                  classCanBeInstantiated


   Nenne die
   Methode.                        setTitleSetsTitle


   Nenne die          setSizeWithZeroThrowsException
Vorbedingungen.    hasTitleForEmptyTitleReturnsFalse
Benutze   aussagekräftige
                                Unit-Test-   Namen
 Benenne das
  Verhalten.                  classCanBeInstantiated


   Nenne die
   Methode.                        setTitleSetsTitle


   Nenne die          setSizeWithZeroThrowsException
Vorbedingungen.    hasTitleForEmptyTitleReturnsFalse


 Benutze nicht
 „works“ oder
  „correctly“.
Benutze   aussagekräftige
                                Unit-Test-   Namen
 Benenne das
  Verhalten.                  classCanBeInstantiated


   Nenne die
   Methode.                        setTitleSetsTitle


   Nenne die          setSizeWithZeroThrowsException
Vorbedingungen.    hasTitleForEmptyTitleReturnsFalse


 Benutze nicht
 „works“ oder           measureFrubbleWorksCorrectly
  „correctly“.
Benutze   aussagekräftige
                                Unit-Test-   Namen
 Benenne das
  Verhalten.                  classCanBeInstantiated


   Nenne die
   Methode.                        setTitleSetsTitle


   Nenne die          setSizeWithZeroThrowsException
Vorbedingungen.    hasTitleForEmptyTitleReturnsFalse


 Benutze nicht
 „works“ oder           measureFrubbleWorksCorrectly
  „correctly“.
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 */
           lifeIsGood();
Lebenszyklus Tests
            eines
           new FooTest();

                    setUp();

           /** @test */
           lifeIsGood();
Lebenszyklus Tests
            eines
           new FooTest();

                    setUp();

           /** @test */
           lifeIsGood();

              tearDown();
Lebenszyklus Tests
            eines
           new FooTest();

                    setUp();

           /** @test */
           lifeIsGood();

              tearDown();
Lebenszyklus Tests
            eines
           new FooTest();

                    setUp();

           /** @test */
           lifeIsGood();

              tearDown();
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 gibt
kleine 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 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
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
                    atu
                        re
Üblich: Der Trunk ist die
„Bleeding Edge“
                 Milestone 4
        Trunk
                 Fe
                    atu
                        re
Üblich: Der Trunk ist die
„Bleeding Edge“
                 Milestone 4
        Trunk
                 Fe          Bu
                    atu        gfi
                        re        x
Üblich: Der Trunk ist die
„Bleeding Edge“
                 Milestone 4
        Trunk
                 Fe          Bu       Fe
                    atu        gfi        atu
                        re        x          re
Üblich: Der Trunk ist die
„Bleeding Edge“
                  Milestone 4
        Trunk
                  Fe          Bu       Fe
        Br           atu        gfi        atu
          an             re        x          re
             ch
Üblich: Der Trunk ist die
„Bleeding Edge“
                   Milestone 4
        Trunk
                   Fe          Bu       Fe
        Br            atu        gfi        atu
          an              re        x          re
             ch
                  Bug
                     fix
Ü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
Ü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
Ü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
Ü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
Branches für Experimente
             (eher selten)
Branches für Experimente
             (eher selten)

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

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

                      tu re       fix      tu re
                   Fea         Bug     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         Bug     Fea
 Trunk
          ure
Br




                 ure
an



            t




                         ure
         Fea
  ch




                   t
                Fea


                          t
                       Fea
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

Más contenido relacionado

Destacado

State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinDries Buytaert
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4jNeo4j
 
Augmenter le taux de succès et la rentabilité de vos Propositions Commerciales
Augmenter le taux de succès et la rentabilité de vos Propositions CommercialesAugmenter le taux de succès et la rentabilité de vos Propositions Commerciales
Augmenter le taux de succès et la rentabilité de vos Propositions CommercialesBespoke Bids Limited
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Guillaume Laforge
 
Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012Claude Falguiere
 
Going Native: The Anthropology of Mobile Apps
Going Native: The Anthropology of Mobile AppsGoing Native: The Anthropology of Mobile Apps
Going Native: The Anthropology of Mobile AppsJosh Clark
 
Bringing Design to Life
Bringing Design to LifeBringing Design to Life
Bringing Design to LifeBill Scott
 

Destacado (20)

Soft tissue tumor
Soft tissue tumorSoft tissue tumor
Soft tissue tumor
 
State of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon AustinState of Drupal keynote, DrupalCon Austin
State of Drupal keynote, DrupalCon Austin
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
Aula 01 desenho de observação
Aula 01 desenho de observaçãoAula 01 desenho de observação
Aula 01 desenho de observação
 
Livorno - Hafen der Medici
Livorno - Hafen der MediciLivorno - Hafen der Medici
Livorno - Hafen der Medici
 
Augmenter le taux de succès et la rentabilité de vos Propositions Commerciales
Augmenter le taux de succès et la rentabilité de vos Propositions CommercialesAugmenter le taux de succès et la rentabilité de vos Propositions Commerciales
Augmenter le taux de succès et la rentabilité de vos Propositions Commerciales
 
Who is this_latvian
Who is this_latvianWho is this_latvian
Who is this_latvian
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008
 
Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012
 
TPS 10 Wowawanggu
TPS 10 WowawangguTPS 10 Wowawanggu
TPS 10 Wowawanggu
 
maths ppt on circles
 maths ppt on circles maths ppt on circles
maths ppt on circles
 
Droit d'auteur belge en 2011
Droit d'auteur belge en 2011Droit d'auteur belge en 2011
Droit d'auteur belge en 2011
 
Myopia
MyopiaMyopia
Myopia
 
Going Native: The Anthropology of Mobile Apps
Going Native: The Anthropology of Mobile AppsGoing Native: The Anthropology of Mobile Apps
Going Native: The Anthropology of Mobile Apps
 
Data Science At Zillow
Data Science At ZillowData Science At Zillow
Data Science At Zillow
 
Begg mechanics
Begg mechanics Begg mechanics
Begg mechanics
 
Bringing Design to Life
Bringing Design to LifeBringing Design to Life
Bringing Design to Life
 
The Irish Tech Startup Guide
The Irish Tech Startup GuideThe Irish Tech Startup Guide
The Irish Tech Startup Guide
 
Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012Propriété intellectuelle nov 2012
Propriété intellectuelle nov 2012
 
Automobiles
AutomobilesAutomobiles
Automobiles
 

Similar a Test-Driven Development ... und mehr

Agiles Testing
Agiles TestingAgiles Testing
Agiles TestingNEOMO GmbH
 
Advanced Refactoring Patterns
Advanced Refactoring PatternsAdvanced Refactoring Patterns
Advanced Refactoring PatternsHendrik Lösch
 
Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018Hendrik Lösch
 
Testing untestable code - PHPUGFFM 01/11
Testing untestable code - PHPUGFFM 01/11Testing untestable code - PHPUGFFM 01/11
Testing untestable code - PHPUGFFM 01/11Stephan Hochdörfer
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführungfrankstaude
 
130605 blog - drools
130605   blog - drools130605   blog - drools
130605 blog - droolsjava-pe
 
Legacy Code refaktorisieren
Legacy Code refaktorisierenLegacy Code refaktorisieren
Legacy Code refaktorisierenHendrik Lösch
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Consumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein ÜberblickConsumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein Überblicktobiasflohre
 

Similar a Test-Driven Development ... und mehr (9)

Agiles Testing
Agiles TestingAgiles Testing
Agiles Testing
 
Advanced Refactoring Patterns
Advanced Refactoring PatternsAdvanced Refactoring Patterns
Advanced Refactoring Patterns
 
Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018Advanced Refactoring Patterns - Dev Day 2018
Advanced Refactoring Patterns - Dev Day 2018
 
Testing untestable code - PHPUGFFM 01/11
Testing untestable code - PHPUGFFM 01/11Testing untestable code - PHPUGFFM 01/11
Testing untestable code - PHPUGFFM 01/11
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführung
 
130605 blog - drools
130605   blog - drools130605   blog - drools
130605 blog - drools
 
Legacy Code refaktorisieren
Legacy Code refaktorisierenLegacy Code refaktorisieren
Legacy Code refaktorisieren
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Consumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein ÜberblickConsumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein Überblick
 

Más de Oliver Klee

Stand das im Handbuch?
Stand das im Handbuch?Stand das im Handbuch?
Stand das im Handbuch?Oliver Klee
 
Test-Driven Development for TYPO3 @ T3CON12DE
Test-Driven Development for TYPO3 @ T3CON12DETest-Driven Development for TYPO3 @ T3CON12DE
Test-Driven Development for TYPO3 @ T3CON12DEOliver Klee
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidOliver Klee
 
Test-driven Development for TYPO3
Test-driven Development for TYPO3Test-driven Development for TYPO3
Test-driven Development for TYPO3Oliver Klee
 
Stand das im Handbuch?
Stand das im Handbuch?Stand das im Handbuch?
Stand das im Handbuch?Oliver Klee
 
Test-Driven Development for TYPO3
Test-Driven Development for TYPO3Test-Driven Development for TYPO3
Test-Driven Development for TYPO3Oliver Klee
 
Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)Oliver 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
 
TDD & Best Practices mit TYPO3
TDD & Best Practices mit TYPO3TDD & Best Practices mit TYPO3
TDD & Best Practices mit TYPO3Oliver 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
 

Más de Oliver Klee (14)

Stand das im Handbuch?
Stand das im Handbuch?Stand das im Handbuch?
Stand das im Handbuch?
 
Test-Driven Development for TYPO3 @ T3CON12DE
Test-Driven Development for TYPO3 @ T3CON12DETest-Driven Development for TYPO3 @ T3CON12DE
Test-Driven Development for TYPO3 @ T3CON12DE
 
Objektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluidObjektorientierte Programmierung mit extbase und fluid
Objektorientierte Programmierung mit extbase und fluid
 
Test-driven Development for TYPO3
Test-driven Development for TYPO3Test-driven Development for TYPO3
Test-driven Development for TYPO3
 
Stand das im Handbuch?
Stand das im Handbuch?Stand das im Handbuch?
Stand das im Handbuch?
 
Test-Driven Development for TYPO3
Test-Driven Development for TYPO3Test-Driven Development for TYPO3
Test-Driven Development for TYPO3
 
Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)Test-driven development for TYPO3 (T3DD11)
Test-driven development for TYPO3 (T3DD11)
 
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)
 
TDD & Best Practices mit TYPO3
TDD & Best Practices mit TYPO3TDD & Best Practices mit TYPO3
TDD & Best Practices mit TYPO3
 
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
 

Test-Driven Development ... und mehr

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n
  157. \n
  158. \n
  159. \n
  160. \n
  161. \n
  162. \n
  163. \n
  164. \n
  165. \n