Die richtige App testen und veröffentlichen mit Appium

Gerade im stark fragmentierten Mobile-Umfeld mit kurzen Veröffentlichungszyklen spielen quelloffene Automatisierungs-Frameworks eine bedeutende Rolle. Die Vielzahl der Angebote adressieren mit unterschiedlichen Ansätzen die Herausforderungen des mobilen Testens.

vorlesen Druckansicht
Lesezeit: 10 Min.
Von
  • Andreas LĂĽdeke
Inhaltsverzeichnis

Gerade im stark fragmentierten Mobile-Umfeld mit zunehmend kürzeren Veröffentlichungszyklen spielen quelloffene Automatisierungs-Frameworks eine bedeutende Rolle. Die Vielzahl der Angebote adressieren mit unterschiedlichen Ansätzen die Herausforderungen des mobilen Testens. Im Folgenden wird exemplarisch das Testframework Appium vorgestellt.

Auf die Frage, warum die Bedeutung mobilen Testens im Allgemeinen zunimmt, lässt sich grundsätzlich
festhalten: Für jeden, der mobile Anwendungen entwickelt oder entwickeln lässt, ist es unerlässlich, diese auch angemessen zu überprüfen. Fehler in einer App können Unternehmen nicht nur Tausende Euro kosten, sondern auch ihre Benutzer frustrieren und Kunden langfristig vergraulen. Dabei kommt man schnell zu einer zweiten Frage: Warum sollte man bei einer mobilen Anwendungen auch auf automatisiertes Testen setzen?

Die Gründe für die Automatisierung sind hierbei die gleichen wie in der traditionellen Webentwicklung – es ist schneller, und Tests lassen sich auf anderen Plattformen wiederverwenden, wodurch sich die Kosten der Tests insgesamt deutlich reduzieren lassen.

Obwohl auch das manuelle Testen sinnvoll ist und in keiner Testing-Strategie fehlen sollte, ist es ein recht langwieriger und personalintensiver Prozess. Durch die Automatisierung können Tests innerhalb von Minuten oder gar Sekunden ablaufen, für die ein Tester manuell Stunden benötigen würde. Eine solche Beschleunigung von Testprozessen ermöglicht es, gleichzeitig Überprüfungen weiter auszubauen und die Reichweiten der Tests zu erhöhen, sodass sich Unternehmen sicherer fühlen können, eine fehlerfreie App zu veröffentlichen.

Manuelles Testen ist nicht nur langsamer, sondern zum Teil ist es auch kompliziert, die Reichweite für zu testende Features signifikant zu erhöhen. Mit automatisierten Test-Tools hingegen ist es einfach, unabhängig von den jeweiligen Plattformen, eine höhere Anzahl an Tests zu durchzuführen und diese gegebenenfalls auch parallel ablaufen zu lassen.

Mit automatisierten Tests lässt sich außerdem Zeit und Geld sparen, da schlichtweg weniger Ressourcen auf manuelle Tests entfallen. Außerdem birgt das manuelle Testen durch ständig wiederholende Aktionen der Tester die Gefahr, dass sich Fehler einschleichen. Automatisierte Tests können sowohl auf lokaler Infrastruktur als auch auf Cloud-Plattformen ausgeführt werden. Durch die Nutzung von Cloud-Plattformen anstelle einer kostenintensiven Inhouse-Infrastruktur lassen sich weitere Gelder einsparen.

Bei dem ursprünglich von Dan Cuellar entwickelten Appium handelt es sich um ein Open-Source-Automatisierungs-Framework für das automatisierte Testen von nativen, hybriden und Web-Apps. Ähnlich wie Selenium nutzt Appium das WebDriver JsonWireProtocol, um das User Interface mobiler Anwendungen zu testen. Appium ist dabei sowohl mit Android als auch mit iOS und Firefox OS kompatibel [1], wobei das Betriebssystem der Mozilla Foundation kaum eine große Rolle spielt, weswegen es im Folgenden vernachlässigt wird. Durch die Nähe zum Selenium-Protokoll kann das Framework einfach im Zusammenspiel mit einem Continuous-Integration-Server genutzt werden. Im Normalfall lassen sich so seit langem standardisierte Schnittstellen aus dem Selenium-Umfeld wiederverwenden.

Einer der zentralen Ansätze von Appium besteht darin, in einem zunehmend fragmentierten Mobile-Umfeld mit einer Vielzahl von Endgeräte-Typen und Betriebssystemen ein Tool anzubieten, das eine Brücke zwischen all diesen Systemen schlägt und somit tatsächlich "cross-platform" ist. Dabei basiert die Philosophie von Appium auf den folgenden vier Grundsätzen:

  1. Teste genau die App, die schlieĂźlich im App Store zur VerfĂĽgung gestellt wird.
  2. Schreibe Tests unabhängig von Rahmenbedingungen und Programmiersprache.
  3. Nutze genormte Schnittstellen zum Datenaustausch zwischen Objekten und Systemen.
  4. Gründe eine und arbeite an und mit einer großen und erfolgreichen Open-Source-Community. Beim Open-Source-Ansatz ist jedes Tool nur so gut wie die Community, die dabei mithilft, es stetig zu verbessern. Das Appium-Projekt wird mittels Foren und GitHub vorangetrieben. Es erreicht mittlerweile eine große Basis an Entwicklern, die sich stetig um die Weiterentwicklung bemühen. So wurden allein 2015 über zehn Versionen veröffentlicht.

Diese vier Prinzipien sollen im Folgenden genauer betrachtet werden.

"Teste genau die App, die schlieĂźlich im App Store zur VerfĂĽgung gestellt wird."

Im Gegensatz zu den meisten anderen Automatisierungstools ist bei Appium kein SDK erforderlich, das den Code der Anwendung fĂĽr das Automatisierungstool ĂĽbersetzen. Somit wird die getestete App in keiner Weise modifiziert.

Während bei anderen Frameworks der Code der App anzupassen ist, handelt es sich im Fall von Appium bei der getesteten App tatsächlich um jene, die später im App Store zur Verfügung gestellt wird. Daher lassen sich auch Apps und Websites automatisieren, deren Quellcode nicht bekannt ist. So kann man komplexe Testszenarien aufbauen.

"Schreibe Tests unabhängig von Rahmenbedingungen und Programmiersprache."

Bei Appium handelt es sich um einen Node.js verwendenden HTTP-Server, der eine Vielzahl parallel laufender WebDriver-Sessions für verschiedene Plattformen und Systeme ermöglicht. In diesem Umfeld wird auch der zweite Grundsatz der Philosophie, Tests in jedem Framework und in jeder Sprache zu ermöglichen, konsequent umgesetzt. Zurzeit unterstützt Appium neben Ruby, C#, Java und JavaScript auch Objective-C, PHP, Python, Perl und Clojure.

Die Test-Skripte lassen sich von Emulatoren, Simulatoren und realen Endgeräten ausführen.

"Nutze genormte Schnittstellen zum Datenaustausch zwischen Objekten und Systemen."

Auch der Cross-Plattform-Gedanke wird von Appium mit Leben gefüllt. Wie erwähnt, kann man Tests für iOS, Android und Firefox-OS-Betriebssysteme schreiben und dabei eine genormte WebDriver-Schnittstelle des W3C-Standards nutzen. Da jeder Anbieter einen anderen Weg und Mechanismus hat, um einen Testfall auf dem Gerät applizieren zu lassen, nutzt Appium eine eigene plattformspezifische Automatisierungsumgebung auf dem Gerät und führt Testfälle aus, sobald das Tool Befehle vom Appium-Server erhalten hat.