Herausforderung
Ungefährdeter Produktiveinsatz trotz hoher Entwicklungsdynamik
Die Software ist bereits seit 10 Jahren mit etwa 1.000 Usern im Produktiveinsatz. Einige systemrelevante Prozesse sind von der Verfügbarkeit und korrekten Funktion der Applikation abhängig. Änderungen bei internen Betriebsabläufen und der allgemeine technologische Fortschritt im IT-Umfeld führen zu einem steten Weiterentwicklungsdruck. Neue Funktionen müssen rasch zur Verfügung gestellt werden, neue Technologien müssen adaptiert und integriert werden. Dabei darf jedoch der Produktiveinsatz der Software nicht behindert werden.
Zu Beginn des Projekts erfolgte der Softwaretest relativ unstrukturiert und impulsgetrieben. Neue Funktionen wurden zwar intensiv, aber nur teilweise anhand nachvollziehbarer Kriterien getestet. Weniger naheliegende Testaspekte (z.B Datensicherheit) wurden häufig übersehen und Testergebnisse nur sehr lückenhaft dokumentiert. Der Versuch, das Testing allein durch den Aufbau von Testfallkatalogen und den Einsatz von Testmanagementsystemen auf ein angemessenes Niveau zu heben, wurde aufgrund des immensen Aufwands für die Erstellung und das Änderungsmanagement des Testfallkatalogs bei gleichzeitig relativ geringem Mehrwert wieder eingestellt. Da es - insbesondere durch unerwartete Regressionsfehler - immer wieder zu ungeplanten Downtimes kam, musste die Wirksamkeit des Testings erhöht werden, um damit unmittelbar Ausfallzeiten zu reduzieren.
Lösung
Anpassung des Entwicklungsprozesses und strukturiertes Software-Testing
Qualität lässt sich nicht in ein Produkt "hineintesten", sondern wird dadurch erreicht, dass bereits der Entwicklungsprozess im Hinblick auf ein erfolgreiches Testing optimiert wird und sich die Testphase nicht auf eine einfache Fehlersuche beschränkt. So wird nun bereits bei der Erstellung und Strukturierung der Spezifikation, aber auch bei der Aufteilung der Umfänge in einzelne Tickets darauf geachtet, dass der Test auf Spezifikationskonformität leicht und effizient möglich ist.
Der in Sprints organisierte Entwicklungsprozess wurde so verändert, dass die Entwickler am Sprintende im Rahmen einer sogenannten Stabilisierungsphase die entstandenen Artefakte gemäß dem 4-Augen-Prinzip testen und gefundene Fehler nach Möglichkeit sofort beheben. Je nach Situation und Auslastung kann das Test-Team bereits in dieser Phase unterstützen, die eigentliche Übergabe erfolgt aber erst im gemeinsamen Review, in dem die Entwickler unter anderem darstellen, welche automatisierten Tests implementiert und welche manuellen Tests durchgeführt wurden. Zudem zeigen die Entwickler dem Test-Team technische Abhängigkeiten und kritische Applikationsbereiche auf, sofern diese Art und Inhalt der durchzuführenden Tests beeinflussen könnten.
Das Test-Team erarbeitet auf Basis der Spezifikation, der im Sprint geplanten Tickets und den Erkenntnissen aus dem Sprint-Review einen Testplan. Dabei werden alle relevanten Testaspekte (wie z.B. Spezifikationskonformität, Validierung (Eignungsprüfung), Misuse, UX-Design, Performance, Regression, Bugfixing, etc.) betrachtet und die durchzuführenden Test-Aktivitäten ausgeplant und (zeitlich) abgeschätzt. Steht nicht genügend Zeit für einen vollumfänglichen Test zur Verfügung wird bereits vorab entschieden, welche Testaspekte zwingend betrachtet werden müssen und wo Einschränkungen in Kauf genommen werden können. Die Testdurchführung wird im Testprotokoll dokumentiert. Gefundene Fehler oder auch Verbesserungsvorschläge (z.B. aus der Validierung) werden in neuen Tickets dokumentiert. Schließlich werden die Testergebnisse zusammengefasst und dem Kunden zur Verfügung gestellt. Bei ausreichender Reife kann in Abstimmung mit Projektleiter und Kunden die Produktivfreigabe erteilt werden.
Mehrwert
Gleichbleibend hohe Qualität und Verfügbarkeit der Software mit gut planbarem Aufwand beim Test
Die konsequente Planung und Durchführung der Software-Tests schlugen sich unmittelbar in einem Rückgang der Supportanfragen, Fehlermeldungen und Störungen nieder. Die "sichtbare" Qualität der Software wurde also nachhaltig gesteigert und konnte auf einem hohen Niveau gehalten werden. Durch die gesamthafte und frühzeitige Betrachtung aller qualitätsrelevanten Aspekte werden zudem konzeptionelle Schwachstellen früher erkannt und notwendige Änderungen können daher früher wieder in den Entwicklungsprozess einfließen. Der befürchtete Mehraufwand beim Test wurde daher mittelfristig durch Einsparungen beim Entwicklungsaufwand kompensiert. Dieser Effekt wurde durch die Umstellungen im Entwicklungsprozess verstärkt, die zu einer engeren Verzahnung zwischen Entwicklungs- und Test-Team geführt haben. Durch den gewachsenen Austausch zwischen Entwicklern und Testern wurde die Zusammenarbeit effektiver und die Kommunikationswege kürzer.
Das beschriebene Vorgehen zur Qualitätserhöhung durch strukturiertes Software-Testing ist effektiv, effizient, skalierbar und anpassbar. Wir bieten unsere Leistungen in diesem Bereich sowohl als eigenständiges Produkt als auch in Kombination mit der agilen Software-Entwicklung an, um damit insbesondere mittelständische Unternehmen bei der Bereitstellung hochwertiger, individueller Software-Lösungen zu unterstützen.