Was ist TDD?
     Bernd Schiffer
     @berndschiffer
     bernd.schiffer@it-agile.de


     17.06.2010



Montag, 21. Juni 2010
Bernd Schiffer
                        ‣ Agile
                          Softwareentwicklung
                          seit 2001
                        ‣ Coach für Scrum,
                          Kanban, Scrumban,
                          eXtreme
                          Programming,
                          Testgetriebene
                          Entwicklung


Montag, 21. Juni 2010
it-agile
                        ‣ Agile
                          Softwareentwicklung
                          und Beratung
                        ‣ 23 Mitarbeiter
                        ‣ Wir...
                         ‣ ... trainieren
                         ‣ ... beraten
                         ‣ ... entwickeln
                        ‣ http://it-agile.de

Montag, 21. Juni 2010
Was ist
  TDD?
Montag, 21. Juni 2010
Implementieren

                              I
Montag, 21. Juni 2010
Implementieren   Testen

                        I    T
Montag, 21. Juni 2010
Implementieren   Testen

                        I    T
Montag, 21. Juni 2010
Testen   Implementieren

                         T             I
Montag, 21. Juni 2010
je höher desto besser         besseres lokales Maximum




                          lokales Maximum
                   ei t
                igk
            ufäh
         sba
      -Au
   tem




                                        Refactoring
Sys




 Montag, 21. Juni 2010
Testen   Implementieren

                         T             I
Montag, 21. Juni 2010
Testen   Implementieren

                         T             I
            Refactoring          R
Montag, 21. Juni 2010
Demo!
Montag, 21. Juni 2010
Kata



Montag, 21. Juni 2010
Montag, 21. Juni 2010
Red         Green

                        T            I
                   Refactor     R
                              TDD-Zyklus
Montag, 21. Juni 2010
Lohnt sich
                  TDD?
Montag, 21. Juni 2010
Test
               First
Montag, 21. Juni 2010
Refactoring
Montag, 21. Juni 2010
Simplizität
Montag, 21. Juni 2010
Lohnt sich
Test First?
Montag, 21. Juni 2010
Automatisierte
    Tests
Montag, 21. Juni 2010
Montag, 21. Juni 2010
Investition
                        $ 100 Mio.

Montag, 21. Juni 2010
Bug während TDD

                          =$5
Montag, 21. Juni 2010
Bug während Full Build

                        = $ 50
Montag, 21. Juni 2010
Bug während Integrationstest


                  = $ 500
Montag, 21. Juni 2010
Bug während Systemtests


= $ 5000
Montag, 21. Juni 2010
Einsparung
                $ 160 Mio.
Montag, 21. Juni 2010
Rendite
                        60 % (!)
Montag, 21. Juni 2010
Ja,
                         Test First
Montag, 21. Juni 2010
                        lohnt sich!
Lohnt sich
Refactoring?
Montag, 21. Juni 2010
Flexibilität durch
Inkremente und
   Iterationen
(Beispiel: Scrum)
Montag, 21. Juni 2010
Software
    aber starr
       und
    unflexibel
Montag, 21. Juni 2010
Innere
          Struktur
           ändern
        = Refactoring
Montag, 21. Juni 2010
Nur möglich durch
Automatisierte

     Tests
Montag, 21. Juni 2010
Testautomatisierung
  durch Test First

Montag, 21. Juni 2010
Test Last
bedeutet:
oft nicht
 testbar!
                        Quelle: doingitwrong.com
Montag, 21. Juni 2010
Technical
                             Debt




Montag, 21. Juni 2010
Big Ball of Mud

Big Ball of Mud

Montag, 21. Juni 2010
Ja,
               Refactoring
               lohnt sich!
Montag, 21. Juni 2010
Lohnt sich
         Simplizität?
Montag, 21. Juni 2010
wenige
         Faktoren       zum Ent-/Bestehen




     wenige
            Regeln        fürs Zusammenspiel

Montag, 21. Juni 2010
Simplizität ist
     Simplizität ist
    Ziel                von




   Ziel von
           Refactoring




   Refactoring
Montag, 21. Juni 2010
Montag, 21. Juni 2010
Ja,
                        Simplizität
Montag, 21. Juni 2010
                        lohnt sich!
Und lohnt
 sich jetzt
                  TDD?
Montag, 21. Juni 2010
Ja!              TDD
           lohnt
              sich
Montag, 21. Juni 2010
Warum so kleine
Schritte?
Montag, 21. Juni 2010
Können,
                wenn man
                  will...




 Quelle: Karl Fabricius http://www.environmentalgraffiti.com/featured/death-is-milliseconds-away/10927
Montag, 21. Juni 2010
Montag, 21. Juni 2010
„Sessions“ by Industrial Logic - see http://blogs.agilefaqs.com/2010/06/17/visualizing-your-programming-sessions-new-product-from-industrial-logic/
Montag, 21. Juni 2010
„Sessions“ by Industrial Logic - see http://blogs.agilefaqs.com/2010/06/17/visualizing-your-programming-sessions-new-product-from-industrial-logic/
Montag, 21. Juni 2010
Continuous
      Integration

                        Continuous Integration




Montag, 21. Juni 2010
Kontinuität

                        Kontinuität




Montag, 21. Juni 2010
Was wenn‘s wird
  kompliziert?
Montag, 21. Juni 2010
TexasHoldemKombinationen                                                [add child]



           Als Spieler möchte ich erfahren, welche höchste Kategorie ich in der Hand halte,
           damit ich meine Chancen besser bestimmen kann.

            Finde Kategorie
            Hand              Kategorie?
            2! 3! 4! 5! 7" Höchste Karte
            2! 3! 4! 5! 5" Paar
            2! 3! 4! 4" 4# Drilling
            2! 3! 4! 5! 7! Flush


           Als Spieler möchte ich die für eine Kategorie relevanten Karten angezeigt
           bekommen, damit ich die Kategorie in meiner Hand besser identifizieren kann.

            Zeige relevante Karten für Kategorie an
            Hand                relevante Karten?
            2! 3! 4! 5! 7"      7"
            2! 3! 4! 5! 5"      5! 5"
            2! 3! 4! 4" 4#      4! 4" 4#
            2! 3! 4! 5! 7!      2! 3! 4! 5! 7!
Montag, 21. Juni 2010
Montag, 21. Juni 2010
Metrics
                        ‣ 6 Klassen Produktiv
                        ‣ 2 Klassen Test
                        ‣ 8 Tests
                        ‣ 3,8 Zeilen/Methode
                          (inkl. Klammern)
                        ‣ SOLID
                        ‣ Clean
                        ‣ DRY


Montag, 21. Juni 2010
Bitte mach‘, dass es aufhört...!
Montag, 21. Juni 2010
Was ist mit
                        unzurei-
                        chenden
                Tests?
Montag, 21. Juni 2010
Immer!

                        Quelle: Reencarnacion Cristalero http://pixdaus.com/single.php?id=42266
Montag, 21. Juni 2010
Focus: Design
                        ‣ Product Design
                         ‣ ATDD
                         ‣ Exploratory Testing
                        ‣ Technical Design
                         ‣ TDD
                         ‣ Stress Testing
                        ‣ Interaction Design
                         ‣ GUI Tests
                         ‣ Usability Testing

                            Quelle: Poppendiecks „Leading Lean Software Development"
Montag, 21. Juni 2010
Focus:
                        Spec or Failure
                        ‣ Test to Spec
                         ‣ ATDD
                         ‣ TDD
                         ‣ GUI Tests
                        ‣ Test to Failure
                         ‣ Exploratory Testing
                         ‣ Stress Testing
                         ‣ Usability Testing
                            Quelle: Poppendiecks „Leading Lean Software Development"
Montag, 21. Juni 2010
Designstrategie




                           Quelle: http://www.everydayux.com/2010/05/06/make-it-hard-for-your-customers-to-fail/
Montag, 21. Juni 2010
Innovation




                        Quelle: Pearl River Necklace Bridge in Hongkong via http://gizmodo.com/5560466/is-this-the-craziest-bridge-ever-designed
Montag, 21. Juni 2010
Das ist TDD!
     Bernd Schiffer
     @berndschiffer
     bernd.schiffer@it-agile.de


     17.06.2010



Montag, 21. Juni 2010

Was ist TDD?

  • 1.
    Was ist TDD? Bernd Schiffer @berndschiffer bernd.schiffer@it-agile.de 17.06.2010 Montag, 21. Juni 2010
  • 2.
    Bernd Schiffer ‣ Agile Softwareentwicklung seit 2001 ‣ Coach für Scrum, Kanban, Scrumban, eXtreme Programming, Testgetriebene Entwicklung Montag, 21. Juni 2010
  • 3.
    it-agile ‣ Agile Softwareentwicklung und Beratung ‣ 23 Mitarbeiter ‣ Wir... ‣ ... trainieren ‣ ... beraten ‣ ... entwickeln ‣ http://it-agile.de Montag, 21. Juni 2010
  • 4.
    Was ist TDD? Montag, 21. Juni 2010
  • 5.
    Implementieren I Montag, 21. Juni 2010
  • 6.
    Implementieren Testen I T Montag, 21. Juni 2010
  • 7.
    Implementieren Testen I T Montag, 21. Juni 2010
  • 8.
    Testen Implementieren T I Montag, 21. Juni 2010
  • 9.
    je höher destobesser besseres lokales Maximum lokales Maximum ei t igk ufäh sba -Au tem Refactoring Sys Montag, 21. Juni 2010
  • 10.
    Testen Implementieren T I Montag, 21. Juni 2010
  • 11.
    Testen Implementieren T I Refactoring R Montag, 21. Juni 2010
  • 12.
  • 13.
  • 14.
  • 15.
    Red Green T I Refactor R TDD-Zyklus Montag, 21. Juni 2010
  • 16.
    Lohnt sich TDD? Montag, 21. Juni 2010
  • 17.
    Test First Montag, 21. Juni 2010
  • 18.
  • 19.
  • 20.
  • 21.
    Automatisierte Tests Montag, 21. Juni 2010
  • 22.
  • 23.
    Investition $ 100 Mio. Montag, 21. Juni 2010
  • 24.
    Bug während TDD =$5 Montag, 21. Juni 2010
  • 25.
    Bug während FullBuild = $ 50 Montag, 21. Juni 2010
  • 26.
    Bug während Integrationstest = $ 500 Montag, 21. Juni 2010
  • 27.
    Bug während Systemtests =$ 5000 Montag, 21. Juni 2010
  • 28.
    Einsparung $ 160 Mio. Montag, 21. Juni 2010
  • 29.
    Rendite 60 % (!) Montag, 21. Juni 2010
  • 30.
    Ja, Test First Montag, 21. Juni 2010 lohnt sich!
  • 31.
  • 32.
    Flexibilität durch Inkremente und Iterationen (Beispiel: Scrum) Montag, 21. Juni 2010
  • 33.
    Software aber starr und unflexibel Montag, 21. Juni 2010
  • 34.
    Innere Struktur ändern = Refactoring Montag, 21. Juni 2010
  • 35.
    Nur möglich durch Automatisierte Tests Montag, 21. Juni 2010
  • 36.
    Testautomatisierung durchTest First Montag, 21. Juni 2010
  • 37.
    Test Last bedeutet: oft nicht testbar! Quelle: doingitwrong.com Montag, 21. Juni 2010
  • 38.
    Technical Debt Montag, 21. Juni 2010
  • 39.
    Big Ball ofMud Big Ball of Mud Montag, 21. Juni 2010
  • 40.
    Ja, Refactoring lohnt sich! Montag, 21. Juni 2010
  • 41.
    Lohnt sich Simplizität? Montag, 21. Juni 2010
  • 42.
    wenige Faktoren zum Ent-/Bestehen wenige Regeln fürs Zusammenspiel Montag, 21. Juni 2010
  • 43.
    Simplizität ist Simplizität ist Ziel von Ziel von Refactoring Refactoring Montag, 21. Juni 2010
  • 44.
  • 45.
    Ja, Simplizität Montag, 21. Juni 2010 lohnt sich!
  • 46.
    Und lohnt sichjetzt TDD? Montag, 21. Juni 2010
  • 47.
    Ja! TDD lohnt sich Montag, 21. Juni 2010
  • 48.
  • 49.
    Können, wenn man will... Quelle: Karl Fabricius http://www.environmentalgraffiti.com/featured/death-is-milliseconds-away/10927 Montag, 21. Juni 2010
  • 50.
  • 51.
    „Sessions“ by IndustrialLogic - see http://blogs.agilefaqs.com/2010/06/17/visualizing-your-programming-sessions-new-product-from-industrial-logic/ Montag, 21. Juni 2010
  • 52.
    „Sessions“ by IndustrialLogic - see http://blogs.agilefaqs.com/2010/06/17/visualizing-your-programming-sessions-new-product-from-industrial-logic/ Montag, 21. Juni 2010
  • 53.
    Continuous Integration Continuous Integration Montag, 21. Juni 2010
  • 54.
    Kontinuität Kontinuität Montag, 21. Juni 2010
  • 55.
    Was wenn‘s wird kompliziert? Montag, 21. Juni 2010
  • 56.
    TexasHoldemKombinationen [add child] Als Spieler möchte ich erfahren, welche höchste Kategorie ich in der Hand halte, damit ich meine Chancen besser bestimmen kann. Finde Kategorie Hand Kategorie? 2! 3! 4! 5! 7" Höchste Karte 2! 3! 4! 5! 5" Paar 2! 3! 4! 4" 4# Drilling 2! 3! 4! 5! 7! Flush Als Spieler möchte ich die für eine Kategorie relevanten Karten angezeigt bekommen, damit ich die Kategorie in meiner Hand besser identifizieren kann. Zeige relevante Karten für Kategorie an Hand relevante Karten? 2! 3! 4! 5! 7" 7" 2! 3! 4! 5! 5" 5! 5" 2! 3! 4! 4" 4# 4! 4" 4# 2! 3! 4! 5! 7! 2! 3! 4! 5! 7! Montag, 21. Juni 2010
  • 57.
  • 58.
    Metrics ‣ 6 Klassen Produktiv ‣ 2 Klassen Test ‣ 8 Tests ‣ 3,8 Zeilen/Methode (inkl. Klammern) ‣ SOLID ‣ Clean ‣ DRY Montag, 21. Juni 2010
  • 59.
    Bitte mach‘, dasses aufhört...! Montag, 21. Juni 2010
  • 60.
    Was ist mit unzurei- chenden Tests? Montag, 21. Juni 2010
  • 61.
    Immer! Quelle: Reencarnacion Cristalero http://pixdaus.com/single.php?id=42266 Montag, 21. Juni 2010
  • 62.
    Focus: Design ‣ Product Design ‣ ATDD ‣ Exploratory Testing ‣ Technical Design ‣ TDD ‣ Stress Testing ‣ Interaction Design ‣ GUI Tests ‣ Usability Testing Quelle: Poppendiecks „Leading Lean Software Development" Montag, 21. Juni 2010
  • 63.
    Focus: Spec or Failure ‣ Test to Spec ‣ ATDD ‣ TDD ‣ GUI Tests ‣ Test to Failure ‣ Exploratory Testing ‣ Stress Testing ‣ Usability Testing Quelle: Poppendiecks „Leading Lean Software Development" Montag, 21. Juni 2010
  • 64.
    Designstrategie Quelle: http://www.everydayux.com/2010/05/06/make-it-hard-for-your-customers-to-fail/ Montag, 21. Juni 2010
  • 65.
    Innovation Quelle: Pearl River Necklace Bridge in Hongkong via http://gizmodo.com/5560466/is-this-the-craziest-bridge-ever-designed Montag, 21. Juni 2010
  • 66.
    Das ist TDD! Bernd Schiffer @berndschiffer bernd.schiffer@it-agile.de 17.06.2010 Montag, 21. Juni 2010