Ein Angebot von

Was bedeutet künstliche Intelligenz beim Software-Testen?

| Autor / Redakteur: Igor Kirilenko * / Sebastian Gerstl

Künstliche Intelligenz in Software-Test-Tools: Das neueste Release von Parasoft SOAtest setzt auf künstliche Intelligenz zur Umwandlung von manuellen UI-Tests in automatisierte, skriptlose API-Tests.
Künstliche Intelligenz in Software-Test-Tools: Das neueste Release von Parasoft SOAtest setzt auf künstliche Intelligenz zur Umwandlung von manuellen UI-Tests in automatisierte, skriptlose API-Tests. (Bild: Parasoft)

KI ist ein aktuelles Schlagworter in der Softwareentwicklung. Wie aber unterscheidet sich KI im Kontext von automatisierten Softwaretests von ihrer breiter gefassten Definition?

Ist von KI die Rede, gibt es mitunter wilde Assoziationen wie etwa allmächtige Supercomputer, die wild entschlossen sind, die Menschheit zu zerstören, sprachgesteuerte Assistenten in der Art von Alexa oder Siri, Computer als Schachgegner oder selbstfahrende Autos.

Die englische Wikipedia definiert künstliche Intelligenz als die Lehre von „intelligenten Akteuren“: Darunter seien Apparate zu verstehen, die ihre Umgebung wahrnehmen und Aktionen ausführen, um ihre Chance zum erfolgreichen Erreichen ihrer Ziele zu maximieren. Das ist natürlich eine sehr abstrakte Definition. Ich dagegen betrachte KI lieber als die Fähigkeit eines Computerprogramms oder einer Maschine, zu denken (d. h. eigenständig zu schlussfolgern) und zu lernen (d. h. Daten zu sammeln und das eigene künftige Verhalten auf vorteilhafte Weise zu modifizieren). In dieser Definition zeichnet sich für uns etwas Aussagefähigeres im Kontext dessen ab, was KI für die Softwareentwicklungs-Tools und die entsprechende Technologie bedeutet.

Wichtig ist auch sich klarzumachen, dass sich der Umfang dessen, was man unter KI versteht, mit der Zeit verändert. Beispielsweise gab es eine Zeit, in der die optische Zeichenerkennung (Optical Character Recognition, OCR) als der Stand der Technik im Bereich der KI angesehen wurde. Auch die Fragen und Antworten von Siri und Alexa galten einmal als der neueste Stand der Technik, werden inzwischen aber weitgehend als Selbstverständlichkeit hingenommen und nicht in jedem Fall als KI betrachtet. Dasselbe wird bei den Softwaretest-Tools passieren: Heutige Innovationen im Bereich der Automatisierung werden zur Selbstverständlichkeit, sobald neue Fähigkeiten bereitstehen.

KI in der Softwaretest- Automatisierung in 2018

Noch steckt die Nutzung von KI in der Softwareentwicklung in den Kinderschuhen, der Autonomiegrad ist hier noch weit niedriger als auf weiter entwickelten Gebieten wie den selbstfahrenden Systemen oder der Sprachsteuerung. Dennoch zielt die Entwicklung ganz klar in Richtung des autonomen Testens. Der KI-Einsatz bei den Softwaretest-Werkzeugen konzentriert sich darauf, den Softwareentwicklungs-Lebenszyklus zu einfacher zu gestalten. Durch die Anwendung von Schlussfolgerung, Problemlösung und in einigen Fällen auch maschinellem Lernen lässt sich KI nutzen, um bei der Automatisierung zu helfen und den Aufwand an mühseligen Routinearbeiten beim Entwickeln und Testen von Software zu verringern. An dieser Stelle wäre die Frage angebracht, ob Testautomatisierungs-Tools das nicht bereits tun. Die Antwort ist ein klares ja, wenn auch mit ein paar Einschränkungen.

KI kann in der Softwareentwicklung immer dann glänzen, wenn es darum geht, diese Einschränkungen zu beseitigen, oder wenn die Tools zum Automatisieren von Softwaretests den Entwicklern und Testern einen noch größeren Nutzen bieten sollen. Der Nutzen der KI resultiert daraus, dass die direkte Einbeziehung der Entwickler oder Tester in die besonders profanen Aufgaben reduziert wird. (Überaus gefragt ist die menschliche Intelligenz dagegen nach wie vor u.a. bei der Anwendung von Geschäftslogik.)

Man denke beispielsweise daran, dass die meisten (oder sogar alle) Testautomatisierungs-Tools dafür genutzt werden, Tests für Entwickler durchzuführen und Ergebnisse zu liefern. Weil die meisten Tools nicht wissen, welche Tests durchzuführen sind, starten einfach alle oder eine vorgegebene Auswahl. Wie wäre es also, wenn ein KI-fähiger Bot den aktuellen Teststatus, neuere Codeänderungen, die Codeüberdeckung und andere Metriken auswerten könnte, um auf dieser Basis zu entscheiden, welche Tests noch notwendig sind, und diese Tests anschließend auszuführen? Das Einbringen einer Entscheidungsfindung auf der Basis veränderlicher Daten ist ein Beispiel für den Einsatz von KI. Damit ist die Software effektiv in der Lage, den Entwickler bzw. Tester in diesem Entscheidungsprozess zu ersetzen. Die Vorteile, die dies in einer CI/CD-Pipeline hat, liegen auf der Hand.

Künstliche Intelligenz und maschinelles Lernen

Wie sieht es nun mit dem maschinellen Lernen (ML) aus? Es kann die KI durch Algorithmen aufwerten, die es dem Tool ermöglichen, automatisch besser zu werden, indem es die durch das Testen produzierte Fülle an Daten sammelt.

Die Forschung im Bereich des maschinellen Lernens ist eine Teildisziplin der KI-Forschung und zielt speziell auf die Entscheidungsfindung auf der Basis zuvor erfasster Daten ab. Dies ist ein wichtiger Aspekt der KI insgesamt, denn Intelligenz erfordert ein Modifizieren der Entscheidungsfindung im Zuge des fortschreitenden Lernprozesses. Allerdings ist maschinelles Lernen bei den Softwaretest-Tools nicht unbedingt immer notwendig. In manchen Fällen erfolgt die Feinabstimmung eines KI-fähigen Tools am besten manuell, um den Belangen des Unternehmens, das das Tool nutzt, optimal gerecht zu werden. Anschließend lässt sich die gleiche Logik und Schlussfolgerung unabhängig vom Resultat immer wieder anwenden.

In anderen Fällen dagegen ist das Sammeln von Daten entscheidend für den Entscheidungsprozess, sodass das maschinelle Lernen hier äußerst wertvoll sein kann. Zu Beginn ist ein gewisser Grund-Datenbestand erforderlich, aber durch das Erfassen von immer mehr Daten wird mit der Zeit eine fortschreitende Verbesserung bzw. Anpassung erreicht. Beispielsweise können die Codeüberdeckung, die Ergebnisse statischer Analysen, Testergebnisse oder andere Software-Metriken die KI mit der Zeit über den Status des Softwareprojekts informieren.

Echte Beispiele für KI und ML beim Software-Testen

Die Kombination von KI und Testautomatisierung führt zu unendlichen Testfähigkeiten und zeigt immer neue Möglichkeiten auf, wie sich KI in Produkte einbauen lässt. Genau in diesem wichtigen Bereich forschen und entwickeln viele Lösungsanbieter, auch Parasoft, wo man grundsätzlich den gesamten Testablauf betrachtet. Anstelle eines einzelnen Prozesses sollen alle zeitlich vorverlegt werden (Shift Left) – und genau hier kommt KI zum Tragen.

Modultests mit KI generieren und parametrieren

Geht es um den Kernaspekt Tool-Verbesserung, so hat diese bereits stattgefunden, indem erste Erkenntnisse in aktuelle Lösungen eingeflossen sind, wie bei Parasoft Jtest. Diese Softwaretest-Lösung für Java-Entwickler beinhaltet die statische Analyse, Modultests, Überdeckung, Rückverfolgbarkeit und mehr. Mit KI konnte hier die automatische Testfall-Generierung realisiert werden. Diese hilft den Entwicklern beim Schließen der Lücken, wenn mit einem spärlichen JUnit-Harness begonnen wird.

Das IDE-Plug-in bereichert die Modultests durch nützliche Informationen, indem es einfache, mit einem Klick aktivierbare Aktionen zum Erstellen, Skalieren und Pflegen von Modultests bereitstellt. Mit der Lösung können Tester eine höhere Codeüberdeckung erzielen und gleichzeitig den Zeit- und Arbeitsaufwand halbieren, der für das Erstellen eines umfassenden und aussagefähigen Bestands an JUnit-Testfällen erforderlich ist. Dahinter steht unter anderem das vereinfachte Erstellen von Stubs und Mocks zum Isolieren des zu prüfenden Codes. Dank der zugrundeliegenden KI kann Jtest das jeweils geprüfte Modul beobachten, um seine Abhängigkeiten von anderen Klassen zu ermitteln. Werden Instanzen dieser Abhängigkeiten erzeugt, schlägt es das Mocking dieser Abhängigkeiten für den Anwender vor, damit besser isolierte Tests entstehen. Das automatische Erstellen der notwendigen Mocks und Stubs verringert den Arbeitsaufwand in einer Phase, die zu den zeitraubendsten Abschnitten der Testerstellung gehört.

Zusätzlich entdeckt Parasoft Jtest automatisch Code, der nicht von den bestehenden Test Suites abgedeckt wird. Die Lösung geht den gesamten Steuerpfad des Quellcodes durch, um herauszufinden, welche Parameter an eine zu prüfende Methode übergeben werden müssen, und wie die Stubs und Mocks zu initialisieren sind, damit sie den betreffenden Code erreichen. Mithilfe von KI kann Jtest automatisch neue Modultests generieren und modifizierte Parameter anwenden, um die Codeüberdeckung des gesamten Projekts zu verbessern.

Automatisiertes Generieren und Pflegen von API-Test

Um die Grenzen der Automatisierung beim Softwaretesten zu überwinden, lässt sich KI in vielen Punkten wirksam einsetzen, vom Verständnis wie APIs funktionieren, über das Erstellen von effektiven API Testszenarios, die Identifizierung von Änderungen, die sich ergeben haben, bis hin zur Ausführung der richtigen Tests zum richtigen Zeitpunkt. Im nächsten Schritt lässt sich mithilfe von Machine Learning alles auf die nächste Stufe anheben, wo Algorithmen zum Einsatz kommen und eine weitere Verbesserung erzielen.

Ein Beispiel hierfür ist der Smart API Test Generator. Dieses Tool beschränkt sich nicht auf das Aufzeichnen und Abspielen von Tests, sondern nutzt KI und ML zum Umwandeln manueller UI-Tests in vollständige, automatisierte API-Testszenarien. Es nutzt Schlussfolgerungen zum Verstehen der Muster und Beziehungen in den verschiedenen API-Aufrufen, die beim Ausführen der UI ausgelöst werden. Aus dieser Analyse wird eine Reihe von API-Aufrufen konstruiert, die die zugrundeliegenden Interface-Aufrufe während des UI-Flows repräsentieren. Anschließend kommt das maschinelle Lernen ins Spiel, indem so viel wie möglich über die verschiedenen API-Ressourcen beobachtet und als Vorlage in einer proprietären Datenstruktur hinterlegt wird. Durch die Untersuchung von anderen Testfällen in der Bibliothek des Anwenders erfolgt die Aktualisierung dieser internen Struktur. Dabei geht es um das Erlernen verschiedener Verhaltensweisen beim Ausführen der APIs, wie etwa eine Assertion oder das Hinzufügen eines bestimmten Headers an der richtigen Stelle.

Ziel des KI-Einsatzes ist hier das Generieren ausgefeilterer Tests, anstatt einfach die Aktionen des Anwenders zu kopieren, wie es bei einfachen Record-and-Playback-Tests wäre. Das Tool erkennt Muster im Traffic, erstellt ein umfassendes Datenmodell der beobachteten Parameter, generiert automatisierte API-Tests und ermöglicht die Anwendung der erlernten Muster auf andere API-Tests, um diese zu verbessern und den Anwendern beim Erstellen anspruchsvollerer automatisierter Testszenarien zu helfen. Die daraus resultierenden automatisierten API-Tests sind nicht nur vollständiger, sondern auch wiederverwendbar, skalierbar und unempfindlich gegenüber Änderungen.

Ausblick: Wie wird es im Jahr 2019 aussehen?

Wie geht es also weiter? Wir betreiben aktive Forschung und Entwicklung auf diesem Sektor und suchen nach weiteren Anwendungsmöglichkeiten für KI und ML, um unser Angebot an Softwaretest-Tools weiter aufzuwerten. Die Forschung kann unterschiedliche Wege gehen, doch das finale Ziel ist klar: Den Teams soll geholfen werden, ihren Code effektiver und effizienter zu entwickeln und zu testen und mit erhöhter Schlagzahl qualitativ hochwertigere Software hervorzubringen.

Wie Künstliche Intelligenz API-Tests revolutioniert

Wie Künstliche Intelligenz API-Tests revolutioniert

22.11.18 - Eine solide API-Teststrategie befähigt Unternehmen, maximalen Nutzen aus agilen Entwicklungsmethoden zu ziehen. Künstliche Intelligenz kann die Automatisierung dieser Prozesse beschleunigen. lesen

* Igor Kirilenko ist Vice President of Development bei Parasoft, zuständig für die technische Strategie und Architektur.

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: 45824158 / Test & Qualität)