Appium für Mobile Testing Automation

Eine Applikation für mobile Geräte zu testen ist nicht immer ganz einfach. Wenn für dieselbe Applikation jetzt noch ein automatisierter Test durchgeführt werden soll, der beide großen mobilen Plattformen – iOS und Android – berücksichtigt, wird es außerdem sehr schnell kostenintensiv, da sich die Testausführung verdoppelt.

Genau diesem Problem hat sich Appium gewidmet. Dieser Artikel liefert dir eine Übersicht zu dem Tool und seinen Anwendungsbereichen.

Du erfährst nicht nur, wie Appium eigentlich funktioniert, sondern auch, wie es sich von Selenium unterscheidet. Davor fangen wir aber erst mal bei den Basics an…

Was ist Appium?

Appium ist ein Framework, welches für die Testautomatisierung von Apps auf mobilen Endgeräten (iOS, Android) genutzt wird.

Es handelt sich dabei um ein Open-Source Projekt von Sauce Labs, welches ursprünglich schon 2011 entwickelt wurde, aber erst 2012 für die Öffentlichkeit zugänglich wurde. In der deutschen Automatisierungs-Community hatte es 2015 seinen Durchbruch erlebt. Wie im Namen schon ersichtlich ist, stammt Appium aus dem Selenium Umfeld (dazu in Kürze mehr).

Das Appium Framework basiert auf dem WebDriver JSON Wire Protocol, was bedeutet, dass nur mittels HTTP Requests kommuniziert wird. Dies vereinfacht die Testautomation speziell für Apps, allerdings nicht für alle Webanwendungen.

Mit Appium wird in aller Regel das User Interface (UI) einer App für Mobilgeräte getestet, um die Softwarequalität zu sichern. Das Testautomatisierungstool stellt den Anspruch an sich selbst, für möglichst viele Programmiersprachen und Mobilgeräte nutzbar zu sein.

Wie Appium das Mobile Testing vereinfacht

Vereinfacht könnte man den Appium Server als einen Übermittler betrachten, der zwischen dem Testskript und der App kommuniziert.

Mit dem Testskript wird ausschließlich über HTTP Requests kommuniziert.

Bei der Kommunikation mit dem Mobile Device auf der anderen Seite hängt das Vorgehen allerdings stark vom jeweiligen Betriebssystem ab. Dabei gibt es drei verschiedene Möglichkeiten:

  1.  Appium für Android: Für Testautomatisierungen auf Android Geräten wird standardmäßig UI Automator als Driver genutzt. Zuvor wurde dafür auf Selendroid zurückgegriffen, was seit Android 4.2 nicht mehr aktuell ist.
  2. Appium für iOS Geräte: Wenn Applikationen auf iOS Devices getestet werden, ist XCUITest der zu bevorzugende Driver. Versionen vor iOS 9.3 wurden noch mit UI Automation getestet.

Die Driver sind im Übrigen NICHT Teil von Appium selbst, sondern werden von Google und Apple zur Verfügung gestellt. Mit den beiden Drivern kann ein Tester, interaktive Screenshots erstellen, in denen er unter anderem auch die UI Bezeichner für die Testautomatisierung auslesen kann.

Der Appium Client ist mit Libraries mehrerer Programmiersprachen ausgestattet, sodass die Tests in den gängigsten Sprachen durchgeführt werden können. Dazu gehören unter anderem:

  • Java
  • C#
  • Python
  • JavaScript
  • PHP
  • Ruby
  • Robotframework
  • Objective-C

Wenn du zum Beispiel ein Framework für Mobile Automation Testing in Java erstellen möchtest, musst du dir lediglich die passende Appium Client Library herunterladen.

[CTA User]

Ein Beispiel aus der Praxis

Angenommen du entwickelst die Software für eine App, die sowohl auf Android und auf iOS Geräten laufen soll. Nachdem die erste rudimentäre Basisversion deiner App fertig ist, machst du einen manuellen Test und alles scheint zu funktionieren.

Du entwickelst deine App fleißig weiter und mit jedem neuen Feature muss die App auf mögliche Regressionen (falsche Verhalten alter Features oder schlicht Softwarefehler) getestet werden. Nur so kann ein einwandfreies Nutzererlebnis garantiert werden.

Jetzt ist es aber so, dass das Testverfahren mit jedem weiteren Feature um einiges komplexer wird. Das alles wieder und wieder zu testen – auf mehreren Plattformen und Endgeräten gleichzeitig – würde nach kurzer Zeit in keinem wirtschaftlichen Verhältnis mehr stehen.

Und hier kommt Appium ins Spiel. Mit dem Framework musst du nur noch die Gegebenheiten an deine Software anpassen, die Testskripte schreiben und schon kannst du deine neuen Features automatisiert und plattformübergreifend auf verschiedensten Endgeräten testen.

Vorteile und Nachteile von Appium

Der mit Abstand größte Vorteil von Appium ist ohne Frage, dass es Cross Device und Cross Plattform Testing erlaubt. Durch eine Continuous Integration etwa über Jenkins und eine Device Bank lassen sich zeitgleich, über mehrere Plattformen und Geräte hinweg, automatisierte Tests durchführen. Diese Möglichkeit senkt die Kosten der Testdurchführung, erhöht die Softwarequalität enorm und gibt den Entwicklern im Team sehr schnell Feedback.

Einen weiteren Pluspunkt bekommt Appium dafür, dass es ein Open-Source Framework ist und allen Nutzern kostenlos zur Verfügung steht. Die dadurch eingesparten Kosten für die Testautomatisierung können somit z.B. für mehr Personal, Schulungen oder andere Tools eingesetzt werden.

Außerdem hat man als Tester bei Appium den Vorteil, dass es durch die Big Player wie Apple oder Google unterstützt wird. Das erleichtert die Testautomation bei den Endgeräten und unterschiedlichen Plattformen erheblich.

Viele bekannte Marken, wie N26 oder Facebook, nutzen Appium regelmäßig um ihre Software zu verbessern. Die Entwickler in diesen Unternehmen teilen ihr Wissen glücklicherweise online mit anderen Nutzern.

Selbstverständlich kann ein so junges Tool nicht ausschließlich Vorteile haben, weshalb an dieser Stelle auch ein paar Nachteile von Appium genannt werden müssen.

Die Tatsache, dass es sich um ein unbezahltes Open-Source Projekt handelt, birgt leider auch den Nachteil des fehlenden Supports. Zumindest bekommt man bei Appium keinen Support im klassischen Sinne, wie bei kommerziellen Unternehmen. Wenn du auf ein Problem stößt, musst du in Foren und Blogs selber die Lösung finden oder einen guten Experten zur Hand haben.

Appium Tutorials sind zum jetzigen Zeitpunkt ebenfalls noch sehr rar, verglichen mit länger bestehenden Frameworks.

Der nächste nicht zu vernachlässigende Nachteil beim Testen mit Appium ist, dass vor allem beim Einrichten und Anpassen, eingehende Programmierkenntnisse für die Nutzung nötig sind.

Im ersten Schritt spielt es keine große Rolle, in welcher Programmiersprache du ausgebildet bist, weil verschiedenste Libraries zur Verfügung stehen. Aber ganz ohne Programmier-Skills wird es schwer deinen ersten automatisierten Test durchzuführen und ist mit viel Herumprobieren verbunden.

Unterm Strich überwiegen die Vorteile die Nachteile aber um ein Vielfaches. Vor allem, wenn man bedenkt, dass das Tool laufend weiterentwickelt wird.

Appium vs Selenium

Wie eingangs schon erwähnt, stammt Appium ursprünglich aus dem Umfeld von Selenium.

Allerdings zielen die beiden Frameworks auf zwei ganz unterschiedliche Verwendungszwecke ab. Während Appium nur für Apps auf Mobile- und Desktop-Geräten genutzt wird, können mit Selenium lediglich Webapplikationen getestet werden.

Ein alltägliches Beispiel für die Nutzung von Selenium ist die Testautomatisierung bei Online-Shops. Dabei wird gerne der Prozess vom Finden eines Produkts über die Suchleiste bis hin zum Checkout zur Kasse getestet.

Mit Selenium können Webanwendungen unabhängig des Betriebssystems (Windows, Linux oder Mac) und auf mehreren Browsern (z.B. Firefox, Safari oder Chrome) gleichzeitig getestet werden.

Da Selenium schon etwas länger auf dem Markt ist als Appium, sind wesentlich mehr Tutorials und mehr Support vorhanden. Da Appium letztlich auf einer Selenium Struktur basiert, ist das Wissen sehr leicht auf Appium übertragbar. Wenn du noch keine spezifische Antwort im Appium-Bereich findest, kann dir in Selenium-Foren dennoch oft geholfen werden.

Die folgende Tabelle zeigt übersichtlich die wichtigsten Unterschiede zwischen Appium und Selenium:

Appium

 

wird für Tests bei Apps eingesetzt

Tests ausschließlich auf mobilen Applikationen möglich

Noch ausbaufähig, was Support betrifft

Wenige teure Cloud Anbieter am Markt

Selenium

 

wird für Testautomatisierung bei Webanwendungen genutzt

Tests auf verschiedenen Webbrowsern möglich

Viele Tutorials vorhanden

Viele Anbieter für Cloud Ausführung kostengünstig am Markt

[hier wäre ein wenig mehr Input deinerseits zu den wichtigsten Unterschieden hilfreich]

Generell ist es ein kleiner Äpfel-Birnen-Vergleich. Denn die beiden Frameworks decken zwei verschiedene Bereich in der Testautomatisierung ab.

Somit kann unmöglich gesagt werden, welches von beiden besser oder schlechter wäre. Man kann schließlich auch keinen Goldfisch danach beurteilen, wie gut er einen Baum hochklettert. Leider ist aber genau das der Fall, wenn jemand Selenium daran bewertet, wie gut man damit Apps auf iOS Devices testen kann.

Es hängt stark von den Anforderungen des jeweiligen Projektes ab, welches Testautomatisierungstool zum Einsatz kommt.

Fazit zu Appium

Appium hat sich langsam aber sicher einen Namen in der Gemeinschaft der Softwaretester und Qualitätssicherer gemacht. Und zwar zurecht, denn das Tool erlaubt es Unternehmen, ihre Anwendungen effizient inhouse wie outsourced testen zu lassen.

Dank dem Aufbau ist man weder an eine Programmiersprache, noch an bestimmte Plattformen gebunden. Sofern man ein Grundverständnis an Programmiersprachen mitbringt, kann sich Appium als mächtiges Werkzeug in der Testautomatisierung erweisen.

In diesem Sinne dürfen wir gespannt bleiben, welche Features sich Appium noch einfallen lässt, um das Testen weiterhin zu verbessern.