Masterarbeit, 2013
97 Seiten, Note: 1,7
1. Einleitung
1.1. Kontext der Arbeit
1.2. Ziel der Arbeit
1.3. Aufbau der Arbeit
2. Continuous Integration als Konzept
2.1. Definition
2.2. Die zehn CI-Praktiken
2.3. Vorteile von Continuous Integration
3. Testen von Android-Anwendungen
3.1. Besonderheiten
3.1.1. Konfigurationsvielfalt
3.1.2. Ein- und Ausgabe
3.2. Testumgebungen
3.3. Test-Arten
3.4. Werkzeuge
3.4.1. Android Testing Framework
3.4.2. Monkeyrunner
3.4.3. Robotium
3.4.4. Robolectric
3.5. Beispiele
3.5.1. Beispielanwendung: PixBox-App
3.5.2. Testen mit dem ATF
3.5.3. Testen mit Monkeyrunner
4. Entwicklung einer CI-Kette für Android-Projekte
4.1. Die CI-Kette im Überblick
4.2. Jenkins CI-Server
4.2.1. Jenkins – Ein historischer Überblick
4.2.2. Die Architektur von Jenkins
4.2.3. Jenkins-Server für diese Arbeit
4.3. Versionsmanagement mit Git
4.4. Automatisierte Builds
4.4.1. Werkzeuge
4.4.2. Jenkins-Integration
4.5. Statische Codeanalyse
4.5.1. Werkzeuge
4.5.2. Jenkins-Integration
4.6. Automatisiertes Deployment
4.7. Automatisierte Tests
4.8. Automatisierte Berichte
4.8.1. Aktive Benachrichtigungen
4.8.2. Informationen auf Abruf
5. Konzept für einen skalierbaren Testpool
5.1. Benötigte Vorkenntnisse
5.1.1. Android Debug Bridge
5.1.2. Verteilte Builds mit Jenkins
5.2. Architektur-Konzept
5.3. Ablauf
5.4. Slave-Knoten
5.5. Jobs
5.5.1. Build-Job
5.5.2. Test-Job
5.6. Test-Skript
6. Fazit
Ziel dieser Arbeit ist die Entwicklung einer vollständig automatisierten Ende-zu-Ende-Buildkette für die Android-Entwicklung unter Verwendung des CI-Systems Jenkins. Ein besonderer Fokus liegt dabei auf der Evaluation und Implementierung automatisierter Testverfahren sowie der Konzeption eines skalierbaren Testpools, der parallele Tests auf einer Vielzahl von Geräten ermöglicht.
3.1.1. Konfigurationsvielfalt
Die größte Herausforderung beim Testen von Android-Anwendungen ist die Konfigurationsvielfalt. Die Menge der zur Verfügung stehenden Android-Geräte ist immens groß, fast unüberschaubar. Die Entwickler der beliebten Android-App OpenSignal führen seit 2012 eine Studie durch, bei der für jeden Download der App Informationen über das herunterladende Gerät sowie das darauf installierte Betriebssystem gesammelt werden. Bei insgesamt 682.000 Downloads lag die Anzahl der unterschiedlichen verwendeten Geräte im Jahr 2012 bei knapp 4000 und im Juli 2013 bereits bei annähernd 12000. Der Trend zur sog. Device Fragmentation scheint sich also weiterhin stark fortzusetzen. Abbildung 3.1 zeigt eine von OpenSignal erstellte Visualisierung unterschiedlicher Android-Geräte, mit denen die App in den letzten Monaten heruntergeladen wurde.
Während die Verfügbarkeit so vieler verschiedener Geräte für den Endbenutzer eher vorteilhaft ist (in jeder Preisklasse ist ein entsprechendes Android-Gerät zu finden), stellt sie eine große Herausforderung an das Testen von Applikationen dar. Es existieren Geräte unterschiedlichster Größen, welche verschiedene Bildschirmauflösungen nutzen. Hinzu kommt die große Anzahl verschiedener Android-Versionen. Jedes Jahr erscheint mindestens eine neue Version des Betriebssystems, wobei viele ältere Geräte nicht in der Lage sind, diese auszuführen. Dies führt dazu, dass zur selben Zeit viele verschiedene Android-Versionen im Umlauf sind.
Wollte man sicherstellen, dass eine Anwendung auf allen verfügbaren Geräten und OS-Versionen korrekt läuft, müsste man eine unmöglich zu bewältigende Anzahl an Kombinationen aus Geräten und Betriebssystemen testen. Natürlich ist nicht jedes Gerät komplett unterschiedlich und eine Anwendung muss nicht zwingend für die Ausführung auf allen OS-Versionen konzipiert sein. Jedoch ergibt sich, selbst wenn man nur einen ausgewählten Teil der verfügbaren Kombinationen abdecken möchte, schnell eine sehr komplexe Konfigurationsmatrix.
1. Einleitung: Vorstellung des Kontexts der Arbeit, der Relevanz von Continuous Integration für die Android-Entwicklung sowie der Zielsetzung und des Aufbaus der Thesis.
2. Continuous Integration als Konzept: Erläuterung der Grundlagen von Continuous Integration, inklusive der zehn Kernpraktiken und der daraus resultierenden Vorteile für die Softwareentwicklung.
3. Testen von Android-Anwendungen: Detaillierte Betrachtung der Besonderheiten beim Testen von Android-Apps, gefolgt von einer Vorstellung gängiger Test-Frameworks und Praxisbeispielen.
4. Entwicklung einer CI-Kette für Android-Projekte: Dokumentation des Aufbaus der CI-Kette, der Integration von Jenkins, Git, Build-Werkzeugen sowie der Implementierung statischer Codeanalyse und automatisierter Berichterstattung.
5. Konzept für einen skalierbaren Testpool: Vorstellung eines Architektur-Konzepts zur Realisierung eines skalierbaren Pools für parallele automatisierte Tests auf verschiedenen Android-Geräten.
6. Fazit: Zusammenfassende Bewertung der Ergebnisse sowie Ausblick auf das Potenzial und die Anforderungen für den professionellen Einsatz von CI in der Android-Entwicklung.
Continuous Integration, Android, Jenkins, Automatisierte Tests, Softwarequalität, Build-Kette, Device Fragmentation, Test-Framework, Statische Codeanalyse, Testpool, Jenkins Plugins, Build-Automatisierung, Android Testing Framework, Robotium, Monkeyrunner.
Die Masterthesis behandelt den Einsatz von Continuous Integration (CI) in der Android-Entwicklung, wobei der Fokus primär auf der Automatisierung des Testprozesses liegt.
Die zentralen Themen sind der Aufbau einer CI-Kette, der Vergleich von Android-Test-Frameworks und die Entwicklung eines skalierbaren Konzepts für parallele Gerätetests.
Das Ziel ist die Beschreibung einer Ende-zu-Ende-Buildkette für Android, die den gesamten Prozess vom Einchecken des Codes bis zur automatisierten Testausführung vollständig automatisiert.
Es wurde eine praxisorientierte, explorative Methode angewandt: Eine Beispielanwendung (PixBox-App) wurde entwickelt, um die Integration verschiedener Werkzeuge (Jenkins, Git, Ant, Test-Frameworks) in eine CI-Kette unter realen Bedingungen zu evaluieren.
Der Hauptteil gliedert sich in die theoretischen CI-Grundlagen, eine detaillierte Analyse der Android-Test-Frameworks, die Implementierung der CI-Kette mit Jenkins sowie die Ausarbeitung eines Konzepts für einen skalierbaren Testpool.
Die Arbeit lässt sich am besten durch Begriffe wie Continuous Integration, Android, Jenkins, automatisierte Tests, Device Fragmentation und Build-Automatisierung beschreiben.
Die Arbeit adressiert die massive "Device Fragmentation" im Android-Ökosystem, die es nahezu unmöglich macht, Anwendungen manuell auf allen verfügbaren Hardware-Konfigurationen und OS-Versionen zu testen.
Das entwickelte Konzept nutzt eine verteilte Architektur mit Jenkins-Slave-Knoten, bei der jeder Knoten exklusiv mit einem Gerät kommuniziert, um so die Limitierungen des adb-Clients bei parallelen Tests zu umgehen.
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!

