Ein Angebot von

Quality @ Speed – Fünf notwendige Schritte zur Sicherung der Softwarequalität

| Autor / Redakteur: Mark Lambert * / Sebastian Gerstl

Die Blaupause für Continuous Testing: Mit Hilfe automatisierter Testmechanismen kann die nötige Agilität erzielt werden, um den Zeitplan einer Entwicklungspyramide zu halten und zugleich Qualität sicherzustellen.
Die Blaupause für Continuous Testing: Mit Hilfe automatisierter Testmechanismen kann die nötige Agilität erzielt werden, um den Zeitplan einer Entwicklungspyramide zu halten und zugleich Qualität sicherzustellen. (Bild: Parasoft)

Nicht weniger als 70% der IT-Projekte schlagen fehl oder erfüllen ihre Ziele nicht. Dieser Beitrag erläutert, wie man die für agile und iterative Methoden erforderliche Agilität erreichen kann und zugleich Vorgaben in Sachen Qualität und Sicherheit erfüllt – oder sogar übertrifft.

Es zeigt sich, dass das Testen sowohl das Problem als auch die Lösung ist, wenn höhere Qualität in kürzerer Zeit erzielt werden soll. In einem agilen Prozess lassen sich viele Entwicklungsschritte zusammenschrumpfen, um für das Design und die Implementierung sinnvolle Funktionsabschnitte zu erzeugen. Allerdings ist das Integrieren neuer Funktionalität riskant, und der Umfang des Testens unklar. Das Testen ist einer der wichtigsten Gründe, dass Software-Teams ihre Probleme mit der Nutzung agiler Methoden haben. Die Teams testen zu wenig oder zu viel – und verlieren die eigentlich angestrebte Agilität.

Continuous Testing gilt als eine Lösung für die bei der Anwendung von DevOps und agiler Entwicklung auftretenden Probleme, auch wenn ihre Übernahme und Optimierung über die Zeit Fingerspitzengefühl braucht.

Die Testpyramide – Vorstellung vs. Realität

Die ideale Testpyramide legt fest, wo man den Zeit- und Arbeitsaufwand in einem Projekt am besten investiert - nämlich in eine umfassende Reihe von Modultests an der Basis der Pyramide. Diese werden durch API- und Service-Tests sowie durch eine deutlich niedrigere Zahl von system- und GUI-basierten Tests an der Spitze der Pyramide ergänzt.

Oft allerdings wird diese Pyramide auf den Kopf gestellt. Die Teams stecken also zu viel Zeit und Aufwand in fragile, komplexe GUI-Tests auf der System-Ebene, die auf die Implementierung und Integration der vollen Funktionalität angewiesen sind. Das führt zu Tests, die in den früheren Phasen des Softwareentwicklungs-Lebenszyklus nicht kontinuierlich ausgeführt werden können. Entscheidend für ein erfolgreiches Continous Testing ist, den Fokus auf automatisierte Modul- und API-Tests zu richten, die sich kontinuierlich ausführen lassen, während die Entwickler die neue Funktionalität implementieren.

Fünf Schritte, um durch Continous Testing Qualität@Speed zu erzielen

Ziel eines jeden Entwicklungsprojektes sollte es sein, die für die Einhaltung des Zeitplans nötige Geschwindigkeit zu halten (Speed) und damit verbunden ein garantiertes Einhalten der Softwarequalität zu erreichen (Quality). Dies kann mit Hilfe von Continuous Testing erreicht werden. Dazu sollten sich Entwicklerteams an diese fünf Schritte halten:

1. Erstellen eines Fundaments aus Modultests durch das automatisierte Erstellen, Ausführen und Pflegen der Tests. Nur durch ein vereinfachtes Erstellen und Pflegen der Modultests bringt man Entwicklungs-Teams dazu, im gesamten Projekt Modultests für sämtliche Komponenten zu nutzen.

2. Nicht auf anfällige, auf die Benutzeroberfläche (UI) ausgerichtete Tests in einer späten Entwicklungsphase stützen, denn hierdurch wird das Diagnostizieren und Beheben der Fehler höchst zeit- und kostenintensiv. Anstatt sich auf das Automatisieren aller manuellen Testszenarien zu konzentrieren, sollte man in ein solides Fundament aus Modul- und API-Tests investieren. So stellt man sicher, dass die Architektur, die mit dem UI kommuniziert, von vornherein solide ist.

3. Verstehen der Codeabdeckung in Auf- und Abwärtsrichtung entlang der ganzen Pyramide sowie der Rückverfolgbarkeit auf die Anforderungen bzw. die Anwender-Storys, ansonsten wissen die Entwickler-Teams nicht, was getestet wurde und was nicht. Versteht man zudem die Testabdeckung nicht, weiß man auch nicht, was auf den einzelnen Ebenen der Pyramide zu testen ist. Selbst geringfügige Änderungen erzeugen dann einen so großen Prüfaufwand, dass der gesamte Prozess ausgebremst wird.

4. Zeitliches Vorverlegen der Service-Virtualisierung von Applikations-Abhängigkeiten, damit API-Tests wesentlich früher im Entwicklungs-Lebenszyklus beginnen können. Erfolgsentscheidend sind eine höhere Automatisierung und die frühzeitigere Aufdeckung von Fehlern wie etwa Security-, Architektur- und Performance-Defekten.

5. Beschleunigen der agilen Entwicklung mit einer Änderungsauswirkungs-Analyse (Change Impact Analysis) für jeden Build. Es schafft die Grundlage, um die Risiken im Detail zu verstehen, die mit jeder neuen Iteration hinzugekommen sind. Die von der Änderungsauswirkungs-Analyse erzeugten Ergebnisse sind entscheidend dafür, das Testen ausschließlich auf die unbedingt zu prüfenden Punkte zu fokussieren, anstatt wie sonst üblich nach dem Gießkannenprinzip vorzugehen. Echtes kontinuierliches Testen wird erst durch intelligente, datengestützte Entscheidungen sinnvoll.

Verbesserungen starten

Am besten beginnt man damit, die Testpyramide zu überprüfen und anschließend zu beurteilen, in welchem Stadium sich das Projekt derzeit befindet. Gibt es einen Grundbestand an automatisierten Modultests, die für jeden Build durchgeführt werden? Werden möglichst viele Produkt-APIs automatisiert getestet? Kommt die Virtualisierung zum Einsatz? Stützt sich das Testen auf eine komplexe Abfolge manueller UI-Tests, die erst dann ausgeführt werden können, wenn das System fast fertig ist? Verbesserungen basieren auf einer geeigneten Testpyramide, Automatisierung sowie einer Erfassen und Auswerten der Daten.

Der vorgeschlagene Weg zum Erfolg beinhaltet die folgenden Schritte:

  • 1. Testautomatisierung nutzen - sowohl beim Erstellen als auch beim Ausführen und Managen der Tests, durch Erweitern der bestehenden Modultest-Suite, dass ein sinnvoller Anteil des Produkt-Codes abgedeckt wird.
  • 2. Statische Analyse einsetzen - zum Analysieren der gesamten Codebasis (einschl. Bestands- und Third-Party-Code), um bei der Aufdeckung von Bugs und Sicherheitslücken zu helfen, die während des Testens möglicherweise nicht gefunden werden. Auch für die Durchsetzung der für ein Projekt geltenden Codierstandards ist die statische Analyse wichtig.
  • 3. Abhängigkeit von System- und UI-Tests verringern. Auch wenn Tests auf der System-Ebene nach wie vor wichtig und notwendig sind, sollten sie nicht an erster Stelle stehen. Software-Teams können ihre Abhängigkeit von diesen UI- und Systemtests reduzieren, indem sie sich eine solide Basis aus Modul- und API-Tests aufbauen. Werden die weiteren hier gegebenen Empfehlungen beachtet, dürften die Systeme zu einem großen Teil bestens erprobt sein, noch bevor die Tests auf der System-Ebene beginnen.
  • 4. Nutzen der Service-Virtualisierung, um automatisierte API-Tests in einer deutlich früheren Entwicklungsphase zu ermöglichen. Das Vorverlegen der API-Tests hilft bei der Detektierung kritischer Aspekte des Systems wie etwa der Solidität der Performance und der Architektur. Auch für Security-Tests ist diese Phase wichtig.
  • 5. Mithilfe von Datenanalysen entscheiden, was getestet werden soll. Die Fokussierung des Entwicklungs-Teams auf den Mindestumfang an Tests, mit dem sich in jeder Iteration die geeignete Abdeckung erzielen lässt, trägt entscheidend dazu bei, den agilen Entwicklungsmethoden die Agilität zurückzugeben.

Die Belastungen, denen sich moderne Softwareentwicklungs-Teams ausgesetzt sehen, machen es schwierig, Produkte spezifikationsgemäß und in der vorgesehenen Zeit zu realisieren. Neue Methoden wie die agile Entwicklung haben ihnen zwar geholfen, sich auf die richtigen Dinge zu konzentrieren, doch nach wie vor sind viele Projekte verspätet und fehleranfällig. Das Testen ist dabei einer der wichtigsten Aspekte der Entwicklung, mit denen moderne Entwicklungsmethoden ihre Probleme haben. Um hier greifbare Verbesserungen zu erzielen, sollte man eine solide Basis aus automatisierten Modultests schaffen, und API-Tests mithilfe der Service-Virtualisierung frühzeitig und häufig ausführen. Nicht zu vergessen: Zieht man für das Testmanagement Datenanalysen heran, werden die Testresultate deutlich besser.

Künstliche Intelligenz als Chance für schnellere, bessere Testautomatisierung

Künstliche Intelligenz als Chance für schnellere, bessere Testautomatisierung

18.10.18 - 53 % der deutschen CIOs und IT-Directors nutzen in ihren Unternehmen bereits künstliche Intelligenz oder planen die Einführung – damit liegen sie über dem globalen Durchschnitt von 45 %. Gleichzeitig sagen aber 48 %, dass ihnen noch die richtigen Tools fehlen, um Testing-Prozesse zu automatisieren. Das geht aus dem von Capgemini, Microsemi und Sogeti erstellten World Quality Report hervor. lesen

Warum Modultests unbeliebt sind und wie man sie rehabilitieren kann

Warum Modultests unbeliebt sind und wie man sie rehabilitieren kann

05.02.18 - Für die meisten Entwickler sind Modultests nicht mehr als ein unvermeidbares Übel, das man einfach hinter sich bringen muss. Warum ist das so, und wie kann Softwareautomation Abhilfe bieten? lesen

Entwicklung vom agilen zum Continuous Testing

Entwicklung vom agilen zum Continuous Testing

28.11.17 - Bereits seit einigen Jahren steht die agile Transition in vielen Organisationen im Fokus. Doch wie passt solch ein agiler Projektansatz zu den bisherigen oftmals nach dem Wasserfallprinzip organisierten Teststrukturen? Und wie entwickelt sich das agile Testen weiter? lesen

* Mark Lambert ist Vice President Products bei Parasoft in Pasadena, Kalifornien.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45555853 / Test & Qualität)