Der Trend bei der Nutzung von Künstlicher Intelligenz (KI) in der Softwareentwicklung geht klar in Richtung autonomes Testen, um den Software Development Lifecycle zu vereinfachen.

Testautomatisierungs-Tools leisten das schon heute, allerdings mit Einschränkungen, die sich mit KI beseitigen lassen, wodurch der Nutzen von Tools zur Automatisierung der Softwaretests für Entwickler und Tester weiter steigt. Der Wert der KI liegt in der Reduzierung der direkten Inanspruchnahme der Entwickler oder Tester für die besonders profanen Aufgaben. Bei der Testautomatisierung wissen die meisten Tools nicht, welche Tests ausgeführt werden sollen, sodass sie entweder alle Tests oder eine vorgegebene Teilmenge erledigen. Das Einbringen von Entscheidungsfindungen auf der Basis sich verändernder Daten ist ein Beispiel für die Anwendung von KI. Die Software ist effektiv in der Lage, den Entwickler bzw. Tester im Entscheidungsfindungs-Prozess zu ersetzen. Wie vorteilhaft dies für eine CI/CD-Pipeline ist, liegt auf der Hand.

Künstliche Intelligenz, Machine Learning und Deep Learning

Machine Learning kann die KI durch die Anwendung von Algorithmen aufwerten, mit deren Hilfe das Tool automatisch durch die Sammlung der von den Tests produzierten, enormen Datenmengen verbessert wird. Die Forschung im ML-Bereich ist eine Teildisziplin der allgemeinen KI-Forschung, die sich auf das Fällen von Entscheidungen auf der Grundlage zuvor eingeholter Daten konzentriert. Dies wiederum ist ein wichtiger Aspekt der KI insgesamt, denn Intelligenz verlangt ein Modifizieren der Entscheidungsfindung mit zunehmendem Lernfortschritt. Allerdings ist bei Softwaretest-Werkzeugen maschinelles Lernen nicht immer notwendig, manchmal reicht die manuelle Feinabstimmung eines KI-fähigen Tools auf die jeweilige Anforderungen des Unternehmens aus.

In anderen Fällen ist das Sammeln von Daten ausschlaggebend für den Entscheidungsfindungs-Prozess. Hier kann ML eine wichtige Rolle spielen, ausgehend von einem gewissen Grund-Datenbestand, der mit dem Umfang der verfügbaren Daten verbessert oder angepasst wird. So können etwa die Codeabdeckung, die Ergebnisse statischer Analysen, Testresultate oder andere Softwaremetriken die KI mit der Zeit über den Status des Softwareprojekts informieren.

Der entscheidende Aspekt von Deep Learning als weitere Teildisziplin des ML ist der riesige Umfang an Informationen, der von neuronalen Netzen repräsentiert wird, um den Entscheidungsfindungs-Prozess voranzubringen. Solche Datenmengen stehen bei Softwaretests nicht immer zur Verfügung und eignen sich auch nicht immer. Wie die Forschung und Entwicklung bei KI und ML schon heute immer wieder neue Möglichkeiten schafft, um in Produkte einzufließen, zeigen die folgenden Beispiele.

Modultests mit KI automatisch generieren und parametrisieren

Die Softwaretest-Lösung für Java-Entwickler Parasoft Jtest umfasst neben statischer Analyse u.a. Modultests, Testabdeckung, Rückverfolgung. Hier ermöglicht KI die automatische Testfall-Generierung, die Entwickler beim Füllen der Lücken aufgrund einer anfangs spärlichen JUnit Nutzung unterstützt. Das IDE-Plug-in von Parasoft Jtest ergänzt die Modultests durch nützliche Informationen und bietet One-Klick-Aktionen zum Erstellen, Skalieren und Pflegen von Modultests. Mithilfe des KI-gestützten Jtest-Tools können Anwender eine höhere Codeabdeckung erzielen und gleichzeitig den Zeit- und Arbeitsaufwand halbieren, der für den Aufbau eines umfassenden und sinnvollen Bestands an Junit-Testfällen nötig ist.

Zur Umsetzung wird das Erstellen der Stubs und Mocks vereinfacht, die nötig sind, um den zu prüfenden Code zu isolieren. Dank der enthaltenen KI kann Jtest das jeweilige Modul beobachten, um seine Abhängigkeiten von anderen Klassen zu bestimmen. Sind entsprechende Instanzen erstellt, schlägt KI deren Mocking vor, um besser isolierte Tests zu erhalten. Das automatische Erstellen der Mocks und Stubs reduziert den Arbeitsaufwand für einen der zeitraubendsten Abschnitte der Testentwicklung.

Zudem detektiert Parasoft Jtest automatisch Code, der von den bestehenden Test Suites nicht abgedeckt wird, und durchläuft den Control Path des Quellcodes, um festzustellen, welche Parameter an eine zu prüfende Methode übergeben werden müssen und wie die Stubs und Mocks zu initialisieren sind, damit sie diesen Code erreichen. Mithilfe von KI kann Jtest automatisch neue Modultests generieren und modifizierte Parameter anwenden, damit sich die allgemeine Codeabdeckung des gesamten Projekts verbessert.

API-Tests mit KI und ML automatisch generieren und pflegen

Wie Machine Learning ins Spiel kommt zeigt der Smart API Test Generator von Parasoft SOAtest, der mittels KI und ML manuelle UI-Tests in komplette, automatisierte API-Testszenarien verwandelt.

Dazu bedient sich das Tool der Schlussfolgerung zum Verstehen der Muster und Beziehungen in den unterschiedlichen API-Aufrufen, die beim Ausführen der UI erfolgen. Davon ausgehend konstruiert es eine Serie von API-Aufrufen, die die zugrundeliegenden, während des UI-Ablaufs ausgeführten Interface-Aufrufe repräsentieren. Danach sammelt das Tool mit ML einen möglichst großen Umfang an Informationen über die verschiedenen API-Ressourcen und speichert sie als Vorlage in einer proprietären Datenstruktur. Zur Aktualisierung dieser internen Struktur werden weitere Testfälle in der Bibliothek des Anwenders untersucht, um die jeweiligen Verhaltensweisen beim Ausführen der APIs zu erlernen, z. B. eine Assertion oder das Hinzufügen eines Headers an der richtigen Stelle.

Ziel der KI ist es hier, ausgefeiltere Tests zu schaffen anstelle die Aktionen des Benutzers einfach zu wiederholen. Das Tool erkennt Muster im Traffic, erstellt ein umfassendes Datenmodell der beobachteten Parameter, generiert automatisierte API-Tests und erlaubt das Anwenden der erlernten Muster auf andere API-Tests, um diese aufzuwerten. Die dabei entstehenden API-Tests sind vollständiger, wiederverwendbar, skalierbar und tolerant gegenüber Änderungen.

ML für die selbstheilende Ausführung von Selenium-Tests

Als weitere kritische Komponente der Teststrategie stellt das automatische Validieren der UI-Ebene sicher, dass ein Produkt vollständig verifiziert ist, bevor es in Produktion geht. Bei UI-Tests ist die erste Wahl der Anwender oft das Selenium-Framework, dennoch kämpfen viele bei Selenium mit Pflegbarkeits- und Stabilitätsproblemen. Hier setzt Parasoft Selenic mit integrierten KI- und ML-Technologien an. Selenic stützt sich auf das proprietäre Datenmodellierungs-Konzept von Parasoft und speichert diese Informationen in seiner KI-Engine. So erzielt es große Zeitersparnis in Fällen, in denen UI-Elemente von Webseiten verschoben oder gravierend modifiziert werden, sodass die Tests fehlschlagen. Die von der Selenic Engine angewandte KI-Heuristik kann diese veränderten Elemente auf historische Daten abstimmen, die von dem Modell repräsentiert werden, und automatisch änderungsbeständige „Smart Locators“ generieren, um die Ausführung von Selenium-Tests zur Laufzeit zu retten.

Ausblicke: Was bringt die Zukunft für automatisierte Tests?

Was kommt als nächstes? Weiterhin steht die intensive Forschung und Entwicklung auf dem Programm, und auch wenn sie unterschiedliche Wege nehmen kann, ist das finale Ziel ist klar: Es geht darum, den Teams beim effizienteren und effektiveren Entwickeln und Testen ihres Codes zu helfen, damit in kurzer Zeit qualitativ hochwertigere Software entsteht.

Autor: Igor Kirilenko

(c)2020
Vogel Communications Group

Bitte beachten Sie

Die Beiträge in der Rubrik "Trends und Innovationen" sind Inhalte unseres Medienpartners Vogel Communications Group GmbH & Co. KG. Sie spiegeln nicht unbedingt die Meinung von DATEV wider.

Vogel Communications Group