Sebastian Bauer
LOTUM GmbH

Regressionstests
in Webprojekten
Vorstellung

 o   Sebastian Bauer
 o   Leidenschaftlicher
     SCRUM Master
 o   Auto-Nerd
 o   LOTUM GmbH
 o   Bad Nauheim
     bei Frankfurt/Main
REGR...	
  WHAT?
REGR...	
  WHAT?
• Wiederholung bereits durchgeführter Tests
• Neue Fehler aufdecken (Software Regression)
• Bugfixes verifizieren
• Änderungen validieren
• Werden bei jeder Änderung ausgeführt
• Risikominimierung




                          REGR...	
  WHAT?
• Progressive Regressionstests
 • Spezifikation verändert
 • Code geändert
    ➡   Neue Testfälle
• Korrigierende Regressionstests
 • Spezifikation unverändert
 • Änderungen gegen bestehende Testfälle testen



                             REGR...	
  WHAT?
Was bedeutet das genau?

 • Akzeptanztests
 • Unit Tests
 • Tests für zu ändernde Komponenten
 • Tests für Bugfixes
 • Test bei Änderungen ausführen
 • Tests immer aktuell halten
Regressionstests = Continuous Integration?
Arten	
  von	
  Regressionstests
Unit	
  Tests
Unit Tests



    Prüfe, ob das Ergebnis von
     foobar(„foo“) gleich „bar“ ist.
Akzeptanztests
Akzeptanztests
 Prüfe, ob der Klick auf den Button „In den
      Einkaufswagen“ den Artikel in den
             Einkaufswagen legt.
Smoke	
  Tests
Smoke Tests
Prüfe, ob der Aufruf einer Produktseite auch wirklich
               eine Produktseite zeigt.
Warum	
  das	
  ganze	
  Theater?
Der	
  Schlüssel	
  zum	
  Erfolg
Automatisierung
Continuous	
  Integration
Bamboo


                         Jenkins	
  (Hudson)




         CruiseControl
Erfolgreiches CI als Prozess


 • Direktes Feedback -> schnelle Builds
 • Tägliche Checkins
 • Commits in den Trunk
 • Automatisierter Build
 • Deploy-Automation
Build nach jedem Commit!



                           Automatischer	
  Build

                           •	
  Unit	
  Tests
                           •	
  Syntax	
  Tests
                           •	
  Smoke	
  Tests
                           •	
  Coding	
  Standards
                           •	
  Copy/Paste	
  Detection
                           •	
  Dokumentation
                           •	
  ...
Niemand wartet gerne!

                        Automatischer	
  Build

                        •	
  Unit	
  Tests
                        •	
  Syntax	
  Tests
                        •	
  Smoke	
  Tests
                        •	
  Coding	
  Standards
                        •	
  Copy/Paste	
  Detection
Niemand wartet gerne!

                                              Automatischer	
  Build

                                              •	
  Unit	
  Tests
                                              •	
  Syntax	
  Tests
                Regelmäßiger	
  Build         •	
  Smoke	
  Tests
                                              •	
  Coding	
  Standards
          •	
  Unit	
  Tests                  •	
  Copy/Paste	
  Detection
          •	
  Syntax	
  Tests
          •	
  Coding	
  Standards
          •	
  Copy/Paste	
  Detection
          •	
  +	
  Akzeptanztests
          •	
  +	
  Dokumentation
          •	
  +	
  sonstige	
  Intensivere
          	
  	
  	
  	
  	
  	
  	
  Tests
Continuous	
  Delivery
Kontinuierliche	
  Deploys
Feature	
  Toggles
Warum nicht BDD probieren?



 • Behaviour Driven Development
 • Nicht nur eine Entwicklungsmethodik
 • Erwartung vs. Testfall
 • Ausführbare Spec. vs Ansammlung von Tests
BDD Beispiel: Artikel in Warenkorb

 • Gegeben dem Fall, ein Kunde möchte einen Film
  kaufen
 • und sein Warenkorb ist leer
 • und es sind noch 2 Filme auf Lager:
 • Wenn er den Artikel in den Warenkorb legt
 • dann soll der Artikel im Warenkorb auftauchen
 • und der Zähler für die Produkte im Warenkorb auf „1“
  gehen
BDD Tool: Cucumber



• Funktioniert „headless“
• sehr einfacher Test-Code
• Ruby-basiert
• http://www.cukes.info
FAZIT?
Fazit

 • Regressionstests wichtig
 • Regressionstest nur mit Automation!
 • CI unterstützt Regressionstests
 • CI bietet Potential für noch viel mehr
 • Continuous Delivery kann/sollte CI Ziel sein
 • BDD kann alles wunderbar unterstützen
DAS	
  WAR‘S!
       Fragen?

 http://joind.in/3870


  Rocke	
  mit	
  uns	
  das	
  Web!
   www.lotum.de/jobs

Regressionstests in Webprojekten

  • 1.
  • 2.
    Vorstellung o Sebastian Bauer o Leidenschaftlicher SCRUM Master o Auto-Nerd o LOTUM GmbH o Bad Nauheim bei Frankfurt/Main
  • 3.
  • 4.
  • 5.
    • Wiederholung bereitsdurchgeführter Tests • Neue Fehler aufdecken (Software Regression) • Bugfixes verifizieren • Änderungen validieren • Werden bei jeder Änderung ausgeführt • Risikominimierung REGR...  WHAT?
  • 6.
    • Progressive Regressionstests • Spezifikation verändert • Code geändert ➡ Neue Testfälle • Korrigierende Regressionstests • Spezifikation unverändert • Änderungen gegen bestehende Testfälle testen REGR...  WHAT?
  • 7.
    Was bedeutet dasgenau? • Akzeptanztests • Unit Tests • Tests für zu ändernde Komponenten • Tests für Bugfixes • Test bei Änderungen ausführen • Tests immer aktuell halten
  • 8.
  • 9.
  • 10.
  • 11.
    Unit Tests Prüfe, ob das Ergebnis von foobar(„foo“) gleich „bar“ ist.
  • 12.
  • 13.
    Akzeptanztests Prüfe, obder Klick auf den Button „In den Einkaufswagen“ den Artikel in den Einkaufswagen legt.
  • 14.
  • 15.
    Smoke Tests Prüfe, obder Aufruf einer Produktseite auch wirklich eine Produktseite zeigt.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Bamboo Jenkins  (Hudson) CruiseControl
  • 21.
    Erfolgreiches CI alsProzess • Direktes Feedback -> schnelle Builds • Tägliche Checkins • Commits in den Trunk • Automatisierter Build • Deploy-Automation
  • 22.
    Build nach jedemCommit! Automatischer  Build •  Unit  Tests •  Syntax  Tests •  Smoke  Tests •  Coding  Standards •  Copy/Paste  Detection •  Dokumentation •  ...
  • 23.
    Niemand wartet gerne! Automatischer  Build •  Unit  Tests •  Syntax  Tests •  Smoke  Tests •  Coding  Standards •  Copy/Paste  Detection
  • 24.
    Niemand wartet gerne! Automatischer  Build •  Unit  Tests •  Syntax  Tests Regelmäßiger  Build •  Smoke  Tests •  Coding  Standards •  Unit  Tests •  Copy/Paste  Detection •  Syntax  Tests •  Coding  Standards •  Copy/Paste  Detection •  +  Akzeptanztests •  +  Dokumentation •  +  sonstige  Intensivere              Tests
  • 25.
  • 26.
  • 27.
  • 29.
    Warum nicht BDDprobieren? • Behaviour Driven Development • Nicht nur eine Entwicklungsmethodik • Erwartung vs. Testfall • Ausführbare Spec. vs Ansammlung von Tests
  • 30.
    BDD Beispiel: Artikelin Warenkorb • Gegeben dem Fall, ein Kunde möchte einen Film kaufen • und sein Warenkorb ist leer • und es sind noch 2 Filme auf Lager: • Wenn er den Artikel in den Warenkorb legt • dann soll der Artikel im Warenkorb auftauchen • und der Zähler für die Produkte im Warenkorb auf „1“ gehen
  • 31.
    BDD Tool: Cucumber •Funktioniert „headless“ • sehr einfacher Test-Code • Ruby-basiert • http://www.cukes.info
  • 32.
  • 33.
    Fazit • Regressionstestswichtig • Regressionstest nur mit Automation! • CI unterstützt Regressionstests • CI bietet Potential für noch viel mehr • Continuous Delivery kann/sollte CI Ziel sein • BDD kann alles wunderbar unterstützen
  • 34.
    DAS  WAR‘S! Fragen? http://joind.in/3870 Rocke  mit  uns  das  Web! www.lotum.de/jobs