Android Emulatoren im Test(er)-Alltag

Emulatoren als reizvolle Alternative

Der Test von Android-Apps stellt unter anderem aufgrund der hohen Gerätevielfalt eine besondere Herausforderung dar. Mit dem für Tests vorgesehenen Budget ist es oftmals nicht möglich, eine ausreichende Abdeckung an Geräten zu erzielen, weshalb die Verwendung von Emulatoren als reizvolle Alternative erscheint.

 Der Hauptvorteil beim Testen von mobilen Anwendungen mit Emulatoren liegt dabei klar auf der Hand: Die deutlich geringeren Kosten gegenüber der Anschaffung von echten Geräten. Zudem ist die Bedienung unkompliziert, Android-Images können auf Knopfdruck heruntergeladen, installiert und gestartet werden. Ein Emulator bietet zwar nicht den vollen Funktionsumfang eines echten Gerätes – wichtige Features, wie zum Beispiel Geräte-Ausrichtung, Ladezustand, GPS oder Kamera, können damit aber emuliert werden.

Emulatoren vs. echte Geräte: Sinnvolle Alternative?

Es gibt jedoch zahlreiche Gründe, die gegen den Einsatz von Emulatoren bei dem Test von mobilen Apps sprechen. Das naheliegendste und zugleich wichtigste Argument: Kein Emulator entspricht exakt dem Gerät, auf welchem ein Benutzer die zu testende App installieren wird. Zudem sind bestimmte Arten von Tests auf einem Emulator nicht oder nur eingeschränkt möglich. Dazu zählen beispielsweise Usability-Tests, Performance-Tests, Tests von Sensor-Input und Tests zum Batterieverbrauch. Aus diesen Gründen kann der Einsatz von Emulatoren nie eine Alternative, sondern immer nur eine Ergänzung zum Test auf echten Geräten sein.

Ein sinnvolles Anwendungsgebiet von Emulatoren sind beispielsweise Sanity Checks: Funktioniert die App in einer bestimmten Android-Version grundsätzlich? Werden die GUI-Komponenten (graphical user interface) in einer bestimmten Auflösung korrekt dargestellt? Auch für den funktionalen Test sind Emulatoren prinzipiell geeignet. Funktionale Fehler, die den Kern der App betreffen, treten in der Regel auf einem Emulator genauso wie auf einem echten Gerät auf. Insbesondere in einer frühen Projektphase ist der Einsatz von Emulatoren für den Test daher empfehlenswert.

Mobile Testautomation: Emulatoren als echte Hilfe

Im Zusammenhang mit Testautomation für mobile Apps ist die Verwendung von Emulatoren ebenfalls sinnvoll. Mobile Testautomation ist zwar mittlerweile den Kinderschuhen entwachsen, dennoch kommt es bei vielen Tools in Verbindung mit echten Geräten immer wieder zu Problemen, wie beispielsweise Verbindungsabbrüchen. Die Benutzung von Emulatoren funktioniert hingegen in der Regel problemlos. Für die Erstellung von automatisierten GUI-Tests zur Analyse der App mit einem Objekt-Inspektor oder einem Automationstest kann ein Emulator somit unnötigen Ärger ersparen.

 

Apropos Ärger: Der von Google zur Verfügung gestellte Android Emulator hat in Vergangenheit bei Entwicklern und Testern aufgrund seiner schlechten Performance häufig für Frust gesorgt, wurde mittlerweile jedoch deutlich beschleunigt. Eine erste Maßnahme dazu war die Möglichkeit, den Grafikprozessor des Hostrechners für OpenGL-Befehle anstelle der GPU-Emulation (graphics processing unit) zu verwenden. Eine weitere Beschleunigung konnte durch die Bereitstellung von speziell für die x86-Architektur erstellten Android Images erzielt werden. Für eine zusätzliche Performancesteigerung bei der Verwendung eines solchen Images sorgt der Intel Hardware Accelerated Execution Manager (HAXM). Dabei handelt es sich um eine Virtualisierungsengine, mit der die Intel Virtualisierungstechnologie zur Beschleunigung des Android Emulators genutzt wird.

Die Idee der Portierung von Android für x86-Systeme ist jedoch nicht neu. So gibt es mit dem Android-x86 Project bereits seit einigen Jahren die Möglichkeit, Android als x86-Variante in einer virtuellen Maschine laufen zu lassen. Als Alternative zum original Android Emulator wurde dieser Ansatz allerdings erst mit dem AndroVM-Projekt populär, aus dem später Genymotion hervorgegangen ist. Genymotion verwendet x86-Android Images, die in einer Oracle VirtualBox VM laufen. Durch die zusätzliche Verwendung der Intel Virtualisierungstechnologie sowie durch OpenGL-Hardwarebeschleunigung ist dieser Emulator echten Geräten in Punkto Performance ebenbürtig und erfreut sich sowohl bei Entwicklern als auch bei Testern großer Beliebtheit. Im Gegensatz zum Google Android Emulator ist Genymotion jedoch nur für die private Nutzung kostenlos, für kommerzielle Zwecke wird eine Business-Edition mit erweitertem Funktionsumfang angeboten.

Ein Nachteil von Genymotion gegenüber dem original Android Emulator ist, dass sich damit keine eingehenden Anrufe simulieren lassen. Ein weiteres Hemmnis ist, dass Apps die ARMspezifi sche Libraries enthalten, damit nicht lauffähig sind. In einer früheren Version war dies durch eine enthaltene ARM Translation-Library (libhoudini) noch möglich, diese wurde jedoch mit Version 2 entfernt. Ebenfalls mit Version 2 aus den zur Verfügung gestellten Images entfernt wurden die Google Play Services, die für die Ausführung zahlreicher Apps benötigt werden. Durch die Möglichkeit, beliebige Updates mittels einer flashbaren zip-Datei per Drag & Drop einzuspielen, können jedoch sowohl die ARM Translation, als auch die Google Play Services aus Drittanbieter-Quellen nachträglich auf dem virtuellen Gerät installiert werden.

 

Fazit

Zusammenfassend lässt sich sagen, dass sowohl der Google Android Emulator als auch Genymotion für Entwickler und Tester eine sinnvolle Ergänzung zu echten Geräten darstellen, wobei sich Genymotion dabei durch eine etwas bessere Performance und Benutzerfreundlichkeit auszeichnet. Emulatoren stellen beim Mobile Testing somit eine sinnvolle Ergänzung zu echten Geräten dar, sind jedoch keine alleinige Alternative.

Autor
SEQIS Autor Simon Dauth

Simon Dauth

Consultant 
IT Analyse, Softwaretest

Newsletter

Um neue Beiträge per E-Mail zu erhalten, hier die E-Mail-Adresse eingeben.

Unsere Autoren

Informieren Sie sich über unsere Autoren und erfahren Sie mehr über unsere Spezialisten und ihre Fachbereiche:

Zu den Autoren

Sie haben eine Frage?

Zurück

Zum Seitenanfang navigieren