Sie benutzen einen alten Browser.

Bitte updaten Sie Ihren Browser damit Sie diese Seite so sehen, wie wir das geplant haben ...

test devices for app testing
Donnerstag, 04. April 2019 / Gepostet von Martin Mattli

Android Test Cloud - Apps von unterwegs testen

Hast du dir auch schon überlegt, wie du von überall aus deine App testen kannst? Oder hattest du auch schon das Problem, dass du gerade Homeoffice machst, aber noch schnell eine Android App installieren solltest um etwas zu testen? Als Verantworlicher für das Testing und die Qualitätssicherung bei Apps with love habe ich mir diese Gedanken natürlich schon oft gemacht. Auch unsere Tester sind nicht immer im Büro oder arbeiten auch mal von Unterwegs. Wie testen wir also unsere Android Apps, wenn wir gerade von Unterwegs arbeiten?

Mit Emulatoren Betriebssysteme und Geräte in der Cloud nachbilden

Einerseits können wir mit Hilfe von Emulatoren* (Zum Beispiel Android Studio oder Genymotion Desktop) die gewünschten Android Geräte und das gewünschte Betriebssystem nachbilden (emulieren). Andererseits gibt es verschiedene Device Clouds auf dem Markt. Diese Device Clouds stellen echte Geräte in der Cloud zum Testen zur Verfügung. Insbesondere kleine Agenturen und Entwickler haben so die Möglichkeit, auf unzähligen Devices ihre Apps zu testen oder die Tests sogar zu automatisieren. Diese Cloud-Lösungen sind aber teilweise sehr teuer, üblicherweise zahlt man pro Minute und pro Gerät. Ausserdem reagieren die Devices in der Cloud ziemlich langsam auf einen Input durch den User, dass heisst, es kann gut sein, dass es bis zu 5-10 Sekunden dauert, bis das Device auf einen Input des Users (z.B. Mausklick) reagiert. Das ist natürlich nicht grad optimal.

*Als Emulator wird in der Computertechnik ein System bezeichnet, das ein anderes in bestimmten Teilaspekten nachbildet. Wikipedia

Die Open Source Alternative - Do it Yourself

Inspiriert durch Daniel Knott und sein Team, möchten wir in diesem Blog aufzeigen, wie auf schnelle Art und Weise eine eigene Android Device Cloud installiert und somit auf alle, im eigenen Gerätepark vorhandenen Android Devices ‘remote’ zugegriffen werden kann. Daniel Knott hat super Vorarbeit geleistet und auch darüber geschrieben.

STF - Die Smartphone Testfarm

Die Smartphone Test Farm (STF) bietet ihr Tool komplett open source an. Sobald STF installiert und konfiguriert ist, können alle Android Geräte welche via USB mit deiner Maschine über das gleiche Netzwerk verbunden sind, remote angesteuert werden.

Die Hauptfunktionen der Smartphone Test Farm sind:

smartphone test farm - device overview
smartphone test farm - dashboard

Setup und Installation - Tutorial Smartphone Test Farm

Die Installation der Smartphone Test Farm ist einfach. Im folgenden beschreibe ich die Installation und Konfiguration für MAC-OS.

Bevor du mit der Installation starten kannst brauchst du folgende Tools:
- Node.js
- ADB
- Homebrew

Sobald du die obenstehenden Tools installiert hast kannst du mit der Konfiguration und Installation der Smartphone Test Farm starten:

1) Öffne das Terminal (CMD+Space, Terminal)

2) Gebe in Terminal folgender Befehl ein und klicke auf Enter:

brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config

3) Gib als nächstes den folgenden Befehl ein:

npm install -g stf

4) Nach dem die Installation der Requirements durch ist, fetche die NPM und Browser Module mit Hilfe des Befehls:

npm install

5) Für den Zugriff über die Kommandozeile gebe folgender Befehl ein:

npm link

und drück Enter.
Geschafft!

Erste Schritte nach der Installtion

1) Verbinde dein Android Gerät via USB mit deinem Mac.

2) Öffne ein neues Terminal und gib den Befehl adb devices ein und drück auf Enter.

Du solltest nun dein angeschlossenes Android Gerät sehen. Ist dies nicht der Fall, kann es sein, dass dein Gerät noch nicht autorisiert ist. Gehe dazu in die Systemeinstellungen des Smartphones, dann in die Entwickler-Optionen und dort erlaubst du ‘USB-Debug’. Falls du die Entwickleroptionen in den Systemeinstellungen nicht siehst, klicke 7-Mal auf die Build-Nummer: Damit aktivierst du die Entwickleroptionen in den Systemeinstellungen.

3) Falls du dein Gerät im Terminal siehst tippe den Befehl rethinkdb ein und bestätige mit Enter. Dieser Befehl muss bei jedem Starten von STF eingegeben werden.

4) Öffne ein neues Terminal Fenster und tippe den Befehl stf local ein. Damit startest du die Android Device Cloud.

5) Nun sollte alles bereit sein um das Dashboard anzuzeigen. Öffne dafür deinen Browser und tippe die URL http://localhost:7100 ein.

6) Du siehst nun eine Login Page:

smartphone test farm - login

Du kannst dich mit einem frei wählbaren Login einloggen.

Falls du dich eingeloggt hast und alles funktioniert, siehst du nun das Dashboard mit deinen am Computer angeschlossenen Geräten.

Du kannst nun ein Gerät, auf welchem du etwas testen möchtest, anwählen.

Zugriff für alle!

Möchtest du nun, dass alle Mitarbeitenden, die das gleiche WLAN benutzen wie du, auf deine konfigurierte Android Device Cloud Zugriff erhalten gehst du wie folgt vor:

1) Schliesse alle Sessions in deinem Terminal.

2) Starte STF indem du den Befehl rethinkdb eingibst.

3) Öffne ein zweites Terminal Fenster und gib folgenden Befehl ein:
stf local --public-ip ein (Beispiel stf local --public-ip yourIP)

4) Öffne einen Browser und tippe http://yourIP:7100 ein (Wobei du "yourIP" natürlich mit deiner entsprechenden IP Adresse ersetzen musst).

5) Logge dich ein.

Lustigerweise hast du so auch die Möglichkeit, mit dem mobilen Safari-Browser deines iPhones die Android Geräte anzusteuern.

test devices in use

Nachteile der DIY Smartphone Test Farm

Der Nachteil des Tools ist es, dass die Geräte immer am USB-HUB angeschlossen, vor Gebrauch verbunden und entsperrt werden müssen. Zudem entsteht zwischen Gerät und Server oft ein Time-Out, was ein Problem beim Remote Zugriff auf das Gerät darstellt. Hier müsste wohl ein einfaches Backend entwickelt werden, um das Problem mit dem Verbindungsverlust zu beheben. Falls sich jemand daran wagt, dürfte man sich gerne bei uns melden!

Der richtige Mix machts

Schlussendlich ist es für ein erfolgreiches Testing wichtig einen guten Gerätemix aus echten und emulierten/simulierten Geräten anhand den Anforderungen zu definieren.

Komplexe Apps und Technologien verlangen nach echten Testgeräten vor Ort

In unseren Projekten haben wir relativ viele Tests, welche nur mit realen Geräte durchgeführt werden können. Dies können zum Beispiel Tests mit der Kamera sein, Pushes, Deeplinks in andere Applikationen, App Performance, UI und Design Tests, Tests mit E-Mail, Whatsapp, SMS, Payment, Hardware Tests (GPS, Bluetooth, Sensoren) oder Tests mit dem AR-, VR- oder Homekit-Framework. Bei der Durchführung von solchen Tests, brauchen wir also echte Geräte vor Ort, welche bereits mit allen notwendigen Konfigurationen/Einstellungen ausgestattet sind, um das Testing möglichste kosteneffizient und zeitnah durchführen zu können. Um auf diese Geräte die Apps zu installieren nutzen wir unser eigens entwickeltes App Delivery Tool - Updraft. Mit Updraft können wir für das Testing von Android und iOS Apps Downloadlinks an die Entsprechenden Testuser gesendet werden, womit diese dann die Apps installieren. Für ein noch effizienteres Testingfeedback kann die von uns entwickelte Open Source Updraft SDK in eure Testapps eingebaut werden, damit Bugs durch schütteln des Smartphones festgehalten und rasch rückgemeldet werden können.

Fazit zur Android Test Cloud Lösung

Die Android Cloud ist eine spannende Lösung wie wir auch von zu Hause auf unseren eigenen Gerätepark zugreifen können. Leider fehlt uns noch eine Lösung für die Anbindung unserer iOS-Devices. Dennoch hoffen wir, dass dieser Blog Post dem einen oder anderen Tester hilft, das eigene Setup zu verbessern.

Martin Mattli

Martin Mattli

Head of Quality Management

Theoretisch kann er Flugzeugturbinen auseinandernehmen und wieder zusammenbauen – während des Fluges. Dies wurde ihm aber zu langweilig und er ist nun bei uns für die technische Qualitätssicherung zuständig. Wir sind save!