Regressionstests in Webprojekten - IPC12SE

33
Regressionstests in Webprojekten Sebastian Bauer, inovex GmbH

description

Gerade im Web sind kurze Releasezyklen oft unabdingbar. Meist werden noch viele manuelle Tests gemacht, die ein bremsender Faktor für häufige Releases sind. Was gehört dazu, um bei Veränderungen des Projekts automatisiert zu prüfen, ob noch alles funktioniert? Wie kann man darauf aufbauen und was kommt danach?

Transcript of Regressionstests in Webprojekten - IPC12SE

Page 1: Regressionstests in Webprojekten - IPC12SE

Regressionstestsin Webprojekten

Sebastian Bauer, inovex GmbH

Page 2: Regressionstests in Webprojekten - IPC12SE

@litervollmilch

Auto-Nerd und -Bloggerpassiondriving.de

Agile Coach @inovex GmbH

Pforzheim, Köln, München

Vorstellung

Page 3: Regressionstests in Webprojekten - IPC12SE

REGR... WHAT?

Page 4: Regressionstests in Webprojekten - IPC12SE

REGR... WHAT?

Page 5: Regressionstests in Webprojekten - IPC12SE

REGR... WHAT?

• Wiederholung bereits durchgeführter Tests

• Neue Fehler aufdecken (Software Regression)

• Bugfixes verifizieren

• Änderungen validieren

• Werden bei jeder Änderung ausgeführt

• Risikominimierung

Page 6: Regressionstests in Webprojekten - IPC12SE

REGR... WHAT?

• Progressive Regressionstests

• Spezifikation verändert

• Code geändert

‣ Neue Testfälle

• Korrigierende Regressionstests

• Spezifikation unverändert

• Änderungen gegen bestehende Testfälle testen

Page 7: Regressionstests in Webprojekten - IPC12SE

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

Page 8: Regressionstests in Webprojekten - IPC12SE

Regressionstests = Continuous Integration?

Page 9: Regressionstests in Webprojekten - IPC12SE

Arten von Regressionstests

Page 10: Regressionstests in Webprojekten - IPC12SE

Unit Tests

Page 11: Regressionstests in Webprojekten - IPC12SE

Unit Tests

Prüfe, ob das Ergebnis von foobar(„foo“) gleich „bar“ ist.

Page 12: Regressionstests in Webprojekten - IPC12SE

AkzeptanztestsAkzeptanztests

Page 13: Regressionstests in Webprojekten - IPC12SE

AkzeptanztestsPrüfe, ob der Klick auf den Button „In den

Einkaufswagen“ den Artikel in den Einkaufswagen legt.

Page 14: Regressionstests in Webprojekten - IPC12SE

Smoke Tests

Page 15: Regressionstests in Webprojekten - IPC12SE

Smoke TestsPrüfe, ob der Aufruf einer Artikelseite auch

wirklich eine Artikelseite zeigt.

Page 16: Regressionstests in Webprojekten - IPC12SE

Warum das ganze Theater?

Page 17: Regressionstests in Webprojekten - IPC12SE

Der Schlüssel zum Erfolg

Page 18: Regressionstests in Webprojekten - IPC12SE

Automatisierung!

Page 19: Regressionstests in Webprojekten - IPC12SE

Continuous Integration

Page 20: Regressionstests in Webprojekten - IPC12SE

Jenkins (Hudson)

CruiseControl

Bamboo

Page 21: Regressionstests in Webprojekten - IPC12SE

Erfolgreiches CI als Prozess

• Direktes Feedback -> schnelle Builds

• Tägliche Checkins

• Commits in den Trunk

• Automatisierter Build

• Deploy-Automation

Page 22: Regressionstests in Webprojekten - IPC12SE

Build nach jedem Commit!

Automatischer Build

• Unit Tests• Syntax Tests• Smoke Tests• Coding Standards• Copy/Paste Detection• Dokumentation• ...

Page 23: Regressionstests in Webprojekten - IPC12SE

Automatischer Build

• Unit Tests• Syntax Tests• Smoke Tests• Coding Standards• Copy/Paste Detection• Dokumentation• ...

Niemand wartet gerne!

Regelmäßiger Build

• Unit Tests• Syntax Tests• Coding Standards• Copy/Paste Detection• + Akzeptanztests• + Dokumentation• + sonstige intensivere Tests

Page 24: Regressionstests in Webprojekten - IPC12SE

Continuous Delivery

Page 25: Regressionstests in Webprojekten - IPC12SE

Kontinuierliche Deploys

Page 26: Regressionstests in Webprojekten - IPC12SE

Feature Toggles

Page 27: Regressionstests in Webprojekten - IPC12SE
Page 28: Regressionstests in Webprojekten - IPC12SE

Warum nicht BDD probieren?

• Behaviour Driven Development

• Nicht nur eine Entwicklungsmethodik

• Erwartung vs. Testfall

• Ausführbare Spec. vs Ansammlung von Tests

Page 29: Regressionstests in Webprojekten - IPC12SE

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

Page 30: Regressionstests in Webprojekten - IPC12SE

BDD Tool: behat

•Funktioniert „headless“• sehr einfacher Test-Code•Made for PHP•http://www.behat.org

Page 31: Regressionstests in Webprojekten - IPC12SE

Fazit?

Page 32: Regressionstests in Webprojekten - IPC12SE

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

Page 33: Regressionstests in Webprojekten - IPC12SE

DAS WAR‘S!Fragen? Kommentare?

twitter

mail

web

@litervollmilch

[email protected]

http://inovex.de