Automatisiertes Black-Box Software Testing mit neuartigen neuronalen Netzen

Aus SDQ-Wiki
Zur Navigation springen Zur Suche springen
Ausschreibung (Liste aller Ausschreibungen)
Typ Bachelorarbeit oder Masterarbeit
Aushang
Betreuer Wenden Sie sich bei Interesse oder Fragen bitte an:

Daniel Zimmermann (E-Mail: dzimmer@fzi.de, Telefon: +49-721-9654-647)

Das Testen von Software-Applikationen ist ein wichtiger Bestandteil im Entwicklungsprozess. Es verbessert die Qualität durch das Reduzieren von möglichem Fehlverhalten. Eine gängige Testmethode ist das manuelle Testen, bei dem eine Interaktion vom Menschen mit der grafischen Oberfläche erfolgt. Dabei benutzen die Tester ihre Erfahrung und Intuition, um mögliche Fehler aufzudecken, dies ist aber sehr zeitintensiv und teuer. Im Gegensatz dazu können automatisierte Ansätze durch einen hohen Durchlauf an Testfällen in kurzer Zeit einen Großteil der Applikation untersuchen, jedoch bleiben versteckte Fehler oft unerkannt. Außerdem sind automatisierte Tests unflexibel in ihrer Ausführung, haben bei einem neuen Release einen hohen Wartungsaufwand und benötigen zum Erstellen der Tests ein sehr gutes Systemverständnis und Programmierkenntnisse.

Um die Testautomatisierung zu verbessern, soll im Rahmen dieser Arbeit ein neuer Ansatz untersucht werden, bei dem eine unbekannte Software automatisch durch einen intelligenten Agenten auf GUI-Ebene getestet wird. Zum Trainieren der neuronalen Netze sollen hierfür evolutionäre Verfahren zum Einsatz kommen, welche ohne Vorgabe von Trainingsdaten möglichst viele Zustände in der Software selbstständig durch eine explorative Suchstrategie auffinden sollen. Hierfür soll ein bereits bestehendes Framework verwendet werden, welches wir einsetzen, um intelligente Agenten neuroevolutionär zu trainieren. Der rechenintensive Teil der Implementierung soll dabei auf eine hochleistungsfähige GPU ausgelagert werden (Nvidia Tesla V100). Hierzu dient das Numba-Cuda Framework, welches eine relativ einfache Programmierung von GPU-Funktionen in reinem Python-Code erlaubt.