Effiziente Modernisierung – Tests als Grundpfeiler für eine erfolgreiche Code-Transformation

Effiziente Modernisierung – Tests als Grundpfeiler für eine erfolgreiche Code-Transformation

Avatar von Ivonne und Christopher

Die IT-Branche ist geprägt von technologischen Innovationen die sich ständig weiterentwickeln. Somit ist die Modernisierung von Software zu einer Notwendigkeit geworden. Veraltete Systeme und Codebasen können nicht nur die Effizienz von Weiterentwicklungen hemmen und die Skalierbarkeit von Projekten einschränken, sondern auch die Sicherheit des gesamten Systems gefährden.

Die Modernisierung allein reicht dabei aber leider nicht aus. Damit Modernisierungsprojekte gelingen, müssen sie von sorgfältigen Tests begleitet werden. In diesem Artikel beleuchten wir die Gründe, warum der Einsatz unterschiedlicher Tests während des Modernisierungsprozesses unverzichtbar ist und welche entscheidende Rolle die Testpyramide dabei spielt.

Die Testpyramide als Orientierungshilfe

Die Testpyramide ist wie ein Berg: Die breite Basis besteht aus einer großen Anzahl an schnellen und kostengünstigen Unit-Tests, die alle Grundfunktionalitäten der einzelnen Module sicherstellen. Darüber liegt eine zahlenmäßig geringere Anzahl an Integrationstests, die sicherstellen, dass verschiedene Teile des Systems gut zusammenarbeiten. An der Spitze befinden sich End-to-End sowie Explorative Tests, welche die Funktionalität des Gesamtsystems prüfen, die für den Endanwender sichtbar sind. Je aufwändiger die jeweilige Testart zu erstellen und zu pflegen ist, desto verhältnismäßig geringer ist die empfohlene Anzahl an Tests.

Diese Struktur hilft, effizient zu testen und gleichzeitig eine umfassende Abdeckung zu gewährleisten. Mike Cohn und Martin Fowler erklären in ihrem Artikel „The Practical Test Pyramid“ anschaulich, wie die Testpyramide genutzt werden kann. Meist entscheiden Entwickler in Absprache mit dem Product Owner, welche Testarten für das Projekt eingesetzt werden. Im Folgenden möchten wir die unterschiedlichen Tests der Testpyramide kurz vorstellen und näher darauf eingehen, wofür sie benötigt werden.

1. Unit-Tests – Isoliertes Testen einzelner Codeteile

Ein Unit-Test überprüft den korrekten Ablauf einzelner Codeteile. So wird sichergestellt, dass die einzelnen Module unserer Anwendung korrekt und unabhängig voneinander arbeiten. Üblicherweise testen Unit-Tests ein bestimmtes Modul oder eine bestimmte Codeeinheit der Software ab und testen keine Abhängigkeiten zu anderen Modulen.

2. Integrationstest – Sicherstellen der Interoperabilität

Integrationstests dienen dazu, verschiedene voneinander abhängige Komponenten eines komplexen Systems im Zusammenspiel zueinander zu testen. Dabei werden Integrationstests üblicherweise für einzelne, abgegrenzte Subsysteme der Anwendung erstellt und deren Interoperabilität mit anderen, möglicherweise noch nicht realisierten Modulen, simuliert.

3. Akzeptanztests – Abdecken einzelner Funktionalitäten

Akzeptanztest stellen komplette Funktionalitäten der Anwendung sicher und testen somit das Zusammenspiel unterschiedlicher Module, ohne dass hierfür einzelne Module simuliert werden. Das kann beispielsweise durch den Einsatz einer Test-Datenbank erfolgen. So können Akzeptanztests zum Beispiel bei der Modernisierung eines CRM-Systems sicherstellen, dass grundlegende Funktionen wie das Hinzufügen von Kunden oder Verwalten von Kontakten weiterhin einwandfrei funktionieren.

4. UI-Tests (e2e) – Gewährleisten der gesamten Anwendungsfunktionalität

Um die bestehenden Funktionalitäten einer Anwendung zu bewahren, sollten vor der Durchführung von Modernisierungen alle betroffenen Anwendungsfunktionalitäten mit automatisierten End-to-End-Tests abgedeckt werden. Auf diese Weise können Stück für Stück nachträglich Anforderungen aus der Software herausgearbeitet und durch Tests abgesichert werden. Beispielsweise wird innerhalb eines CRM-Systems überprüft, ob das Hinzufügen eines neuen Kunden nicht nur die Datenbank aktualisiert, sondern ob auch die Benutzeroberfläche dementsprechend reagiert. Das ermöglicht eine schrittweise Modernisierung, ohne dass die Gesamtfunktionalität des Systems gefährdet wird, da kleinere Code-Änderungen schnell und zuverlässig überprüft werden können.

5. Skalierbarkeitstests – Skalierungsszenarien für unsere Anwendung

Mit Skalierbarkeitstests kann festgestellt werden, wie unsere Anwendung mit zunehmender Arbeitslast skaliert. Sie stellen sicher, dass unser Softwareprojekt mit den wachsenden Anforderungen der Umgebung Schritt halten kann. Der Last-Test ist die einfachste Form eines Skalierbarkeitstests; er wird durchgeführt, um das Verhalten eines Systems unter einer bestimmten erwarteten Belastung zu verstehen. Beispielsweise kann das die gleichzeitige Anzahl aktiver Benutzer innerhalb der Anwendung sein, die eine bestimmte Anzahl von Transaktionen innerhalb einer festgelegten Dauer ausführen. Der Test gibt somit die Reaktionszeiten aller wichtigen geschäftskritischen Transaktionen an und ermöglicht das überwachen und identifizieren von Engpässen in der Datenbank, dem Anwendungsserver und der Hardware.

6. Exploratives Testen – Erschließen aller Funktionen unserer Software

Explorative Tests versuchen herauszufinden, wie eine Software tatsächlich funktioniert. Die Qualität des Tests hängt von der Fähigkeit des Testers ab, Testfälle zu erfinden und Programmfehler zu finden. Je mehr der Tester über die zu testende Software und über die verschiedenen Testmethoden weiß, desto höher wird die Qualität des Tests. Exploratives Testen kann als Teil einer umfassenden Testabdeckungsstrategie mit einbezogen werden.


Warum Modernisierung scheitert

Ein Leitfaden für Projektverantwortliche

Dieses Whitepaper gibt Dir einen umfassenden Überblick über die wirklichen Herausforderungen der Softwaremodernisierung und zeigt Dir praktische Lösungswege auf. Als besonderes Extra findest Du eine Checkliste, die Dir dabei hilft, die Modernisierung erfolgreich umzusetzen.


Sicherheit und Performance der Anwendung mit Tests gewährleisten

Das sind natürlich nicht alle Szenarien, die in einem Modernisierungsprojekt beachtet werden sollten. Unserer Erfahrung nach gehören die folgenden beiden Tests ebenfalls zu den Must-haves:

Security Tests – Gewährleisten der Anwendungssicherheit

Sicherheitstests agieren als Wächter vor potenziellen Risiken und testen verschiedene Angriffsszenarios auf die Software ab. Ein bekannter Security-Test ist der Penetration-Test (kurz „Pentest“); er bezeichnet das manuelle Überprüfen von softwarebasierten Systemen und IT-Systemen auf Sicherheitslücken. Es werden diverse Angriffsszenarios durchgeführt, um so reale Angriffe auf das System zu simulieren und hierdurch ein Bild der gesamten Sicherheit eines Softwareprodukts zu erstellen.

Performance Tests – Sicherstellen der Anwendungsperformance

Der Performance-Test ist ein systematischer Testansatz, um die Leistung einer Anwendung in Bezug auf Reaktionsfähigkeit und Stabilität unter Last zu validieren. Diese Testart dient auch dazu, andere Qualitätsattribute des Systems – wie Skalierbarkeit, Zuverlässigkeit und Ressourcennutzung – zu untersuchen, messen, validieren und verifizieren. Performance-Tests können zudem als Treiber für Optimierungen genutzt werden. Beim Stress-Test handelt es sich um eine Variante, die eingesetzt wird, damit die oberen Kapazitätsgrenzen innerhalb eines Systems verstanden werden können. Diese Art von Test wird durchgeführt, um die Robustheit des Systems in Bezug auf extreme Lasten zu bestimmen und hilft Anwendungsadministratoren festzustellen, ob das System ausreichend funktioniert, wenn die aktuelle Last deutlich über dem erwarteten Maximum liegt.

Von Legacy zu Leading-Edge – Tests als Treiber für Code-Modernisierungsprozesse

Die Modernisierung von Code ist heute mehr als nur eine technische Anpassung. Sie ist ein wesentlicher Schritt, um Software robust, sicher und zukunftsfähig zu machen. Der Einsatz von Tests spielt dabei eine entscheidende Rolle. Tests stellen sicher, dass die Modernisierung unserer Software nicht nur reibungslos verläuft, sondern auch, dass alle essenziellen Aspekte hinsichtlich der Softwarequalität abgedeckt sind. Die Vielfalt der Tests bildet dabei ein ganzheitliches Bild der Softwarequalität.

Insgesamt bieten die genannten Testarten ein starkes Fundament für eine moderne und zuverlässige Software, die nicht nur den heutigen, sondern auch den zukünftigen Herausforderungen gewachsen ist. Investitionen in umfassende Tests sind langfristige strategische Entscheidungen, welche die Grundlage für eine innovative und widerstandsfähige Software schaffen und somit den Erfolg in der sich stetig entwickelnden IT-Landschaft sichern. Die Testpyramide hilft uns dabei, einen Überblick zu behalten über die unterschiedlichen Testarten und deren zahlenmäßige Gewichtung im Projekt.

Unsere Modernisierungs-Projekte

Avatar von Ivonne und Christopher

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Für das Handling unseres Newsletters nutzen wir den Dienst HubSpot. Mehr Informationen, insbesondere auch zu Deinem Widerrufsrecht, kannst Du jederzeit unserer Datenschutzerklärung entnehmen.