Adrian Stoll von SwissQ an der Lean Agile Scrum 2011 Konferenz.
Bereits SCRUM User-Stories sollen über Akzeptanz-Tests verfügen, Testing erfolgt nicht erst am Schluss eines Sprints!
Software-Testing in Scrum-Projekten

Tester sollen mit der Zeit die persönliche Funktion abgeben an die «Rolle» Tester: Die Verantwortung für das Testing kann von jedem Teammitglied/Entwickler übernommen werden, nicht zwingend nur von einem dedizierten Tester.
Konventionelles Testing ist
- Frustrierend: Fehler finden, die offensichtlich sind
- Undankbar: als Tester ist man bei Entwicklern oft unbeliebt
- Stressig: bei Verzögerungen verkürzt sich meist die Testzeit
- Eintönig: Immer wieder dieselben Testfälle, over and over again
- Isoliert: als Tester kann man selten die Umsetzung beeinflussen
Testen in Scrum ist
- Motivierend: Raschere Testresultate, schnellere Bugfixes
- Dankbar: Entlastung für Entwickler, positives Feedback
- Kontrolliert: eingebettet in Scrum Planung und Zyklus
- Abwechslungsreich: an der raschen Weiterentwicklung teilhaben
- Involviert: Mitreden und Lösungsvorschläge erwünscht
In der agilen Entwicklung sind explorative Tests wichtiger als strukturierte Test-Cases. Diese stehen aus Zeitgründen meist erst nach Launch zur Verfügung. Traditionelle Testtechniken werden im «Light»-Verfahren beigezogen: Test-driven Development, User Story based Testing, Requirements coverage Analyse, Risk-based Testing nach Prioritäten.
Für Tools wie das Bugtracking von Jira existieren Testing-Plugins für die entsprechende Test-Dokumentation.
Ein Tester im Scrum-Team ist ein vollwertiges Mitglied, d.h. er schätzt den Testaufwand bei der Sprint-Planung mit und nimmt am Daily Scrum teil.
Empfehlenswert ist die Feature-Präsentation während des Reviews durch den Tester anstelle des Entwicklers: Er kennt meist die End-to-End Prozesse besser als Entwickler, die «nur» Teile der Lösung entwickelt haben. Die Demo läuft flüssig über alle Software-Module hinweg. Gut ist auch, wenn der Kunde selber die Demo durchführt. Entsprechend muss er die Lösung bereits gut kennen und den vorgesehenen «Glattläufer»-Prozess einhalten.
Best Practice im Testing-Ablauf
- Einsatz eines Tools für Anforderungsmanagement, Fehlerverwaltung und Problembehandlung mit Workflow
- Anforderungsbasiertes Testing anhand von User Stories
- Der Entwickler schreibt ein «How to Test» pro Issue für externe Tester
- Sprint-Planung und Fortschritt stetig überwachen
- Tests möglichst rasch durchführen, Anhäufung von pendenten Testfällen vermeiden
- Integrationsfördernde Massnahmen zahlen sich aus: Anpassung an Kleidung, Sprache, Arbeitszeiten, Gewohnheiten des Teams, etc.
- Nahe beim Team sein: Physisch präsent oder mit Hilfe von elektronischen Kommunikationsmitteln
Der Aufwand für Regressionstests wächst bei Scrum mit jeder Iteration signifikant.
Entsprechend testet man nur noch risikobasiert was geändert hat und möglichst schnell auch automatisiert mit Hilfe von dedizierten Testing-Tools.
Lessons Learned
- Echte Entlastung der Entwickler
- Zusätzliches Bindeglied zum Kunden, Unterstützung für Product Owner und Scrum Master
- Schleichende Nachlässigkeit der Entwicklung (Unit-Tests?)
- Vorsicht vor «Technical Debts!»
- Dokumentation wird häufig vernachlässigt
- End-to-End Testing sauber planen
- Wer kümmert sich um die Test-Infrastruktur?
- Scrum Testing und Remote Testing: Kommunizieren z.B. über Skype
- Continuos Improvement & -Integration nutzen
- Regressionstests: Die grösste Herausforderung in Scrum
https://twitter.com/#!/WalterSchaerer/status/114387972257882113