Mobile App Testing: Testautomatisierung für Android und iOS mit Appium

🕒 Lesedauer: 7 Minuten

Wer mobile Apps testet, steht schnell vor einer entscheidenden Frage: Kann ich Tests auf realen Mobilgeräten automatisieren? Nach kurzer Recherche taucht immer wieder ein Name auf – Appium. Doch was steckt hinter diesem Tool mit dem klangvollen, lateinischen Namen? In diesem Artikel nehmen wir Appium genauer unter die Lupe und zeigen Ihnen, wie es funktioniert. Also, bleiben Sie dran – es wird spannend!

 

Image
Vergleich von Ranorex zu Appium

Die Bedeutung von Appium in der Welt der Testautomatisierung

Mobile Systeme haben in den letzten Jahren immer mehr an Bedeutung gewonnen. Mit der voranschreitenden Entwicklung und Verbreitung von mobilen Systemen wie Smartphones und Tablets und von mobilem Internet, wird das Testen von mobilen Apps immer wichtiger. Der Erfolg von mobilen Applikationen wird bestimmt von deren Stabilität, Funktionalität und Sicherheit. Diese Eigenschaften können nur durch Softwaretests garantiert werden. Softwaretests auf mobilen Geräten stellen eine größere Herausforderung dar als die auf Computern. Die kleinere Rechenkapazität und fehlende oder eingeschränkte Eingabemechanismen wie Tastaturen verhindern es, dass die Tests direkt auf den mobilen Devices geschrieben und ausgeführt werden. Stattdessen befindet sich die Testsoftware meist auf standardmäßigen Computern und läuft mittels Proxys auf den Geräten.

Was ist Appium? Vorstellung und Geschichte

Appium ist ein Open-Source-Testframework zum Automatisieren und Testen mobiler Apps für Windows, Android und MacOS. Es fungiert als Proxy zwischen dem zu testenden Gerät und dem Computer, auf dem die Tests laufen und benutzt das JSON Wire Protocol. 

Image
appium-logo-testautomatisierung.png

Mit der voranschreitenden Entwicklung gewinnt dieses Tool eine immer wichtigere Bedeutung für das Testen von Apps auf Smartphones, Tablets und anderen Devices.

Doch bevor Appium zu dem Tool wurde, was wir heute kennen, musste es einige historische Stationen durchlaufen: So wurde im Jahre 2011 von Dan Cuellar der Vorgänger IOSAuto entwickelt. Ein Jahr später, im Jahre 2012, wurde IOSAuto schließlich Open-Source auf Github veröffentlicht. Im Jahre 2013 übernahm dann SauceLabs die weitere Entwicklung des Tools, womit dann im Jahre 2014 die Version 1.0 von Appium veröffentlicht wurde. Schließlich wird Appium in 2016 in die Reihen der JS Foundation aufgenommen.

 

Ein Überblick zur Architektur von Appium

Appium ist ein Tool, das auf der Client-Server-Architektur basiert, die folgendermaßen aufgebaut ist:

Appium-Server

Als das Herzstück dieses Testtools übernimmt der Appium-Server folgende Funktion: Über das JSON Wire Protocol werden zunächst die Anfragen von den entsprechenden Clientbibliotheken empfangen. Im nächsten Schritt werden die mobilen Treiber angesprochen, sodass auch eine Kommunikation mit den jeweiligen (nativen) Geräten stattfinden kann bzw. Clientvorgänge ausgeführt werden können. Sollte ein Testfall durchgelaufen sein, so werden die dazugehörigen Ergebnisse entgegengenommen und an die Clients weitergereicht. Aufgrund von Parallelisierung ist es zudem möglich, Testfälle auf einer Vielzahl von Geräten zu testen und auszuführen.

Appium-Clientbibliotheken

Den zweiten Pfeiler der Architektur bilden die sogenannten Clientbibliotheken (Client Libraries). Mithilfe von mehreren Programmiersprachen wie JavaScript, Java, Python, C#, Ruby, und PHP sind die Bibliotheken für folgende Aufgaben verantwortlich: Teststart, Testausführung auf mehreren Geräten sowie das Empfangen von Testergebnissen.

JSON Wire Protocol

Als ein Bindeglied zwischen Client und Server agiert das JSON Wire Protocol, das auf den Prozess von Serialisierung (Umwandlung von Objekten ins JSON-Format) und Deserialisierung (Umwandlung vom JSON-Format in Objekte) aufbaut. Wie sich dieses Vorgehen bei REST Web Services wiederfindet, besteht somit auch hier die Möglichkeit über eine RESTful-API auf die jeweiligen Endpunkte zuzugreifen. Damit lassen sich Webseiten und Web-Apps auf mobilen Geräten und Browsern testen. Parallel können während der Sitzung beispielsweise Android-Apps auf dem zu testenden Gerät installiert oder entfernt werden.

Appium-Treiber

Um überhaupt Apps auf verschiedenen Plattformen testen zu können, nutzt Appium eine Reihe von Treibern, von denen die nachfolgenden die gängigsten sind:

  • UiAutomator1: Treiber, der für Android-Versionen vor Version 6 genutzt wurde
  • UiAutomator2: Aktuell gängiger Treiber, der für Android-Versionen nach Version 6 genutzt wird
  • XCUITest: Der gängige Treiber für iOS-Geräte
  • WinAppDriver: Treiber zum Testen von Windows-Geräten startend von Windows 10
  • Espresso: Ein neuer Treiber zum Testen von Android-Maschinen. Im Gegensatz zum UiAutomator2, das zu den Black-Box Test-Frameworks zählt, gehört Espresso zu den Grey-Box Test-Frameworks

Test Frameworks

Damit Testbefehle auf den zu testenden Maschinen ausgeführt werden können, bedarf es der folgenden nativen Test-Frameworks:

  • UiAutomator-Framework: Für Android-Geräte, nämlich auf physischen Geräten sowie Emulatoren und Simulatoren
  • XCUITest-Framework: Für iOS-Geräte, nämlich auf physischen Geräten sowie Emulatoren und Simulatoren

 

Automatisiertes Testen von mobilen Apps mit Appium: Vorteile und Nachteile

Vorteile von Appium

Einer der größten Vorteile von Appium ist, dass es an der entsprechenden App keine Code-Änderungen vornehmen muss, bevor sie getestet werden kann (wie es z.B. bei MonkeyTalk der Fall ist). Das stellt sicher, dass der Tester das endgültige Produkt testen kann. Außerdem behandelt der Appium Server die plattformspezifischen Besonderheiten, so dass der Test-Entwickler sich auf die Tests selbst konzentrieren kann. So können Tests mit keinen oder wenigen Änderungen auf mehreren Plattformen laufen. Das Framework ist geeignet für alle Arten von Apps. Appium-Tests können in jeder WebDriver kompatiblen Sprache geschrieben werden, einschließlich Java, Objective-C und Ruby.

Nachteile von Appium

Allerdings hat Appium auch einige Nachteile: Da es noch ein sehr junges Framework ist, sind noch nicht alle wünschenswerten Funktionalitäten enthalten. Außerdem ist die Dokumentation von Appium noch lückenhaft und die Anzahl von Tutorials im Vergleich zu älteren, weiter verbreiteten Frameworks ist gering. Appium unterstützt Googles UIAutomator erst ab API 17 (Android 4.2+). Für ältere APIs wird Googles Instrumentation benutzt und die Tests müssen mit Selendroid automatisiert werden. Für viele Benutzer, die gerne App-Tests mit diesem Hilfe dieses Tools durchführen wollen, sind fortgeschrittene Programmierkenntnisse zum Schreiben vom Testcode vonnöten. 

 

Appium Inspector

Ähnlich zum Inspector bei Playwright bietet Appium die Möglichkeit, Elemente in Mobilapplikationen wie z.B. Klassennamen, Attribute etc. untersuchen zu können. Dazu steht dem Entwickler bzw. Tester der Inspector als GUI für ein besseres Benutzererlebnis zur Verfügung. Aber nicht nur untersuchen steht im Mittelpunkt, sondern auch aktives Interagieren sowie automatisches Schreiben von Testskripten ist damit möglich. Das bedeutet, dass Entwickler und Tester mithilfe eines Recorders in der Lage sind, mit wenigen Klicks ein Testskript bzw. automatisierte Tests zusammenzustellen, das/die auch im späteren Verlauf aktiv abgespielt werden kann/können. Diese Funktion ist insbesondere für diejenigen interessant, die sich für die Evaluierung ein erstes Bild machen wollen.

Appium Doctor

Bei diesem Tool handelt es sich um ein Open-Source CLI-Tool, das über npm (Node Package Manager) gezogen werden kann. Es hilft uns dabei, Probleme zu erkennen, bevor die eigentlichen Tests starten: Genauer gesagt überprüft es, ob denn vor der Testausführung auch wirklich alle Komponenten und Abhängigkeiten vorhanden bzw. geladen sind, sei es notwendiger oder optionaler Art, damit auch ein fehlerfreies Ausführen gewährleistet ist. Falls vom Appium Doctor ein Problem identifiziert wurde, wird neben der Auflistung dieser Probleme zugleich eine Lösung zum Beheben dafür angegeben. Falls der Fix erfolgreich war, wird dann statt des beispielsweise nicht gefundenen Elements nun der Pfad sowie die Version dessen angezeigt. Dieses Feature ist sowohl für Windows, als auch macOS verfügbar.

iOS- und Android-Settings auf Endgeräten

Hier können die Einstellungen für die zu untersuchenden Geräte durchgeführt werden. Vorteilhaft ist, dass diese auch programmatisch eingestellt werden können. Bei der Testautomatisierung oder -parallelisierung ist dies unerlässlich, da die Anforderung, manuelle Einstellungen vorzunehmen, die Tests unterbrechen würde.

Die besten Appium Alternativen

Hier sind die besten Alternativen zu Appium für die mobile App-Testautomatisierung:

 

Fazit: Mobile App Testing mit Appium

Trotz der noch vorhandenen Nachteile bietet Appium ein vielversprechendes Paket an Automatisierungsfunktionen, seine mobilen Applikationen testen zu können. Darüber hinaus verfügt Appium einen ganz entscheidenden Vorteil: Nämlich das Testen von Anwendungen auf Realgeräten, was bei Konkurrenzprodukten kaum zu finden ist. Ein weiterer Vorteil, den es mit sich bringt, ist, dass es Open-Source ist und somit der ein oder andere Cent gespart werden kann. Wer daher häufig damit beschäftigt ist, Apps auf realen Mobilmaschinen zu testen, wird um Appium nicht herumkommen.  

 

FAQ: App Testing mit Appium

Was ist Appium und wie hilft es bei der Testautomatisierung von mobilen Apps?

Appium ist ein plattformübergreifendes Tool zur Testautomatisierung, das es Entwicklern und Testern ermöglicht, mobile Anwendungen auf verschiedenen Betriebssystemen, wie Android, iOS, IPadOS oder sogar tvOS zu testen. Zudem nutzt es eine Client-Server-Architektur und ermöglicht die Automatisierung von Tests für mobile, native und hybride Webanwendungen auf realen Geräten sowie Emulatoren.

Welche Programmiersprachen werden von Appium unterstützt?

Appium unterstützt eine Vielzahl von Programmiersprachen, darunter Python, Java, Ruby, C#, und JavaScript. Dies ermöglicht Entwicklern, Testskripte in der Programmiersprache ihrer Wahl zu schreiben.

Was sind die Hauptfunktionen von Appium?

Appium bietet Funktionen wie die Unterstützung für mehrere Plattformen, die Möglichkeit, Tests auf realen Geräten und Emulatoren durchzuführen sowie die Integration mit verschiedenen Testframeworks wie Selenium WebDriver. Appium ermöglicht auch das Simulieren von Benutzerinteraktionen und die Ausführung von Tests in verschiedenen Betriebssystemversionen.

Wie funktioniert die Verbindung zwischen Appium und den getesteten Geräten?

Die Verbindung zwischen Appium und den Geräten bzw. den dazugehörigen Browsern erfolgt über das JSON Wire Protocol. Appium kommuniziert mit den Appium-Treibern, die spezifisch für verschiedene Plattformen und Gerätetypen entwickelt wurden, um die gewünschten Automatisierungsaktionen durchzuführen.

Gibt es für Appium auch eine Desktop Variante?

Ja, es gibt auch eine Desktop Variante, die auf Open Source basiert und es ermöglicht, über eine GUI auf den Appium Server zugreifen zu können.

Wie kann ich mit Appium meine Testautomatisierung einrichten?

Um mit Appium zu beginnen, müssen Sie zunächst den Appium-Server installieren und konfigurieren. Danach können Sie die Appium-Treiber für die spezifischen Geräte und Plattformen, die Sie testen möchten, herunterladen. Schließlich schreiben Sie Ihre Testskripte in der gewünschten Programmiersprache und führen sie über den Appium-Server aus.

 

Veröffentlicht am 11.Januar 2025

Aktualisiert am 22.Februar 2025

Valerius Schmidt

Junior Testautomation Engineer, Test Analyst

Ursprünglich als Sprachwissenschaftler für die antike sowie mittel und neuzeitliche Welt, war ich während und nach meiner aufbauenden Ausbildung zum Fachinformatiker für Anwendungsentwicklung in diversen Projekten in den Unternehmen wie der Trout GmbH und der fino digital GmbH involviert. Themenschwerpunkte waren dort zum einen die Softwareentwicklung, die Datenqualität sowie das Testen von Software und der Automatisierung. Seit August 2023 bin ich als Junior Testautomation Engineer und Test Analyst bei der Qytera GmbH tätig, wo mein Fokus aktuell auf dem Testen mit dem Automatisierungswerkzeug Playwright liegt.

Finden Sie weitere interessante Artikel zum Thema: