Suchen

Automatisiertes Software-Testing DevOps macht maschinelles Lernen unerlässlich

| Autor / Redakteur: Eran Kinsbruner * / Stephan Augsten

DevOps steht sinnbildlich für die Rationalisierung der Software-Entwicklung und -Bereitstellung. Doch die schnellen Release-Zyklen erzeugen einen Testing-Overhead, der ohne Machine Learning auf Dauer nur schwer zu bewältigen sein wird.

Firmen zum Thema

Gerade im Bereich der Software-Tests kommt im Zuge von DevOps-Strategien so viel Material zusammen, dass eine Auswertung kaum mehr zu stemmen ist.
Gerade im Bereich der Software-Tests kommt im Zuge von DevOps-Strategien so viel Material zusammen, dass eine Auswertung kaum mehr zu stemmen ist.
(Bild: janjf93 / Pixabay )

Die zunehmende Verbreitung von DevOps hat das Volumen an Softwaretests und die damit verbundene Komplexität auf eine völlig neue Stufe gehoben. So führt beispielsweise eine der weltweit größten Fluggesellschaften 1,3 Millionen Testabläufe für jeden Versionszyklus durch – und das in einer komplexen, mehrdimensionalen Testumgebung, die viele unterschiedliche Arten von Tests, Frameworks und Entwicklern abdeckt.

Dies ist kein Einzelfall: Das Volumen und die Frequenz von Testprozessen schnellt branchenübergreifend in die Höhe. So ist es wenig überraschend, dass die Interpretation der Ergebnisse einer millionenfachen Testausführung eine Herausforderung darstellt, selbst für das kompetenteste Team.

Natürlich können diese auf automatisierte Continuous-Testing-Prozesse zurückgreifen (und tun dies auf die ein oder andere Weise höchstwahrscheinlich auch). Doch in vielen Fällen mag dies nicht genügen. Es ist noch immer ein langer Weg bis zur Implementierung einer Test-Automatisierung, die auf eine verlässliche, stabile und effiziente Weise über die gesamte DevOps-Pipeline hinweg funktioniert.

In der Praxis gibt es immer wieder Anhaltspunkte, die nahelegen, dass mehr als 40 Prozent der gescheiterten Automatisierungsversuche eine direkte Folge von Skript-Fehlern sind. Der Wert von Continuous Testing ist daher auch immer kritisch zu sehen. Anders ausgedrückt: Scripting ist wahrscheinlich die größte Ursache für gescheiterte Automatisierungsversuche, und ohne automatisiertes Testen ist hochskaliertes DevOps schwer, wenn nicht gar unmöglich zu realisieren.

Maschinelles Lernen als Lösungsweg

Aus diesem Grund fragen sich immer mehr Unternehmen derzeit, wie der Einsatz von Machine Learning (ML) dabei helfen kann, sinnvolle und aussagekräftige Erkenntnisse aus dem zunehmenden Grundrauschen zu ziehen, das durch Testergebnisse erzeugt wird, sowie zu verstehen, welche Auswirkungen diese ganz konkret haben. Dies scheint der einzige Weg zu sein, der Masse an Testdaten Herr zu werden, die in den Lebenszyklen moderner Softwareentwicklung anfallen und anfallen müssen.

Maschinelles Lernen ist zu einem der populärsten Tech-Begriffe unserer Zeit geworden, ein Schlagwort, von dem selbst Personen außerhalb der Technologiebranche gehört haben. Wie ein Konzept, das aus einem Science-Fiction-Film entsprungen ist, hat es die Vorstellungskraft von Menschen weltweit beflügelt, und ist – je nach Standpunkt des Betrachters – entweder positiv oder auch negativ besetzt.

Unabhängig davon schlägt maschinelles Lernen Wellen, auch und gerade wenn es um die neuesten Techniken und Tools für automatisiertes Testen geht. In Kombination mit anderen Smart-Analytics-Elementen ist es zu einem zentralen Baustein des Werkzeugkastens zur Fehler-Ursachen-Analyse geworden.

Auf praktischer Ebene kann maschinelles Lernen die Notwendigkeit für das Entwickeln und Pflegen von Testskripten nämlich obsolet machen. Stattdessen werden Änderungen daran situationsbezogen vorgenommen, sodass Skripte kontinuierlich ablaufen und sich selbst korrigieren, ohne dabei andere Aspekte der Softwareentwicklungs-Pipeline zu behindern.

Vorteile für die App-Entwicklung

Der potenzielle Wert des maschinellen Lernens wird besonders deutlich beim Testen von Mobil- und Web-Apps, da es sich bei den entsprechenden Geräten und Systemen oft um sehr fragmentierte und komplexe Plattformen handelt. Entsprechend schwierig ist es, im Test-Kontext mit ihnen zu arbeiten.

Hier kann maschinelles Lernen dafür sorgen, dass alle erforderlichen Plattformen in der Testumgebung sichtbar, verbunden und im für den Test erforderlichen Zustand („ready-state mode“) bleiben. So kann die Technologie im Testlabor beispielsweise darauf aufmerksam machen, wenn eines der Systeme veraltet ist, die Verbindung zum WLAN verloren hat oder ein anderes Problem besteht – und zudem dabei unterstützen, die Ursache hierfür nachzuvollziehen.

Darüber hinaus kann maschinelles Lernen helfen, Trends und Muster aufzuzeigen. Die Technologie unterstützt nicht nur dabei, große Datenmengen zu visualisieren, sondern auch, tiefergehende Einblicke zu gewinnen und nachzuvollziehen, was sich im Verlauf der vergangenen Wochen oder Monate zugetragen hat. So ist ein entsprechendes System etwa in der Lage, den problematischsten Funktionsbereich in einer Anwendung zu identifizieren, zum Beispiel in Form einer „Top 5 der häufigsten gescheiterten Tests der letzten zwei oder drei Test-Zyklen“.

Ebenso lässt sich herausfinden, welche mobile bzw. Web-Plattformen die fehleranfälligsten der vergangenen Zyklen waren. Wurde ein bestimmter Fehler durch ein Problem im Testlabor verursacht, durch ein unerwartetes Pop-up oder eine Sicherheitsverletzung? Mithilfe von maschinellem Lernen lassen sich Antworten darauf finden.

Anwendungsbeispiel Bankwesen

Konkret werden diese Vorteile beispielsweise bei bankenspezifischer Software deutlich. Dort finden sich verschiedenste Szenarien, die umfassende Tests erforderlich machen: Von der smarten Authentifizierung auf unterschiedlichen Mobilgeräten über die Hinterlegung einer Rechnung per Kameraaufnahme bis hin zum Auffinden der nahegelegensten Geschäftsstelle per Ortungsdienste.

Greift der Anwender zum ersten Mal von seiner Banking-App aus auf die Kamera zu, wird er höchstwahrscheinlich ein Pop-up sehen, das die Berechtigung zur Nutzung der Kamera durch die Anwendung abfragt. In einem Szenario wie diesem ist ML-basiertes Testen in der Lage, bereits frühzeitig zu erkennen, dass ein solches Pop-up nicht ordnungsgemäß verarbeitet wurde.

Dieser Hinweis wiederum kann den Entwicklern eine umfassende Fehlersuche in der Zukunft sowie potenzielle Verzögerungen im Ablauf ersparen. ML-basiertes Testen ist in der Lage, zur Laufzeit zu identifizieren, dass ein wichtiger Aspekt im Zusammenhang mit diesen Pop-ups übersehen wurde oder die Sicherheitswarnungen bezüglich der Benutzerberechtigungen ein Problem erzeugt haben.

Bessere Ergebnisse, schnellere Prozesse

Erkenntnisse wie diese sind zentral. Teams investieren Zeit, Ressourcen und Geld in die Automatisierung von Test-Aktivitäten, doch der entscheidende Punkt, an dem sich diese Investitionen wirklich auszahlen und Früchte tragen, ist das Reporting. Denn bis zu dieser Stufe laufen die Tests „hinter den Kulissen“ ab.

Entsprechend schwer ist es, zu ermitteln, ob dabei tatsächlich echte Probleme identifiziert wurden oder nicht. Eine effiziente Testanalyse in großem Maßstab kann nur gelingen, wenn Teams wirklich verstehen, was innerhalb ihrer Software geschieht und ob ihre Tests einen tatsächlichen Mehrwert bringen (und falls nicht, warum). Gerade wenn es um eine solche Detailtiefe geht und gleichzeitig eine hohe Skalierung erforderlich ist, wird der Wert von Test-Automatisierung deutlich

Natürlich spielt all dies auch mit Continuous Integration zusammen. Continuous Integration stellt sowohl den Motor des Entwicklungsprozesses wie auch den Klebstoff zwischen den Prozessstufen dar, vom Kodieren über das Testen bis hin zum Release und Produktivbetrieb. Entsprechend können ineffiziente Test-Prozesse klassischerweise die Bereitstellung eines Release behindern.

Je größer also die Transparenz für die Continuous-Integration-Prozesse, desto geringer dieses Risiko. Tatsächlich ist genau das der Weg, wie ML-basiertes Testen Release-Zyklen beschleunigen kann, anstatt diese zu blockieren: Durch die Erhöhung der Transparenz, der Reduzierung von Risiken und die Unterstützung einer kontinuierlichen Verbesserung.

Auf die Kultur kommt es an

Dennoch sind entsprechende Tools für automatisiertes Testen allein nicht genug: Ebenso wichtig ist die Etablierung einer angemessenen Kultur innerhalb des Unternehmens in Bezug auf moderne Testprozesse. In Teilen der medialen Berichterstattung war maschinelles Lernen als zukünftiger Jobkiller verrufen. Trifft dies auch im Kontext des Software-Testing zu?

Was sich tatsächlich bei entsprechenden Vorreitern in der Praxis beobachten lässt, ist, dass der Einsatz von maschinellem Lernen Testverantwortlichen bei ihrer beruflichen Entwicklung zugutekommt. Werden sie vom Erstellen von Testskripten entlastet, können sie sich auf komplexere Aufgaben fokussieren, die menschliche Kreativität und Denkvermögen erfordern.

Maschinelles Lernen hilft zudem dabei, sinnvolle und wünschenswerte Testpraktiken zu etablieren, und macht sie einem größeren Mitarbeiterkreis zugänglich. Verantwortliche im Bereich Testing oder Qualitätsmanagement können ihre Teams so einfacher erweitern: Erfahrene Tester fungieren als Mentoren und können sich gleichzeitig im Alltag auf wertschöpfendere Aufgaben konzentrieren, wie etwa die Bearbeitung der Tests, die sich noch nicht vollständig automatisieren lassen.

Aktuell stehen wir beim Einsatz von maschinellem Lernen im Bereich Software-Testing noch ganz am Anfang. In der Praxis finden sich unterschiedlichste Umsetzungsgrade in Unternehmen sowie Reifegrade bezüglich der ML-basierten Testfunktionen, die heutige Lösungen bieten. Ungeachtet dieser Unterschiede ist jedoch klar: Dem ML-basierten Testen gehört die Zukunft und es wird sich im Verlauf der kommenden Jahre weiterentwickeln, bis ein stabiles Niveau an Testautomatisierung und ein höherer Reifegrad des maschinellen Lernens erreicht wurde.

Bis dahin kann ML-basiertes Testen jedoch schon heute einen positiven Effekt auf Continuous Testing in hochgradig skalierten DevOps-Umgebungen haben: Indem es die unnötige Aufwendung von Ressourcen für Routineaufgaben obsolet macht, Risiken reduziert und so schließlich Release-Zyklen effizient beschleunigt.

* Eran Kinsbruner ist Chief Evangelist beim Perforce-Tochterunternehmen Perfecto.

(ID:46333270)