Download - Regressionstests in Webprojekten - IPC12SE

Transcript
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