Neural Testing, a project in the Software Campus
- Contact:
Daniel Zimmermann
- Funding:
Bundesministerium für Bildung und Forschung
- Startdate:
2021/03/01
- Enddate:
2023/02/28
About the project
Die heutigen Black-Box-Testautomatisierungsansätze sind aufgrund der starren Testskriptausführung und des hohen Erstellungs- und Wartungsaufwands unflexibel. Manuelle Ansätze sind hier immer noch überlegen, da die Tester ihre eigene Intuition nutzen können. Um die Testautomatisierung zu verbessern, schlagen wir einen neuen Ansatz vor, bei dem eine unbekannte zu testende Software automatisch durch eine KI auf GUI-Ebene untersucht wird. Dabei sollen möglichst neue Zustände in der Software erkannt werden, um so neue Testfälle zu generieren. Das Testen von Software ist einer der wichtigsten Schritte im Software-Engineering, aber teuer und zeitaufwendig. Mit dem vorgestellten KI-Ansatz stellen wir uns ein Konzept zur automatischen Erkennung von Zuständen und Übergängen in Software-Systemen ohne Zugriff auf den Quellcode vor.
Die eingesetzten KIs bestehen aus tiefen neuronalen Netzen. Da sich der Agent bereits erreichte Zustände merken soll, müssen diese Netze ein Gedächtnis besitzen. Neben etablierten rekurrenten Netzen wie long short-term memory (LSTM) setzen wir auf einen neuartigen Ansatz mit sogenannten zeitkontinuierlichen rekurrenten neuronalen Netzen (engl.: CTRNNs), welche aufgrund ihrer kontinuierlichen Neuronenzustände möglicherweise besser geeignet sind, Informationen über längere Zeit im Netz zu persistieren.
Als Alternative zu Reinforcement-Learning-Algorithmen sollen für das Trainieren dabei neuroevolutionäre Verfahren zum Einsatz kommen. Dem Agenten werden im Gegensatz zum überwachten Lernen keine gelabelten Daten zur Verfügung gestellt, welche oft aufwändig manuell erstellt werden müssen. Stattdessen muss der Agent eigenständig durch Interaktion mit der Software vorteilhafte Strategien entwickeln. Diese Vorgehensweise eignet sich besser dazu, neue Zustände in der Software zu finden. Nachteilig ist jedoch der höhere Bedarf an Rechenleistung.