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:
Dashboard mit allen verbundenen Android Geräten, mit Stati, Model, Betriebssystem, integrierter SDK und Location.
Alle Geräte, welche verfügbar sind, können angewählt werden und man erhält viele Detailinformationen der einzelnen Geräte. Man kann direkt mit Hilfe der Maus oder dem Keyboard mit dem Gerät interagieren.
Man hat die Möglichkeit direkt APKs hochzuladen, Applikationen zu starten und Screenshots zu machen. Zudem besteht die Möglichkeit Logfiles zu exportieren, shell commands auszuführen oder den Debug Modus zu starten.
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:
Sobald du die obenstehenden Tools installiert hast kannst du mit der Konfiguration und Installation der Smartphone Test Farm starten:
Öffne das Terminal (CMD+Space, Terminal)
Gebe in Terminal folgender Befehl ein und klicke auf Enter: brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config
Gib als nächstes den folgenden Befehl ein: npm install -g stf
Nach dem die Installation der Requirements durch ist, fetche die NPM und Browser Module mit Hilfe des Befehls: npm install
Für den Zugriff über die Kommandozeile gebe folgender Befehl ein: npm link und drück Enter.
Geschafft!
Erste Schritte nach der Installation
Verbinde dein Android Gerät via USB mit deinem Mac.
Ö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.
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.
Öffne ein neues Terminal Fenster und tippe den Befehl stf local ein. Damit startest du die Android Device Cloud.
Nun sollte alles bereit sein um das Dashboard anzuzeigen. Öffne dafür deinen Browser und tippe die URL http://localhost:7100 ein.
Du siehst nun eine Login Page:
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:
Schliesse alle Sessions in deinem Terminal.
Starte STF indem du den Befehl rethinkdb eingibst.
Öffne ein zweites Terminal Fenster und gib folgenden Befehl ein: stf local --public-ip (Beispiel stf local --public-ip yourIP)
Öffne einen Browser und tippe http://yourIP:7100 ein (Wobei du "yourIP" natürlich mit deiner entsprechenden IP Adresse ersetzen musst).
Logge dich ein.Lustigerweise hast du so auch die Möglichkeit, mit dem mobilen Safari-Browser deines iPhones die Android Geräte anzusteuern.
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.