Conference Talk
Testing: Trotz lang laufender Testsuiten Fehler schnell und zuverlässig aufdecken
Testing: Trotz lang laufender Testsuiten Fehler schnell und zuverlässig aufdecken

Zusammenfassung

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 Sie aus diesem Vortrag mitnehmen

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

Folien

Problem solving

Invited Talks

Your location, our expertise

We are happy to come visit you in your office for an internal conference or a workshop. Our list of topics includes quality analyses, quality control, but also test control or introducing peer reviews. You are also welcome to pick a topic of your choice

60-90 minutes talk
About a software quality topic
In your office or remote
Our travel expenses only
Date by arrangement