Mobile First bei ImmobilienScout24

Artikel von Christophe Cornu, Katrin Jähn und Jürgen Schmidt

ImmobilienScout24 ist das größte Immobilienportal im deutschsprachigen Internet. Mit monatlich über 10 Millionen Besuchern ist das Unternehmen klarer Marktführer. Jeden Monat werden auf ImmobilienScout24 über 1,5 Millionen verschiedene Immobilien zur Miete oder zum Kauf angeboten und über 300 Millionen virtuelle Immobilienbesichtigungen durchgeführt. Neben der Immobiliensuche bietet das Portal ein breites Spektrum an Services rund um die Immobilie: Sei es, um das passende Umzugsunternehmen, die günstigste Baufinanzierung oder Tipps zur energetischen Gebäudesanierung zu finden. Das Unternehmen sitzt in Berlin und beschäftigt rund 600 Mitarbeiter.

Seit 2010 verfolgt ImobilienScout24 bei der Produktentwicklung eine Mobile-First-Strategie. Damit hat ImmobilienScout24 seine Marktführerschaft auch auf das mobile Web übertragen. Die Apps von ImmobilienScout24 wurden knapp 6 Millionen Mal heruntergeladen. Inzwischen kommen rund 46 Prozent des Gesamttraffics über die mobilen Kanäle, rund 26 Prozent ausschließlich über die mobilen Apps.

Agile Teams

Im Rahmen der App-Entwicklung arbeiten zwei interne agile Entwicklungsteams, bestehend in der Regel aus jeweils sechs Mitarbeitern (Scrum Master, Produktmanager, Entwickler, Quality Engineer, Vertreter der User Experience) an vier Apps, deren Updates in regelmäßigen Abständen veröffentlicht werden. Hierbei werden die Plattformen iOS, Android und Windows Phone bedient.

Apps für die Immobiliensuche

Unsere mobilen Apps sind überwiegend für Immobiliensuchende bestimmt. Dementsprechend haben alle ein gemeinsames Basis-Feature-Set. Die „Suche Apps“ ermöglichen unseren Nutzern nach Immobilienobjekten in Deutschland und Österreich zu suchen, Anbieter zu kontaktieren, bestimmte Objekte zu merken und einiges mehr. Exposés werden übersichtlich mit Bildern und PDF-Dokumenten angezeigt und zusätzlich auf einer Karte markiert. Die iPhone-App besitzt ein zusätzliches Set an Features, zum Beispiel die Möglichkeit einer gemeinsamen Suche oder auch die Objektinserierung für Immobilienanbieter.

Aller Anfang ist schwer ImmobilienScout24 begann mit der mobilen Softwareentwicklung vor einigen Jahren mit der iPhone-App. Als etabliertes Web-Unternehmen bedeutete dieser Schritt einige Herausforderungen, insbesondere im Hinblick auf die Organisation.

Für das neue Team brauchten wir Mobileerfahrene Entwickler und Testingenieure, die zu diesem Zeitpunkt kaum am Markt zu finden waren. Deshalb haben wir in der eigenen IT-Abteilung interessierte und motivierte Kollegen gesucht und gefunden, die sich in das neue Themenfeld einarbeiteten. Zudem galt es, eine Antwort auf die Frage zu finden, welches Investment in Testgeräte und die Testinfrastruktur zu tätigen ist. Hierzu musste das umfangreiche Know-how zu Testwerkzeugen und -methoden zusammengetragen werden. Da die App-Entwicklung als Disziplin damals noch in den Kinderschuhen steckte, war es entsprechend schwer, solide Erfahrungen und ausgereifte Frameworks für die täglichen Testaufgaben zu bekommen.

Den Benutzer erreichen

Smartphone-Benutzer beziehen ihre Apps in der Regel aus Stores. Je nach Plattform gibt es ein Monopol für den Bezug von Apps wie etwa bei iOS. Oder es gibt unzählige Stores wie etwa bei Android. Aber in der Regel durchlaufen in allen Stores einmal eingereichte Apps einen Review-Prozess, in dessen Verlauf auf Konformität zu Veröffentlichungsvereinbarungen oder auf möglichen Schadcode geprüft wird. Allerdings gibt es oft erhebliche Unterschiede in der Prüfungsdauer.

Aus dem Gesichtspunkt der Qualitätssicherung ist das ein kritischer Punkt. Denn ein einmal produktiv in Erscheinung getretener schwerer Fehler kann vielleicht intern zügig gelöst werden, wird dann aber erst ver

zögert für den Nutzer verfügbar. Eine weitere Herausforderung, die sich aus der Abhängigkeit von Stores für die Verteilung ergibt, ist die fehlende Beeinflussbarkeit von Updates. Es liegt vollkommen in der Verantwortung des einzelnen Nutzers, ob und wann ein Update zur App gemacht wird.

Vielfältigkeit der Zielgeräte

Für den Betrieb einer App auf einem Zielgerät wird ein mobiles Betriebssystem als Plattform benötigt. Aber nicht jedes Gerät und jede Plattform sind identisch. Hinzu kommt, dass die Vielfalt der Geräte kontinuierlich wächst.

Im Idealfall müssten die Tests alle Varianten abdecken, um eine umfassende Aussage zur Qualität einer App zu bekommen. Das ist mit vertretbarem Aufwand nicht zu leisten. Deshalb sollte man sich als Tester besser damit auseinandersetzen, welche bestimmten Geräteeigenschaften mehr und welche weniger Einfluss auf die Qualität nehmen, anstatt jedes erhältliche Gerät ins Auge zu fassen. Häufig sind dies Gerätemerkmale wie Größe und Punktdichte des Displays, Eingabemöglichkeiten des Geräts sowie die verbauten Sensoren und Netzwerkschnittstellen.

Mobile Betriebssysteme sind selbst ständig im Wandel. Auch wenn neue Versionen, wie zum Beispiel iOS, schnell und auf breiter Front auf den Geräten ausgerollt werden, ist doch zu berücksichtigen, dass eine zunehmende Zahl von meist älteren Geräten nicht mehr beliefert werden. Bei Android ist dies deutlich gravierender. Dort liegt das System-Update meist in den Händen der jeweiligen Hersteller und das kann monatelange Verzögerungen für den Kunden bedeuten. Die Offenheit von Android verdeutlicht sich vor allem in den Anpassungen am System, die viele Hersteller am User Interface und Bedienverhalten machen. Dies ist ein nicht zu vernachlässigender Punkt beim Test.

Hohe Ansprüche an Usability und Performanz

Anders als Software im klassischen Web-Umfeld werden mobile Apps oft in völlig neuen Kontexten benutzt. Benutzer befinden sich unterwegs selten in optimalen Situationen, es mangelt ihnen an Zeit oder es muss trotz lückenhafter Internetverbindung eine schnelle Entscheidung getroffen werden.

Trotz ausgezeichneter funktionaler Qualität der App kann sie beim Nutzer scheitern, wenn dieser die Benutzeroberfläche kaum versteht, er die App schlecht bedienen kann oder ihm das Ergebnis in seiner Situation in ungeeigneter Form präsentiert wird. Da sich Art und Weise der App-Nutzung je nach Kontext ändert, wird eine gute Usability besonders positiv wahrgenommen. Das geht so weit, dass Nutzer eine unzureichende Benutzerfreundlichkeit oftmals mit einer Deinstallation quittieren.

Ungleich wichtig sind Leistungswerte. Der Anwender erwartet, dass eine App auf kurze Antwortzeiten, wenig Daten- und Akkuverbrauch hin optimiert wird. Langwierige Operationen werden in einer App nicht synchron abgearbeitet, sondern in einem Hintergrund-Thread erledigt. Es sind Tasks, wie das Nachladen von Informationen und das Synchronisieren von Datenbeständen, die bei Apps sehr häufig passieren. Viele zeitgleiche Hintergrund-Tasks erhöhen die Komplexität der Software in ihrem Verhalten und besitzen ein höheres Fehlerpotenzial, das es mit Tests abzudecken gilt.

Damit sind Performanz, Usability und User Experience wichtige Bestandteile des Testpaketes. Die Apps sollen den Benutzern Spaß machen und sie zum Ziel führen. Zudem ist es wichtig, Trends und Angewohnheiten der Benutzer bezüglich der Usability zu kennen. Der Quality Engineer ist einer der ersten Benutzer der Apps und kann diese Qualitätsmerkmale entsprechend beim Testen berücksichtigen.

Fortlaufende Bestimmung der Qualität

Sobald eine App ausgeliefert ist, kann man nur schwer Aussagen darüber treffen, ob und wie oft neue Fehlerzustände auftreten. Eine ausgiebig und erfolgreich getestete App bildet noch lange keine Garantie für absolute Fehlerfreiheit. Häufige Gründe sind sich ändernde Abhängigkeiten, entweder durch ein Update der Plattform oder wenn benötigte Web-Dienste (APIs) ihren Dienst verweigern oder sich plötzlich anders verhalten als zuvor spezifiziert.

Die fortlaufende Bestimmung der Qualität bei aktiv installierten Apps ist daher sehr wichtig. Die Herausforderung besteht darin, alle Fehler- und Ausnahmesituationen auf den Geräten zu sammeln und in eine auswertbare und aussagekräftige Form zu bringen. Am Markt wird eine Vielzahl von Lösungen für dieses Problem angeboten. Wichtig ist hierbei, dem Anwender die Möglichkeit zu geben, den Umfang des Fehler-Reportings zu beeinflussen. Auch Themen wie Datenschutz und Datenverbrauch dürfen nicht außer Acht gelassen werden.

Manuelle Tests an Geräten

In unseren agilen Entwicklungsteams wird auf Referenzgeräten entwickelt. Für den schnellen begleitenden manuellen Test ist es hilfreich, ebenfalls auf realen Geräten zu testen. Welche Geräte dabei in eine engere Auswahl kommen, hängt von vielen Fragen ab: Erstens auf welchen Gerätetyp sich die Entwicklung beschränkt (nur Smartphone, nur Tablets usw.), und zweitens wie weit diese Gerätetypen bei Kunden verbreitet sind.

Aus den wichtigsten Merkmalen und ihren Ausprägungen kann ein Tester dann eine Abdeckungsmatrix ableiten und so aus den am Markt verfügbaren Geräten eine minimale Kombination bestimmen, die eine hinreichende Abdeckung aller Merkmale gewährleistet. Besonders verbreitete Geräte sollten immer einem exotischen Modell bevorzugt werden. Die so erstellte Liste der Referenzgeräte dient als Grundlage für den manuellen Test der App.

Die manuellen Tests sind strukturiert und orientieren sich strikt an der umzusetzenden Story. Um möglichst schnell offensichtliche Fehler zu finden, testen wir in der Regel nur an einem Gerät. Die weiteren Testgeräte werden anschließend regelmäßig einbezogen, um spezifischere Abweichungen zu finden.

Speicheranalyse

Für iOS als Mobilplattform stellen durch Speicherfehler verursachte Abstürze ein klares Risiko dar. Mit einer Speicheranalyse während des Entwicklungsprozesses analysieren wir den Umgang der App mit dem Gerätespeicher. Dabei untersuchen wir alte sowie neue Workflows und überprüfen, ob der Speicherverbrauch normal ist oder ob es Speicherlecks gibt. Das Identifizieren und Beheben solcher Fehler führt zu einer stabileren App.

Mobile Apps und Continuous Integration

Neue App-Features werden bei uns in der Regel alle drei bis fünf Wochen in den einzelnen Stores veröffentlicht. Um in diesen Abständen gleichbleibende Qualität bei ansteigendem Funktionsumfang und zunehmender Komplexität zu gewährleisten, nutzen wir automatisierte Regressionstests. Bereits umgesetzte Features müssen mit mindestens einem Systemtest abgedeckt werden. Wir bestimmen die kritischsten Benutzer-Workflows und setzen diese mit dem entsprechenden Testframework für die jeweilige Plattform in einem automatischen Test um.

Die Ausführung erfolgt in einer Continuous-Integration-Lösung, die diese Tests entweder als Integrations- oder Systemtests in einer definierten Build-Chain platziert. Nach jeder Codeanpassung werden dann alle Tests durchlaufen. Nur mit dem erfolgreichen Testdurchlauf wird die App an einen internen Store zur Verteilung freigegeben. Anders als bei den manuellen Tests lassen wir Regressionstests gegen virtuelle Geräte laufen. Diese simulierten oder emulierten Testumgebungen bieten den Vorteil, dass sie kostensparender, stabiler und flexibler einsetzbar sind als die realen Testgeräte.

Eine weitere Frage, die wir uns zu Anfang stellten, war, welche Testumgebung für die Schnittstellen und APIs verwendet werden sollen. Wir haben uns gegen die Test-API und für die produktive API unserer Immobiliensuche entschieden. Wir wollen die Vielfalt der Live-Daten für die manuellen Test nutzen, um mit höherer Wahrscheinlichkeit Fehler finden zu können. Zudem bietet uns die produktive API eine höhere Zuverlässigkeit. Für unsere automatisierten Tests haben wir einen dedizierten Veröffentlichungskanal für die Testobjekte erzeugt und können so in Produktion sicherstellen, dass Benutzer und Auswertungen durch Tests nicht beeinträchtigt werden.

Eine einfache aber geniale Testmethode ist das Fuzzing. Android als mobile Plattform bietet mit dem UI Exerciser Monkey ein Werkzeug, um die App mit einer pseudozufällig bestimmten Reihe von Benutzer-Input zu stressen. Durch Fuzzing testen wir gezielt die Stabilität einer App und vermeiden damit, bedingt durch asynchrone Abläufe in der App, kritische Fehler. Kennt man den Startwert (Seed) eines Testdurchlaufs, dann ist sogar ein exakter Retest nach dem Bugfix möglich.

Viele Augen sehen mehr

Sind alle User Stories für das anstehende Release umgesetzt, planen wir ein Session-Based Testing ein. Eine Sitzung dauert kaum länger als eine Stunde, wobei die Teilnehmer sich aus Mitgliedern der Qualitätssicherung und anderer Abteilungen zusammensetzen. Mit dieser Methodik überprüfen wir letztmalig, ob der Qualitätsstandard erreicht wurde. Nach einem Briefing testen die Teilnehmer die App auf einem oder mehreren Testgeräten explorativ. Sie suchen gezielt nach Fehlern, indem sie ihre eigenen Erfahrungen und Sichtweisen einbringen.

Ein Session-Based Testing ist zwar kurz und intensiv, aber die Anzahl der Teilnehmer ist oft begrenzt. Um mehr freiwillige Testkandidaten einbeziehen zu können, bieten wir intern die Möglichkeit, den Releasekanditaten über den eigenen App Store oder über den Betatest-Channel des Google Play Store zu beziehen. Das automatische Fehler-Reporting liefert uns während der Betatestphase ein gutes Feedback der Tester, wenn sie auf unerwartetes Verhalten der App treffen.

Risikofaktor App-­Update

Der Update-Test ist der letzte Test, den wir unmittelbar vor der Veröffentlichung durchgehen. Ziel dieses Schrittes ist, eventuelle Fehler zu identifizieren, die sich nach der Installation des Updates beim Start ereignen können. Häufig ist ein Fehler im Update des lokalen Datenbestands der App die Ursache. Deswegen empfiehlt es sich, das Update auf mehreren Geräten parallel mit verschiedenen Datenbeständen durchzuführen. Mit dem Update-Test stellen wir sicher, dass der Kunde eine neue Version der App ohne Probleme installieren und einsetzen kann. Er dauert kaum länger als eine Stunde und ist dennoch enorm wichtig.

Fazit

Seit dem Entwicklungsstart unserer ersten App legen wir den Testfokus nicht nur auf die Benutzer-Workflows, sondern auch auf andere Merkmale wie Stabilität, Konsistenz mit der Plattform, Layout und Navigation. Die Apps werden in Bezug auf Stabilität auch außerhalb des Büros getestet: im Fahrstuhl, in der Tiefgarage und unterwegs in der Berliner U- und S-Bahn. Schlechter Netzempfang kann zwar gut auf den Testgeräten simuliert werden, aber erst Tests unter realistischen Bedingungen komplettieren das Paket.

Unsere Apps haben einen hohen Qualitätsstandard. Durch die ständige Weiterentwicklung erhalten sie aber nicht nur neue Funktionalitäten, sondern eine größere technische Komplexität, die zu mehr Fehlerpotenzial führt. Wir müssen mit dieser Komplexität umgehen können. Das ist nicht nur eine Frage des technischen Know-Hows, sondern auch eine Frage der Lernbereitschaft, der Motivation und der kultivierten Teamarbeit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kategorien

Recent Posts