Testautomatisierung in der agilen Software Entwicklung
Q-Event «Spice up your Test!» Einsatz und Nutzen von Testautomatisierung in agilen Software Projekten Urs Müller Senior Testautomation Engineer www.bbv.ch www.bbv.ch
Agenda • Agil testen • Agil und Automatisierung − Die Automatisierungspyramide − Agile Automatisierungsstrategie • Agiles (Test) Projekt: ein erfolgreiches Beispiel • Testautomatisierung im agilen Projekt: Beispielprojekt bei bbv
www.bbv.ch
Agil Testen Was ein Tester im agilen Software Umfeld können sollte oder erwarten muss.
www.bbv.ch www.bbv.ch
Der agile Tester • Ist Bindeglied zwischen Product Owner und Entwicklung • Hilft bei der Ausarbeitung von Stories • Stellt sicher, dass jede Entwicklerstory durch (automatisierte) Testfälle abgedeckt wird • Automatisiert Integrations- und GUI-Testfälle • Unterstützt Benutzer/Kunden beim User Akzeptanz Test (UAT) • Testet neue Stories explorativ • Denkbar: Review von Unit Tests
www.bbv.ch
Agil Testen: Auf den Punkt gebracht • Der Testprozess bleibt der gleiche, die Basis bleibt der fundamentale Testprozess. Grundlegend anders sind: − Die Testbasis − Die Wichtigkeit der Automatisierung − Integration der Tester ins Scrum-Team
www.bbv.ch
Agil und Automatisierung Welche Arten von Automatisierung kann man in agilen Projekten einsetzen und wie und wo soll man mit der Automatisierung anfangen?
www.bbv.ch www.bbv.ch
Testautomatisierungspyramide (nach Cohn) • Technologieseitige Tests (Unit / Integration) Wenige
Manueller Test
− Automatisiert − Sicherheitsnetz
• GUI Tests Anzahl Testfälle
GUI Tests Integrationstest
− Im Idealfall automatisiert
• Manueller Test − Exploratives Testen − User Akzeptanz Test
Unit/Komponententest
Viele
Warum automatisieren?
• Sicherheitsnetz • Zeitbedarf (Regressionstest) www.bbv.ch
Agil und Automatisierung: Strategie • Es gibt keine «beste» Strategie! Analyse • • •
Grundlage: Gute Entwicklungspraktiken! Herausfinden: Wo tut es dem Team am meisten weh? Herausfinden: Was ist für die Anwendung am wichtigsten? Guidelines
• • •
Im Vordergrund: Entwicklung vorantreiben Das richtige Werkzeug für die richtige Test-Stufe «Good enough solution» - aber keine «technical debt» Vorgehen
• •
Schichtweiser Ansatz (siehe Pyramide!) Design und Wartung berücksichtigen − Haupthandlung abdecken, ausbauen (Slices – Prinzip) − 1 Testfall = 1 Business Rule − Möglichst tief in der Pyramide ansetzen www.bbv.ch
Agilität und Testautomatisierung: Prinzipien Keep it simple! Coding Techniques
Quick Feedback Agile Prinzipien
«Whole Team Approach»
Learning by doing – do it! Do it right!
Prinzipien und anpassbare Regeln statt starre Prozesse www.bbv.ch
Praxisbeispiele agiler Testprojekte
Projekt 1: Ein erfolgreiches Projekt als Idealbeispiel Projekt 2: Agiles Testprojekt bei bbv Software Services AG
www.bbv.ch www.bbv.ch
Agiles Test-Projekt: ein erfolgreiches Beispiel
Erfahrungen aus einem erfolgreichen Projekt (Lisa Crispin, Beautiful Testing)
www.bbv.ch www.bbv.ch
Erfolgreiches Projekt: Allgemein • • • •
Applikation zur Darlehensverwaltung 2003: Legacy System ohne Form von Testautomatisierung Ziele und Regeln (Retrospektive als wichtiges Mittel) Ziele und Regeln: Beispiele − Jede Story muss getestet werden − Alle High Level Tests bis Tag 4 definiert − 1 Story für Test bereit am Tag 4 − Keine neuen Funktionen am letzten Sprint Tag • Toolauswahl durch ganzes Team • Ganzes Team für gesamte Automatisierung verantwortlich
www.bbv.ch
Erfolgreiches Projekt: Automatisierung • Schrittweise Automatisierung − Legacy Code mit neuem Design (logische Trennung) und Unit Tests neu schreiben − Nie mehr als 1 Tool/1 Technologie auf einmal neu einführen
• Projekt-Zeitachse:
GUI Smoketests Beginn: Unit Tests Funktionale Tests mit «Fitnesse»
2004
2005
99 Web Test Skripte 474 «Fitnesse» Tests 3864 Unit Tests
2009
www.bbv.ch
Agile Testautomatisierung: Beispielprojekt bei bbv
Erfahrungen aus einem laufenden Projekt bei bbv
www.bbv.ch www.bbv.ch
Beispielprojekt: allgemeine Informationen • Abrechnungssystem − Zahlreiche Schnittstellen − Serverbasiertes Drucksystem − Komplexe Buchungs- und Verrechnungsvorgänge − Desktop Client für Mitarbeiter − Webinterface für Kunden • Projektbeginn: 2002 • Technologien: .Net, ASP.Net, C, Java • Ab Januar 2009: Umstellung auf Scrum • Team: 4-7 Entwickler, 1-3 Tester • Seit Juli 2010: TFS 2010
www.bbv.ch
Beispielprojekt: «Going Agile» • Automatisierung von GUI Tests: 66 logische Testfälle • Refactoring des bestehenden Codes − Unit Tests erstellen − Zahl der Codezeilen verkleinern
Coverage
Codezeilen
30%
6000000
25%
5000000
20%
4000000
15%
Coverage 3000000
10%
2000000
5%
1000000
0%
0
LOC Unvisited LOC
www.bbv.ch
Beispielprojekt: Automatisierung (Zeitachse)
Wenige Unit Tests Ausbau Unit Testing, “Verify” Funktional: manuell, explorativ Aufbau RfT Framework Mit QC/QTP
Bis Januar 2010
Mai 2010
Ausbau Unit Testing, “Verify” Umstieg Coded UI Tests Microsoft TM
Juli 2010
Ausbau Unit Testing Ausbau Agiler Prozess Ausbau Coded UI Beginn: Aufbau Tests Acceptance Test Layer Beginn: Agiles Testing
September 2010
April 2011
www.bbv.ch
Beispielprojekt: Erfahrungen Allgemein • Automatisierung allgemein − Suchen/Generieren von Testdaten braucht am meisten Zeit! − Aufbau eines Frameworks und Umgebung: 3 Monate − Automatisierte Testfälle müssen unabhängig voneinander sein • «Agile Testing» − Schrittweise Umstellung/Einführung − Anpassung der Testaktivitäten an die Bedürfnisse des Teams − Person mit Testerrolle muss für das Team/Projekt voll verfügbar sein
www.bbv.ch
Erfahrungen: Werkzeuge • QC/QTP − viele Funktionen und Möglichkeiten (Scheduler, Testset Management, Checkpoints, Bearbeitung von Recordings) − Schwerfällig, komplex, teure Lizenz
• MTM/Coded UI Test − Echte IDE und echte Programmiersprache (entwicklerfreundlich) − Schnell (Testfallprogrammierung, IDE) − Noch nicht ausgereift (Scheduling, Bearbeitung von Recordings, Steuerung UI Element Erkennung)
www.bbv.ch
Schlusswort
Agil Software entwickeln – und testen…
Do it – have fun!
www.bbv.ch
???
www.bbv.ch
Danke! Urs Müller
[email protected] www.bbv.ch 28.04.2011
www.bbv.ch