Müssen wir wirklich schon wieder alles testen? Trotz langlaufender Testsuiten Fehler schnell und zuverlässig aufdecken

 
Agile Day - 04. Juni
 
11:45
12:30
 
Testen
 
Schwarzwald (1. OG)

Automatisierte Tests geben uns im agilen Projekt das nötige Vertrauen in unsere Code-Änderungen und das gute Gefühl nichts kaputt gemacht zu haben. Ironischerweise werden aber genau diese Tests auf Dauer zum Bremsklotz der alltäglichen Arbeit. Denn immer dann, wenn wir unsere Testabdeckung durch neue Testfälle verbessern, verlängert sich die Laufzeit der Tests. Auf Dauer oft so sehr, dass die kurzen Zyklen der agilen Entwicklung darunter leiden. Gerade bei End-to-End-Tests sind Testzeiten von Stunden oder Tagen keine Seltenheit. Je gewissenhafter wir testen um so träger der Prozess.

Die Test-Impact-Analyse zeigt auf, wie wir diesem Teufelskreis entrinnen. Im ersten Teil des Vortrags stellen wir diese Technik vor: Anstatt immer alle Tests laufen zu lassen, werden nur diejenigen selektiert, die tatsächlich den zuletzt geänderten Code zur Ausführung bringen, denn nur diese können eventuelle neue Fehler aufdecken. Zudem werden die verbleibenden Testfälle mit einer Heuristik so sortiert, dass die Tests die am meisten bisher ungetestete Änderungen abdecken zuerst ausgeführt werden. Dadurch sollen Fehler möglichst früh im Testlauf aufgedeckt werden, sodass die Entwickler diese schon vor dem Abschluss aller selektierten Tests analysieren und beheben können.

Die Test-Impact-Analyse ist ein generisches Verfahren, das für eine Vielzahl von Programmiersprachen und Werkzeuge zur Messung der Testabdeckung anwendbar ist. Es eignet sich ebenso für Unit-Tests wie Integrations- und UI-Tests. Auch die Unterstützung manueller Tests ist möglich. Dabei verstehen wir die Test-Impact-Analyse nicht als Ersatz des klassischen "Test-All". Vielmehr hilft sie dort schnelles Feedback zu erzeugen, wo Entwickler es benötigen: bei den täglichen oder Change-basierten Builds und Testläufen in der Continuous-Integration-Umgebung. Ein vollständiger Lauf aller Tests sollte auch weiterhin regelmäßig, beispielsweise einmal am Tag oder wöchentlich, erfolgen.

Den praktischen Nutzen der Test-Impact-Analyse haben wir in verschiedenen Studien untersucht. Diese aktuellen Forschungsergebnisse bilden den zweiten Teil unseres Vortrags und illustrieren wie die Technik in der Praxis helfen kann Testzeiten zu reduzieren. Unsere Untersuchungen zeigen, dass die Selektion der relevanten Tests eine erhebliche Zeiteinsparung von bis zu 97.5% bringen kann und das durch die Priorisierung der verbleibenden Tests 90% der fehlerhaften Builds in nur 2% der Testausführungszeit erkannt werden.

Wir setzen Test-Impact-Analyse bereits seit einem halben Jahr erfolgreich bei der Entwicklung unserer eigenen Software-Analyse-Plattform Teamscale und in ersten Pilotprojekten bei unseren Kunden ein. Unsere Erfahrungen aus diesem praktischen Einsatz bilden den dritten Teil unseres Vortrags.

# Was lernen die Teilnehmer?
- Wie man wachsende Testsuites und kurze Feedbackzyklen unter einen Hut bekommt
- Wie sich die Ausführungsdauer langlaufender Testsuiten erheblich verkürzen lässt und Fehler trotzdem verlässlich aufgedeckt werden können
- Wie Testabdeckung und Code-Änderungen sinnvoll zur Testselektion genutzt werden können
- Nach welchen Kriterien sich die Reihenfolge von Testfällen intelligent priorisieren lässt
- Welchen konkreten Nutzen Test-Impact-Analyse in Entwicklungsprojekten bringen kann
- Aktuelle Forschungserkenntnisse zum Thema und Erfahrungsberichte aus der Praxis zum Einsatz der Test-Impact-Analyse

Dr. Sven Amann

CQSE GmbH

Sven Amann ist Software Quality Consultant bei der CQSE GmbH. Er studierte Informatik an der TU Darmstadt und der Pontifícia Universidade Católica in Rio de Janeiro und promovierte am Fachgebiet Softwaretechnik der TU Darmstadt, mit Förderung durch das Führungskräfteentwicklungsprogramm Software Campus. Anfang 2017 gründete er AcademicsCode.com, mit dem Ziel Softwareentwicklung aus einem akademischen Blickwinkel zu diskutieren.