Detailseite
ModBEAM-MT: Modulare Entwicklung und Analyse von Java Bytecode-Transformationen und ihre Anwendung auf Mutationstesten
Antragstellerinnen / Antragsteller
Professor Dr.-Ing. Christoph Bockisch; Professorin Dr. Gabriele Taentzer
Fachliche Zuordnung
Softwaretechnik und Programmiersprachen
Förderung
Förderung seit 2024
Projektkennung
Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 529917994
Programmtransformationen implementieren Codeanalysen und -änderungen, z. B. zur Überwachung der Ausführung. Java-Programme werden häufig auf Bytecode-Ebene transformiert, anderem da Bytecode nicht neu kompiliert werden muss. Während wir uns in der Compilerbautheorie oft mit Graphen wie Kontroll- oder Datenflussgraphen befassen, sind bestehende Bytecode-Toolkits auf eine baumartige Programmdarstellung festgelegt. Abstraktere, problemspezifische Strukturen werden noch nicht unterstützt. Um größere Aufgaben zu lösen, können Transformationen kombiniert werden, sie können sich aber auf unerwünschte Weise beeinflussen. Die Validierung von transformiertem Bytecode wird zwar unterstützt, fehlerhafte Transformationen müssen aber rückgängig gemacht werden. Die bereitgestellte Validierung konzentriert sich auf die Ausführbarkeit von Code und kann nicht an andere Bedürfnisse angepasst werden. Mutationstesten überprüft die Qualität einer Testsuite: Mutationen schleusen durch geringfügige Änderungen des Programmverhaltens Fehler ein; werden diese von der Testsuite nicht gefunden, ist sie zu schwach. Der Ansatz bildet einen repräsentativen und herausfordernden Anwendungsfall für Programmtransformationen, da es wichtig ist, die Mutationen mit dem Potenzial, wichtige Schwachstellen der Testsuite aufzudecken, zu identifizieren. Die Spezifikation fortgeschrittener Mutationsoperatoren, die typischen Programmierfehlern, wie der Fehlbenutzung von APIs ähneln, wird von bestehenden Ansätzen für Mutationstests nicht gut unterstützt. Ziel des Projekts ist die Entwicklung eines Frameworks zur benutzerfreundlichen Entwicklung modularer Programmtransformationen, insbesondere von Java-Bytecode. Es ermöglicht dem Entwickler, flexibel erweiterbare und nachvollziehbare Programmstrukturen zu definieren, die für die zu lösenden Transformationsprobleme gut geeignet sind. Um sicherzustellen, dass der transformierte Bytecode ausführbar ist und andere wichtige Einschränkungen erfüllt, können konsistenzerhaltende Transformationsmodule verwendet werden. Kompositionsoperatoren und Analysetechniken hierfür werden verfügbar sein, um eine modulare Programmtransformation ohne Seiteneffekte zu unterstützen. Da Java-Projekte groß werden können und Transformationen oft nur lokale Änderungen vornehmen, werden die Programmtransformationen inkrementell ausgeführt, um Skalierbarkeit zu gewährleisten. Die Flexibilität und Ausdrucksstärke des Frameworks wird durch eine leistungsstarke Implementierung von effektivem Mutationstesten von Java-Bytecode demonstriert. Hierzu wird eine Transformationssprache benötigt, die es Entwicklern ermöglicht, fortgeschrittene Mutationsoperatoren und intelligente Strategien für ihre Anwendung einfach zu spezifizieren. Darüber hinaus sollten Mutationstests auf reale Projekte anwendbar sein. Unser Ziel ist ein flexibler, benutzerfreundlichen Ansatz für Mutationstesten mit Tool-Unterstützung, um effektive Mutanten zu finden und Testsuiten entsprechend zu optimieren.
DFG-Verfahren
Sachbeihilfen