KI basiertes Testing in der virtuellen Absicherung

Die Softwareentwicklung hat in den vergangenen Jahren enorme Fortschritte gemacht. Immer stärker automatisierte Abläufe, ein neues, agiles Mindset der Entwickler. Wir reden gar von einem Beginn eines Paradigmenwechsels in der Softwareentwicklung dank maschinellen Lernens. Indes, ein Teilbereich bildete stets den Flaschenhals: Das Testing.

Das Testing von Software in Verbindung mit der Hardware besteht im Wesentlichen aus dem Schreiben sogenannter Testfälle auf Basis zuvor definierter Anforderungen, der Durchführung des Tests und der nachfolgenden Analyse aufgetretener Fehler. Je komplexer die Systeme, desto klarer wird eines: Es ist eine schier unmögliche Aufgabe, alle nur vorstellbaren Szenarien zu testen, und aus der Vielzahl an Eingabegrößen exakt jene ausfindig zu machen, die für das Fehlverhalten ursächlich ist. Noch komplizierter gestaltet es sich, berücksichtigt man erst, dass der Test selbst bereits fehlerbehaftet sein kann.

Somit sehen sich Unternehmen stets mit hohem Ressourcenaufwand konfrontiert, der sich aus manuellen Arbeitsschritten und der zeitintensiven Nutzung der Testhardware ergibt. Die meisten auftretenden Fehler entsprechen nämlich wiederkehrenden Mustern, die manuell jedoch nur schwer erkennbar sind - und deshalb dazu führen, dass Tester die Aufgabe wiederholen. Eine heterogene Systemlandschaft tut hierzu ihr Übriges. Während viele Unternehmen aus den unterschiedlichsten Branchen ein „K.I.-Washing“ betreiben (in Anlehnung an das „Green-Washing“, bei dem PR Abteilungen einen nicht gerechtfertigten grünen Fingerabdruck ihres Unternehmens vermarkten) kann im Testing tatsächlicher Mehrwert durch künstliche Intelligenz gestiftet werden. Denn nur durch die Anwendung der vollen Bandbreite aus Machine- und Deep Learning Methodik können wiederkehrende Fehlermuster von neuen unterschieden werden, um der mühsamen Doppelarbeit der Tester ein Ende zu bereiten. Bis es dazu kommt, sind allerdings noch einige Schritte im Vorfeld zu nehmen.

Andreas Brandlmeier Cognizant Mobility

Andreas

RPA Professional

18.03.20

Ca. 5 min

Sharing is caring!

Modellbasiertes Testen

Mit Hilfe von visuellen Abbildungen (zB. In der Modellierungssprache UML) werden die Testfälle modelliert. Das spart Zeit, da einmal modelliert, viele einzelne Testfälle automatisch abgeleitet werden können. Verändern sich die Anforderungen an das System, können durch eine Änderung im Modell automatisch alle davon betroffenen Testfälle angepasst werden. Zudem lassen sich aus dem Modell heraus auch die Testdaten generieren und der Testdurchlauf vorbereiten. Die modellbasierte Herangehensweise hilft auch bei der zunehmend geforderten agilen Entwicklungsmethode bzw. Scrum. Durch den Geschwindigkeitszuwachs können die Testfälle parallel zur Entwicklung der Features im gleichen Sprint (z.B. zweiwöchiger Zyklus) abgeleitet werden.

In A Nutshell

  • Modellbasiertes Testing
  • Continuous Integration
  • Automatisiertes Testing von ECU und Backend bis Frontend
  • Jenkins
  • Künstliche Intelligenz

Automatisierter Testablauf mit Jenkins

Vor dem eigentlichen Testablauf muss eine Auswahl der zuvor generierten Testfälle stattfinden. Auch muss die richtige Testhardware – also das Steuergerät – reserviert werden, auf dem ein bestimmtes Feature später realisiert wird. Nach dem Testablauf müssen die Ergebnisse zusammen mit den Reports ausgeleitet werden. Damit dies während des gesamten Projektverlauf parallel ablaufen kann, setzen die Testing-Experten der Cognizant Mobility auf das Tool „Jenkins“. Der Ansatz dahinter ist simpel und gleichzeitig genial: Veränderte Testfälle werden über das Tool automatisch durch den gesamten Prozess geschoben, ohne dass es eines manuellen Anstoßes bedarf.  

Der größte Vorteil liegt in der Fehleranalyse, und das wird ersichtlich, wenn man sich die Komplexität vergegenwärtigt, der sich ein Tester heute gegenübersieht. Die gescheiterten Tests müssen einer nach dem anderen manuell analysiert werden. Es gilt anhand von Parametern und Zeitreihen herauszufinden, warum sie gescheitert sind. Mehrere Tests können aufgrund des gleichen Parameters oder der Abhängigkeit untereinander fehlschlagen.  Auch kann die zu prüfende Funktion tadellos sein und lediglich aufgrund einer fehlerhaften Testhardware oder eines nicht präzise genug modellierten Testfalls nicht funktionieren. Die Fehlerquellen lassen sich nur sehr schwer voneinander unterscheiden. Fehlerquellen über Bereichsgrenzen hinweg lassen sich praktisch gar nicht mehr identifizieren. Ist die fehlerhafte Hardware oder der fehlerhafte Testfall einmal korrigiert, finden manuelle Nach-Tests statt, um die eigentliche Funktion noch einmal zu prüfen. Die letztendlich erkannten Fehler werden protokolliert und der Softwareentwicklung zurückgegeben.

Eine starke KI kann Muster in den Fehlern erkennen und automatisch Rückschlüsse auf die Fehlerquelle ziehen. Mit hoher Geschwindigkeit wird nicht nur die Ähnlichkeit der einzelnen Fehler aufgedeckt, sondern es werden auch vollkommen autonom neue Testfälle erzeugt und Nach-Tests angestoßen. Heute kann noch nicht genau abgeschätzt werden, wie hoch genau das Einsparpotenzial durch das vollautonome Testing sein wird. Erste Einschätzungen der Cognizant Mobility Experten lassen aber Großes vermuten. Es geht schließlich um nicht weniger als eine Revolution in diesem Bereich der Entwicklung. Letzten Endes rückt dadurch die Vision einer Software, die sich selbst schreibt und verbessert, in greifbare Nähe.