Regressionstests in Webprojekten - IPC12SE

Post on 18-Dec-2014

713 views 1 download

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

Regressionstestsin Webprojekten

Sebastian Bauer, inovex GmbH

@litervollmilch

Auto-Nerd und -Bloggerpassiondriving.de

Agile Coach @inovex GmbH

Pforzheim, Köln, München

Vorstellung

REGR... WHAT?

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

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.

AkzeptanztestsAkzeptanztests

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

Einkaufswagen“ den Artikel in den Einkaufswagen legt.

Smoke Tests

Smoke TestsPrüfe, ob der Aufruf einer Artikelseite auch

wirklich eine Artikelseite zeigt.

Warum das ganze Theater?

Der Schlüssel zum Erfolg

Automatisierung!

Continuous Integration

Jenkins (Hudson)

CruiseControl

Bamboo

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• ...

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

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: behat

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

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? Kommentare?

twitter

mail

web

@litervollmilch

sebastian.bauer@inovex.de

http://inovex.de