Titelaufnahme

Titel
Combining testing power of dependent software engineering projects / von Stefan Dösinger
VerfasserDösinger, Stefan
Begutachter / BegutachterinBiffl, , Stefan ; Mordinyi, Richard
Erschienen2013
UmfangX, 78 S. : Ill., graph. Darst.
HochschulschriftWien, Techn. Univ., Dipl.-Arb., 2013
Anmerkung
Zsfassung in dt. Sprache
SpracheEnglisch
DokumenttypDiplomarbeit
Schlagwörter (DE)Softwaretest / Softwareabhängigkeiten
Schlagwörter (EN)software testing / software dependencies
URNurn:nbn:at:at-ubtuw:1-50373 Persistent Identifier (URN)
Zugriffsbeschränkung
 Das Werk ist frei verfügbar
Dateien
Combining testing power of dependent software engineering projects [3.95 mb]
Links
Nachweis
Klassifikation
Zusammenfassung (Deutsch)

Diese Diplomarbeit beschreibt den Continuous Change Impact Analysis Process, kurz CCIP, und untersucht und bewertet dessen Eigenschaften.

Der CCIP ist eine Erweiterung für den Prozess der kontinuierlichen Integration (engl. continuous integration oder CI).

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.

Eine der tragenden Komponenten von CI sind automatisierte Tests, die überprüfen, ob sich die Software entsprechend ihrer Spezifikation verhält.

Das Verhalten der Software wird jedoch nicht nur vom Quellcode alleine bestimmt, sondern auch von externen Komponenten, die importiert werden und wichtige Funktionen bereitstellen.

Diese Abhängigkeiten werden oft außerhalb des Projektteams entwickelt und entspringen manchmal von einem gänzlich anderen Fachgebiet.

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.

CCIP versucht diese Isolation aufzubrechen, indem es CI-Server untereinander kommunizieren lässt.

Wenn eine Abhängigkeit aktualisiert wird, wird eine Benachrichtigung an die CI-Server von abhängigen Projekten geschickt.

Diese importieren die geänderten Artefakte, führen ihre eigenen Tests aus und liefern das Ergebnis zurück.

Dadurch erhalten Entwickler von Abhängigkeiten frühzeitig automatisiertes Feedback darüber, wie sich ihre Änderungen in den von ihnen abhängigen Projekten auswirken.

Diese Diplomarbeit verwendet eine prototypische Implementierung von CCIP um das Verfahren zu testen und Forschungsfragen zu beantworten.

Diese Forschungsfragen betreffen die Kosten und Nutzen von CCIP, die Qualität des Feedbacks und den Umgang damit, sowie Fragestellungen und Herausforderungen bei gro

Zusammenfassung (Englisch)

This thesis introduces and evaluates the Continuous Change Impact Analysis Proces, short CCIP, an extension to continuous integration.

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.

Automated tests, which are an integral part of CI, test whether a piece of software behaves according to its specification.

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.

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.

CCIP attempts to break up the isolation by introducing communication between CI servers.

If a dependency is modified, a notification is sent to its dependents, which import the changes, run their own tests and send feedback.

This provides quick feedback for dependency developers and helps to discover regressions earlier.

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.

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.