Von Florian Pilz

Estimated reading time: 7 Minuten

Techblog

Deeplinks testen

In die Tiefen der App eintauchen In meinem aktuellen App Projekt entwickeln wir in zwei-Wochen-Sprints parallel Android- und iOS-Apps für verschiedene Länder mit leicht unterschiedlichen Funktionen. Eine der Funktionen, die wir regelmäßig testen, sind Deeplinks. Deeplinks verlinken zum Beispiel in einer Shopping-App direkt auf ein Produkt. Das ist hilfreich, wenn ich zum Beispiel regelmäßig Newsletter…

Techblog

In die Tiefen der App eintauchen

In meinem aktuellen App Projekt entwickeln wir in zwei-Wochen-Sprints parallel Android- und iOS-Apps für verschiedene Länder mit leicht unterschiedlichen Funktionen. Eine der Funktionen, die wir regelmäßig testen, sind Deeplinks.

Deeplinks verlinken zum Beispiel in einer Shopping-App direkt auf ein Produkt. Das ist hilfreich, wenn ich zum Beispiel regelmäßig Newsletter mit Links zu neuen Angeboten verschicke. Ich möchte, dass Kundinnen und Kunden auf den Link klicken und in der App direkt bei diesem Produkt landen. So finden sie weitere Informationen und können es gleich bestellen. Ein anderer Anwendungsfall: Auf den Produktseiten gibt es einen Share-Button für WhatsApp. Dadurch können Kundinnen und Kunden die Produkte schnell mit anderen teilen. Für all das verwendet man Deeplinks.

Deeplinks bestehen wie Links im Internet aus mehreren Teilen: protokoll://pageName?parameter. Der Link aus dem Newsletter zu meinen Produkten könnte zum Beispiel so aussehen: meineapp://products?id=123. Dadurch wird die App auf der Shoppingseite geöffnet und das Produkt wird direkt angezeigt. Um es auf WhatsApp zu teilen, verwende ich den verfügbaren Deeplink WhatsApp://send?text=“Hey schau was ich gefunden habe: meineapp://products?id=123“

Auf den ersten Blick sieht das Testen von Deeplinks recht einfach aus: Man klickt auf den Link und schaut was passiert. Wenn es doch nur so einfach wäre. Beim Testen von Deeplinks gibt es verschiedene Dinge zu beachten.

  • Art den Link zu öffnen: Ein typisches Szenario ist es, einen Link auf einer Internetseite zu integrieren. Durch diesen gelangen die Nutzer zu der App. Dieser Fall sollte auf jeden Fall abgesichert werden. Ein weiteres Beispiel wären Push-Nachrichten, die die Nutzer auf ihr Smartphone bekommen. Auch in diese können Deeplinks eingebettet sein, so dass sich die App anschließend öffnet.
  • App Status: Hier wird getestet, dass der Deeplink bei installierter oder nicht-installierter App wie vorgesehen geöffnet werden kann. Im ersten Fall sollte die App starten und die korrekte Seite anzeigen. Im zweiten Fall sollte sich der App Store/ Play Store direkt auf der App-Seite öffnen.
  • Benutzerstatus: Spannend ist hier unter anderem, wie sich die App verhält, wenn der User abgemeldet ist. Ist es möglich, per Deeplink in geschützte App-Bereiche zu gelangen? Dort sollten keine User-Daten angezeigt werden. Das Impressum könnte dagegen auch im ausgeloggten Zustand aufgerufen werden
  • Fehlertoleranz: Um zum Beispiel das Senden von leeren Parametern zu testen, senden wir in der URL Parameter ohne Wert. Zusätzlich senden wir komplett leere Parameter, indem wir beispielsweise ein &-Zeichen an das Ende der URL setzen. Auch in diesem Fall sollte der Deeplink korrekt funktionieren, und zum Beispiel die Seite öffnen.

In jeder dieser vier Kategorien gibt es viele Beispiele mehr. Und noch eine stattliche Anzahl an Einzelfällen – etwa Verhalten, dass sich nur auf ein Betriebssystem oder bei einem Geräte-Typ zeigt. Als Beispiel: Wurde die App durch einen Deeplink geöffnet, ist es interessant, wie sie sich auf Android beim Drücken des Hardware-Backbutton verhält: Schließt die App und die aufrufende Seite wird angezeigt? Oder soll die App zu einer bestimmten Seite navigieren?

Alle Punkte sind in der Mindmap aufgeführt – ohne Anspruch auf Vollständigkeit.

(please find english version here). 

Viele der aufgeführten Punkte lassen sich miteinander kombinieren: Beispielsweise kann man eine fehlerhafte URL auf eine App ohne eingeloggten User senden. Das hilft, Szenarien für explorative Testmethoden zu generieren.

Und jetzt ganz konkret

Um Deeplinks auf Android zu testen, kann das Gerät einfach an den Rechner angeschlossen werden. Der Deeplink wird dann via ADB ausgeführt. Dazu einfach den Befehl adb shell am start -a android.intent.action.VIEW -d “meineapp://products“ com.myapp.packagename aufrufen. iOS bietet diese Möglichkeit leider nicht. Ein einfacher Workaround ist, eine Homepage (beispielsweise auf Neocities) zu erstellen und die Deeplinks dort einzubetten.

Führt man Deeplinks aus, so beobachtet man in erster Linie, ob die korrekte Seite geöffnet wird. Ist die Benutzerin oder der Benutzer eingeloggt, soll die Seite geöffnet werden. Ist das nicht der Fall soll möglicherweise die Login-Seite starten. Doch was passiert danach? Wenn der Benutzer seine Daten korrekt eingetragen hat und der Login erfolgreich ist? Wird dann die Zielseite des Deeplinks geöffnet oder die Standardseite?

Ein weiterer Fall für den Test: Was passiert wenn niemand in der App eingeloggt ist, und die Seite auch keinen Login benötigt, etwa eine FAQ-Seite. Wird diese dann korrekterweise geöffnet? Auch empfiehlt es sich zu beobachten, ob die App nach dem Öffnen des Deeplinks mehrfach geöffnet wurde und nun mehrfach parallel vorhanden ist.

Und weil das noch nicht aufwändig genug ist…

… , gibt es noch ein paar andere Dinge zu beachten: Apple bringt eigene Deeplinks mit – die sogenannten „Universal Deeplinks“. Sie haben ein paar gemeine Eigenschaften: Öffnet man eine App durch einen Deeplink, gibt es im rechten oberen Bereich einen Link, der zum Browser führt. Drückt man diesen Link, wird der Deeplink von nun an immer den Browser öffnen. Diese Einstellung wieder zu ändern, ist extrem schwer. Selbst Neustarts oder das Deinstallieren der App setzen die Einstellung nicht wieder zurück. Stattdessen muss man einen Deeplink lange drücken; dadurch öffnet sich ein Kontextmenu mit der Auswahlmöglichkeit, den Deeplink in der App zu öffnen. Des Weiteren: Wurde eine App-Funktion geändert, funktioniert der Universal Deeplink möglicherweise nicht mehr korrekt – er führt ins Nichts. Deeplinks müssen also ständig auf Regressionen getestet werden.

Die nächste große Frage ist: Was passiert, wenn die App nicht installiert wurde? Für solche Fälle gibt es Link-Broker, beispielsweise Adjust. Sie ermöglichen einen Fallback auf den App-Store beziehungsweise den Play-Store. Allerdings können diese Deeplinks extrem komplex und verschachtelt sein. Gerade dann muss beim Testen genauer hingesehen werden.

Liste und Mindmap haben keinen Anspruch auf Vollständigkeit. Gerade die Liste der zu beobachtenden Phänomene lässt sich beliebig erweitern. Ich hoffe, die Zusammenstellung hilft dem einen oder anderen dabei, Deeplinks besser zu testen. Wenn Ihnen wichtige Punkte auffallen, freue ich mich auf Ihren Input in einem Kommentar.

In diesem Sinne: Happy Testing!


Über den Autor

Von Florian Pilz