UML-basierte Beschre... Examensarbeiten Erarbeitung einer Me...

Studienarbeit

Regressionstest für Java-Software

 

Zusammenfassung

Bei der Wartung von Software werden Modifikationen vorgenommen, z.B. zur Beseitigung von Fehlern, oder zur Ergänzung von neuen Funktionalitäten. Um nach den Modifikationen Vertrauen in die Korrektheit der Software zu gewinnen, werden sog. Regressionstests durchgeführt. Dabei werden zum einen die Testfälle wieder verwendet, die im Rahmen der Implementierung und Integration erstellt wurden, und zum anderen ggf. neue Testfälle hinzugezogen, um speziell die Modifikationen zu testen. Im Hinblick auf die Wiederverwendung von Testfällen stellt sich die Frage, welche der Testfälle von den Modifikationen betroffen sind und womöglich aktualisiert werden müssen. Zur Erkennung dieser Testfälle existieren verschiedene sog. Regressionstest-Selektionsverfahren. Im Rahmen dieser Arbeit wurden die für Java-Software geeigneten Verfahren miteinander verglichen. Das im Vergleich am besten abschneidende Verfahren wurde implementiert.
Für die Selektion der Testfälle stützt sich das implementierte Verfahren auf eine statische und eine dynamische Analyse. Die statische Analyse konstruiert aus dem Java-Bytecode der ursprünglichen und der modifizierten Version der Software jeweils erweiterte Kontrollflussgraphen und vergleicht diese, um die Stellen in der ursprünglichen Software zu identifizieren, an denen Modifikationen vorgenommen wurden. Die dynamische Analyse führt eine Überdeckungsbestimmung durch, d.h. sie instrumentiert den Java-Bytecode der ursprünglichen Version der Software, um für jeden Testfall zu ermitteln, welche Teile der ursprünglichen Software jeweils ausgeführt werden. Das Verfahren selektiert schließlich alle Testfälle, für die sich anhand der Überdeckungsdaten ergibt, dass sie bei der Ausführung der modifizierten Software auf die in den Kontrollflussgraphen erkannten Modifikationen 'auflaufen' würden.

Bearbeiter: Benjamin Polak

Betreuer: Dr.-Ing. Norbert Oster