Programming Languages and Software Technology

Disputation Matthias Hirzel

Matthias Hirzel
Alumni
Matthias Hirzel
defends his thesis on Regression Testing of Transcompiled Cross-Platform Applications.

German Abstract

Regressionstests sind ein gängiges Verfahren, um die Qualität von Software sicher zu stellen. Allerdings sind sie sehr zeitaufwändig und damit teuer, insbesondere wenn Benutzeroberflächen getestet werden. Es stellen sich daher drei Fragen: Wie kann der Aufwand für die Ausführung der Tests reduziert werden? Wie kann die Lokalisierung von Fehlern im Code unterstützt werden? Welche Teile des Codes erfordern zusätzliche Tests? Diese Fragen sind im Bereich von transcompilierten plattformübergreifenden Anwendungen noch wenig erforscht. Das Ziel bei dieser Art von Anwendung ist, Mehrfachimplementierungen derselben Software für unterschiedliche Betriebssysteme und Endgeräte zu vermeiden. Stattdessen wird mit Hilfe eines Transcompilers automatisch Code von einer bestimmten Quellprogrammiersprache in möglicherweise mehreren Zielprogrammiersprachen übersetzt, sodass die Software für die gewünschten Systeme und Geräte zur Verfügung steht. Allerdings verhindert die Transkompilation den Einsatz gängiger Verfahren zur Regressionstestselektion. Sie erschwert zudem die Lokalisierung von Fehlern und lässt keine vollständige Beurteilung der Testabdeckung zu. In diesem Vortrag werden Techniken vorgestellt, welche die Herausforderungen der drei genannten Problemstellungen auch für transcompilierte plattformübergreifende Anwendungen lösen. Dazu gehört unter anderem die Einführung zweier Code-Instrumentierungstechniken, die universell in verschiedenen Transcompilern einsetzbar sind. Sie bilden den Grundstein für die Erweiterung einer Regressionstest-Selektionstechnik, die mit Hilfe von Kontrollflussgraphen und Code-Identifier genau die Tests selektieren, die von Code-Änderungen in der Quellprogrammiersprache betroffen sind. Um die wichtigsten Tests mit der größten Chance zur Fehleraufdeckung als erstes auszuführen wurde zudem die Regressionstest-Selektionstechnik mit einer von sechs neuen Priorisierungstechniken kombiniert.

Für eine möglichst hohe Effizienz des Ansatzes wurden Heuristiken entwickelt. Sie ermöglichen es einerseits, Testfehlschläge in einer der Zielprogrammiersprachen möglichst exakt auf Fehler im Code der Quellprogrammiersprache zurückführen. Andererseits halten sie den Speicherverbrauch möglichst gering und reduzieren den Analyseaufwand. Schließlich lassen sich auf Basis der Analysen unabhängig von der Art der Softwaretests genaue Metriken für die Beurteilung der Testabdeckung erheben.