Software-Qualität verbessern

Die fünf Gebote der Embedded-Software-Entwicklung

28. September 2015, 10:02 Uhr | von Dr. John Paliotta
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Änderungsbasiertes Testen

Bild 3: Die 20% bis 30% nicht erreichten Codes mittels Modultests überprüfen
Bild 3: Die 20% bis 30% nicht erreichten Codes mittels Modultests überprüfen
© Vector Software

Sobald durch die Codeabdeckungsanalyse die Vollständigkeit der Tests gegeben ist und die Tests im gesamten Unternehmen eingesetzt werden, kommt der nächste Schritt: sicherstellen, dass die Tests zügig durchgeführt werden. Einer der Gründe, warum Tests zwischen verschiedenen Gruppen aufgeteilt werden, ist, dass es Stunden oder gar Tage dauern kann, einen Gesamtsystemtest durchzuführen. Es ist für einen Entwickler aber unzumutbar, wenn er nach der Änderung einer einzelnen Codezeile eine zehnstündige Testphase durchführen muss. Wie also die Testzeit verringern, gleichzeitig aber die Vollständigkeit der Tests gewährleisten? Der Schlüssel ist, eine skalierbare Testinfrastruktur zu bilden, die parallele und änderungsbasierte Tests nutzt [3].

Individuelle Tests müssen »atomar«, klein und schnell durchführbar sein. Zu häufig werden Testsuiten im Laufe der Zeit mit neuen Tests, die einfach in bereits existierende Tests eingefügt worden sind, eng verkoppelt. So werden die Tests anfällig und deren Wartung sehr zeitintensiv. Dieser einfache Gedanke sollte bei der Gestaltung von Tests im Hinterkopf behalten werden: Jeder Test sollte seine eigenen Vorbedingungen definieren und sich nicht auf das Ergebnis (Output) anderer Tests verlassen (Bild 3). Abgesehen von den Vorteilen bei der Testwartung, ermöglicht die Neugestaltung des Testaufbaus:

  • änderungsbasiertes Testen – es werden nur die von der Softwareänderung betroffenen Tests durchgeführt;
  • parallele Testausführung – Hunderte von individuellen Tests werden simultan ausgeführt. 

Obwohl heute jedes Unternehmen ein Software-Build-System im Einsatz hat, das unbeaufsichtigte inkrementelle Anwendungserstellung ermöglicht, haben die meisten keine inkrementellen Testmöglichkeiten implementiert. Viel zu oft werden Tests zwar regelmäßig, aber nicht ständig, inkrementell und vollautomatisiert durchgeführt. Änderungsbasiertes Testen (Change-Based Testing; CBT) analysiert alle Änderungen an der Codebasis und selektiert daraufhin alle Tests, die von diesen Änderungen betroffen sind. So lässt sich vollständiges Testen innerhalb recht kurzer Zeit gewährleisten. Weiterhin stellt änderungsbasiertes Testen ein Hilfsmittel dar, einen strengen Continuous-Integration-Entwicklungsprozess (CI) zu implementieren. Während der Check-in-Phase der CI ist CBT ein effizientes Mittel, die Erstellung zu verifizieren sowie Probleme frühzeitig zu erkennen.

Um die Geschwindigkeit weiter zu erhöhen, sollte man parallele Tests in Betracht ziehen. Durch die Integration der Testplattform mit einem Continuous-Integration-Server und virtualisierten Testmaschinen lässt sich die Gesamttestzeit von Stunden auf Minuten oder sogar Sekunden verkürzen.

passend zum Thema


  1. Die fünf Gebote der Embedded-Software-Entwicklung
  2. Tests vereinfachen
  3. Änderungsbasiertes Testen
  4. Kontinuierliches Refaktorieren des Codes

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Vector Software Germany