Dösinger, S. (2013). Combining testing power of dependent software engineering projects [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://resolver.obvsg.at/urn:nbn:at:at-ubtuw:1-50373
E188 - Institut für Softwaretechnik und Interaktive Systeme
-
Datum (veröffentlicht):
2013
-
Umfang:
78
-
Keywords:
Softwaretest; Softwareabhängigkeiten
de
software testing; software dependencies
en
Abstract:
Diese Diplomarbeit beschreibt den Continuous Change Impact Analysis Process, kurz CCIP, und untersucht und bewertet dessen Eigenschaften.<br />Der CCIP ist eine Erweiterung für den Prozess der kontinuierlichen Integration (engl. continuous integration oder CI).<br />CI ist eine verbreitete Methode, um das Kompilieren und Testen von Softwareprojekten zu automatisieren, mit dem Ziel die Softwarequalität zu verbessern und Auslieferungszeiten zu verkürzen.<br />Eine der tragenden Komponenten von CI sind automatisierte Tests, die überprüfen, ob sich die Software entsprechend ihrer Spezifikation verhält.<br />Das Verhalten der Software wird jedoch nicht nur vom Quellcode alleine bestimmt, sondern auch von externen Komponenten, die importiert werden und wichtige Funktionen bereitstellen.<br />Diese Abhängigkeiten werden oft außerhalb des Projektteams entwickelt und entspringen manchmal von einem gänzlich anderen Fachgebiet.<br />Da CI Änderungen an Abhängigkeiten nicht betrachtet, werden Tests in einer zu isolierten Umgebung ausgeführt, wodurch CI nicht sein ganzes Potential entfalten kann.<br />CCIP versucht diese Isolation aufzubrechen, indem es CI-Server untereinander kommunizieren lässt.<br />Wenn eine Abhängigkeit aktualisiert wird, wird eine Benachrichtigung an die CI-Server von abhängigen Projekten geschickt.<br />Diese importieren die geänderten Artefakte, führen ihre eigenen Tests aus und liefern das Ergebnis zurück.<br />Dadurch erhalten Entwickler von Abhängigkeiten frühzeitig automatisiertes Feedback darüber, wie sich ihre Änderungen in den von ihnen abhängigen Projekten auswirken.<br />Diese Diplomarbeit verwendet eine prototypische Implementierung von CCIP um das Verfahren zu testen und Forschungsfragen zu beantworten.<br />Diese Forschungsfragen betreffen die Kosten und Nutzen von CCIP, die Qualität des Feedbacks und den Umgang damit, sowie Fragestellungen und Herausforderungen bei gro{\ss}flächigem Einsatz von CCIP.<br />Um diese Fragen zu beantworten, wird CCIP mit zwei Gruppen von Projekten aus unterschiedlichen Entwicklungsumgebungen und Ökosystemen getestet.<br />Eine Gruppe stammt aus dem Umfeld des 3D-Renderings unter Linux, die andere aus der OSGi-Implementierung der Apache Foundation.<br />Die empirische Evaluation zeigt, dass CCIP zusätzliche Fehler finden kann, die den Tests eines Projekts entgehen. Jedoch bereiten Änderungen an den Programmierschnittstellen, falsche Fehlermeldungen und zufällige Testfehler Probleme und reduzieren die Nützlichkeit von CCIP.<br />
de
This thesis introduces and evaluates the Continuous Change Impact Analysis Proces, short CCIP, an extension to continuous integration.<br />Continuous integration (CI) is a well-established concept to automate building and testing of software projects, with the goal of improving quality and time to delivery.<br />Automated tests, which are an integral part of CI, test whether a piece of software behaves according to its specification.<br />However, the behavior of software is not defined by its code alone, but also by external dependencies that provide part of the functionality and may be developed by outside organizations or outside the engineering domain.<br />Currently CI falls short of its potential because it does not take into account changes to dependencies and therefore executes tests in an isolated environment.<br />CCIP attempts to break up the isolation by introducing communication between CI servers.<br />If a dependency is modified, a notification is sent to its dependents, which import the changes, run their own tests and send feedback.<br />This provides quick feedback for dependency developers and helps to discover regressions earlier.<br />This thesis uses a prototype CCIP implementation to answer research questions concerning the costs and benefits of the extension, feedback quality and expected issues in large-scale deployments. This prototype implementation has been evaluated with two sets of interdependent open source projects consisting of a total of 10 projects. One set of projects originates from the Linux 3D driver and gaming stack, the other centers on the Apache Foundation's OSGi implementation.<br />The empirical evaluation showed that CCIP can discover additional regressions that slip through the dependencies' own tests, but API changes, false-positives and random test failures severely reduce the usefulness of CCIP.<br />