Koffeininjektion für die Blechbüchse

Android-Apps testen mit Espresso


Testen ist seit Jahren ein großes Thema im Bereich Mobile. Der Grund ist recht simpel: Wo es bei klassischen Webseiten eine Handvoll Browser in einer Handvoll Versionen zu unterstützen gab, findet man gerade bei Android ein ganzes Universum an Geräten verschiedenster Preiskategorien, Formfaktoren und Versionen. Passiert dem App-Entwickler dann ein Fehler, kann meist nicht ähnlich schnell wie beim Web ein Hotfix ausgerollt werden. Der User muss erst einmal zum Update bewegt werden. Ältere Versionen, auch fehlerhafte, sind noch lange in der Wildnis anzutreffen. Umso wichtiger wird daher neben den hoffentlich vorhandenen Unit Tests (leider keine Selbstverständlichkeiten bei vielen Mobile-Entwicklern) auch ein QA-Prozess mit manuellen und automatischen Tests.

Von Anfang an stellte Google so genannte Instrumentation-Tests bereit: In Kurzfassung schreibt man eine Testanwendung als echte Android-Anwendung mithilfe von JUnit-3-Tests. Wie dies oft anfangs so ist, waren die Tests aufwändig zu schreiben und das Framework noch recht anfällig für Probleme. Schnell entstanden daher in der Community ergänzende Frameworks, von denen Robotium [1] und Calabash [2] die wohl am häufigsten anzutreffenden sind. Ersteres vereinfachte das Schreiben der Tests; blieb jedoch beim eigentlichen Ansatz, Tests in Android-Java zu schreiben. Calabash setzte Cucumber von iOS um. Hier werden in menschlicher Sprache Akzeptanztests formuliert.

2013 nahm sich dann Google wieder des Themas an. Zuerst veröffentlichte das Unternehmen UI Automator, ein neues Framework bei Anwendungen, die in reinem Java geschrieben wurden. Damit konnte man nicht nur mit der eigenen Anwendung, sondern mit allen auf dem Gerät verfügbaren interagieren.

Doch kaum ein halbes Jahr später wurde auf der Google Testing Conference ein weiteres Tool namens Espresso vorgestellt [3]. In Googles Worten: „Espresso is a thin layer on top of Android Instrumentation that makes it easy to write reliable UI tests.“ (Valera Zakharov). Espresso setzt demnach auf die klassischen Instrumentation-Tests, behebt jedoch dessen Schwächen in allen Belangen: Syntax, Performance, Stabilität.

Hier offenbart sich auch der wesentliche Unterschied zwischen UI Automator und Espresso: UI Automator ist ideal für Blackbox-Tests der gesamten Anwendung und der Interaktion mit anderen Anwendungen (wie Kamera o. Ä.). Der Test kann hierbei nur steuern, was der Nutzer auch sieht. Es kann also nur auf Elemente zugegriffen werden, die sichtbar sind. Sind El...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang