Das Wissensportal für IT-Professionals. Entdecke die Tiefe und Breite unseres IT-Contents in exklusiven Themenchannels und Magazinmarken.

SIGS DATACOM GmbH

Lindlaustraße 2c, 53842 Troisdorf

Tel: +49 (0)2241/2341-100

kundenservice@sigs-datacom.de

Neuronale Netze lernen das Testen

Änderungen von Anforderungen, Anpassungen in Designs und Programmabläufen sind willkommen und zwingend notwendig, um am schnelllebigen Markt von Softwareprodukten bestehen zu können. Hierbei gilt es nicht nur, Software zu ändern, auch die Qualitätssicherung muss kontinuierlich angepasst werden. Ein Großteil des Aufwands besteht in der Anpassung des Testfallkatalogs. Ein wiederkehrender, fehleranfälliger Aufwand, der ehrlich gesagt nicht zu den spannendsten Aufgaben eines Testexperten zählt, aber einen wesentlichen Beitrag zur rechtzeitigen Lieferung im Hinblick auf Budget und Qualität leistet.

Author Image
Sam Dong

Author

Author Image
Marvin Osei

Author


  • 24.04.2020
  • Lesezeit: 6 Minuten
  • 144 Views

Künstliche Intelligenz (KI), die Lösung vieler Herausforderungen dieser Art, müsste doch auch hier helfen. Können mithilfe einer KI aus Bildschirmmasken oder sogar bereits auf Grundlage von Vorführmodellen – sogenannten Mockups – Testfälle erstellt werden und automatisch Änderungen folgen? Unsere Erkenntnisse bei einer ersten Umsetzung möchten wir hier teilen.

Beispiel: Login-Maske

Grundlage für die ersten Schritte soll eine Login-Maske sein, die als Mockup vorliegt (siehe Abbildung 1). Ein erfahrener Testexperte kann auf dieser Grundlage eine Reihe von Testfällen entwickeln. Hier reicht ein Verständnis für die Eingabe- und Aktionsflächen. Der Testexperte nimmt diese visuell wahr und erkennt aufgrund seiner Erfahrung, welche Programmabläufe zu erwarten sind.

Abb. 1: Login-Vorführmodell

So kann es auch eine KI erlernen. Das Erkennen von Objekten auf der Oberfläche sowie die Verknüpfung mit zu erwartenden Programmabläufen können mit Künstlichen Neuronalen Netzen umgesetzt werden. Für die Objekterkennung bietet sich ein Convolutional Neural Network (CNN) an. CNN sind neuronale Netzwerke, die in mindestens einer ihrer Schichten einen Faltungsoperator nutzen.

Die Schichten sind sogenannte „Hidden Layer“. Die Spalten in der visuellen Darstellung eines neuronalen Netzes entsprechen seinen Schichten. Deswegen bezeichnet man neuronale Netze auch oft als mehrschichtige Perzeptronen (Multilayer Perceptrons, MLPs). Jedes neuronale Netz hat mindestens zwei Schichten. Bei der Bildklassifikation finden Faltungsprozesse statt, weswegen die dafür genutzten Netze als Faltungsnetze oder eben Convolutional Neural Networks bezeichnet werden (vgl. [Sca18], S. 139, S. 165). Ein CNN erkennt Merkmale von Bildern ortsunabhängig und ist damit unempfindlich gegenüber optischen Veränderungen. Weiter werden in CNN Filter eingesetzt, die Trainingszeiten und Speicherplatzbedarf reduzieren.

Abb. 2: Ergebnis der Objekterkennung mit CNN

Abbildung 2 zeigt wieder die Login-Maske des Mockups. Ein bereits trainiertes CNN kann alle Objekte der Maske korrekt zuordnen. Eingabefelder, Optionsfelder, Aktionsund Menüflächen wurden richtig erkannt und zugeordnet. Das so erstellte CNN wird als Modell bezeichnet. Jedes Farbfeld mit seinem Namen repräsentiert das Ergebnis des

KI-Systems, das die Elemente der Maske automatisch identifiziert. Der wichtigste Punkt ist, dass die Koordinaten der identifizierten Elemente auf dem Bildschirm ebenfalls gespeichert werden können. Dies liefert gute Daten für das Neuronen-System, um die Maus automatisch zu steuern und die Testfälle auszuführen.

Abb. 3: Step by Step Training Loss

Abbildung 3 (Diagramm aus TensorFlow: Tensorboard) zeigt, dass das Konvergenzverhalten des Modells gut passt. TensorFlow [Wiki] ist ein Framework zur datenstromorientierten Programmierung, populäre Anwendung findet es im Bereich des maschinellen Lernens (ML).

Konvergenzverhalten bedeutet, dass der „Training Loss“ sich schrittweise nach mehreren „Steps“ verringert. „Training Loss“ ist die Differenz von Soll- und Ist-Werten. Nach diesen Trainingsschritten wird die Differenz berechnet. Je kleiner der Wert von Training Loss ist, desto besser ist das KI-System.

Testfälle erstellen

Nachdem die KI die Objekte der Eingabemaske richtig erkannt und zugeordnet hat, gilt es, die zugehörigen Testfälle zu erlernen. Im obigen Beispiel erhält das neuronale Netzwerk das folgende Array mit den folgenden Elementen als Ausgang:

Wir möchten den Ausgang des CNN an eine weitere KI geben, die gelernt hat, aus Stichworten Testphrasen zu erstellen. Dies erfolgte mit einem Recurrent Neural Network (RNN), im Speziellen mit einem LSTM-RNN, einem RNN mit Long-Short Term Memory (LSTM). Die Texterzeugungsfunktion wird durch so ein LSTM erledigt.

LSTM-RNN lassen – im Gegensatz zu einfachen neuronalen Netzen – Rückkopplungen zwischen Neuronen der gleichen Schicht oder vorangegangener Schichten zu. Durch diese Rückkopplungen entsteht eine Art Gedächtnis, das Informationen relativ lange vorhalten kann und sich an frühere Informationen erinnert. LSTM-RNN sind in der Lage, komplexere Sätze zu verarbeiten. Sie werden häufig in der Text- und Spracherkennung verwendet.

Wie im überwachten ML-Projekt benötigen wir als Erstes Trainingsdaten, mit denen das LSTM-RNN erlernt, aus Stichworten wie „Benutzername“ und „Eingabe“ Testphrasen zu erzeugen. Tabelle 1 zeigt ein Beispiel aus den insgesamt 10 Trainingsdaten-Paaren. Das verwendete Trainingsdatenset ist für die Komplexität, die es zu erlernen gilt, mit 10 Datensätzen viel zu klein und wir können hier kein wirklich gutes Ergebnis erwarten.

Tabelle 1: Trainingsdaten

Nach dem Trainingsdurchlauf mit 20 Wiederholungen erhalten wir das in Abbildung 4 dargestellte Ergebnis. Das Wort „print” ist eine Funktion des Python-Programms, die verwendet wird, um zu sehen, welche Sätze das KI-System ausgibt, wenn der Nutzer ein Wort eingibt.

Abb. 4: Ausgabe der Testphrasen

Wenn wir zum Beispiel das Wort „Captcha:“ eingeben, gibt das KI-System die folgende Antwort aus:

  • „Captcha: Geben Sie auf die Sie auf die auf die ein. Optcha“

Dieses grundsätzlich unbefriedigende Ergebnis des Minibeispiels gibt dennoch Grund zur Hoffnung. Für den viel zu klein geratenen Trainingsdatensatz ist das Ergebnis insgesamt schon nicht schlecht. Die schlechteren

Ergebnisse sind „keine Ausgabe”, wenn man das KI-System gut gebaut hat. Das Erkennen der Objekte auf Eingabemasken und deren Zuordnung funktionieren sehr gut und das Erstellen der Testphrasen wird mit wachsender Anzahl Trainingsdaten nach unseren Erfahrungen viel besser werden.

Mit diesem Ergebnis sehen wir weitere Einsatzmöglichkeiten:

  • Durchführung der erstellten Testfälle: Die KI ermittelt die Anforderungen aus vorhandenen Konzepten, analysiert die Benutzeroberfläche, führt die Testfälle durch und stellt die Testergebnisse zusammen.
  • Erstellung des Software-Quellcodes: Wie beim Erlernen von Testphrasen kann eine KI auch von bereits existierendem Sourcecode lernen und diesen den erkannten Objekten eines Mockups zuordnen. In einem testgetriebenen Projekt (Test-Driven Development) können die Ergebnisse der durch die KI erstellten und ausgeführten Testfälle Grundlage für die durch eine KI zu entwickelnde Software sein.

Fazit

Künstliche Intelligenz simuliert die menschliche Herangehensweise, indem sie Objekte auf der Anmeldemaske erkennt. Weiter verwendet sie Vorkenntnisse aus dem Training, um Testfälle zu schreiben. Diese Methode weicht von herkömmlichen automatisierten Testverfahren ab. Unabhängig davon, wie sich die zu testende Benutzeroberfläche ändert, benötigen wir nur die Zeit, um unseren Testfallkatalog zu warten.

Alles, was wir tun müssen, ist leistungsfähige neuronale Netze aufzubauen, diese die Bedeutung von Objekten sowie deren Schnittstellenbedeutung und Testvorgehensweise auf Basis von Trainingsdaten lernen zu lassen. Mit der Zeit werden die neuronalen Netze immer bessere Ergebnisse liefern und den Aufwand, komplexe Testfallkataloge zu erstellen und zu warten, minimieren. Hiermit können wir Aufwand und Fehleranfälligkeit im Testprozess deutlich verringern und einen weiteren Beitrag zur rechtzeitigen Lieferung im Hinblick auf Budget und Qualität leisten. Wir bleiben dran!

Referenzen

[Sca18] M. Scarpino, TensorFlow für dummies, WILEY-VCH Verlag, 2018

[Wiki] https://de.wikipedia.org/wiki/TensorFlow

. . .

Author Image

Sam Dong

Author
Zu Inhalten
ist als Consultant bei der Sogeti Deutschland GmbH im Bereich Softwarequalitätssicherung für einen norddeutschen Großkonzern tätig. Seine Aufgabenbereiche umfassen Beratung und Automatisierung der Tests für verschiedene Softwareprojekte.
Author Image

Marvin Osei

Author
Zu Inhalten
hat seinen Bachelor in „Computing with Games Development” in London absolviert. Er ist als Junior Consultant bei der Sogeti Deutschland GmbH im Bereich Software Testing tätig. Seine Aufgabenbereiche umfassen die Automatisierung und Testdurchführung bei einem großen Automobilkonzern.

Artikel teilen