App-Testing – die wichtigsten Hardfacts
Von Lukas Glaser am 13.03.2018
Derzeit gibt es 1,6 Millionen mobile Apps die täglich Anwendung in unserem Alltag finden. Dabei sind die ersten Eindrücke nach der Installation meist entscheidend für deren Erfolg. Die Erwartungen des Users sind hoch und wenn eine App nicht von Anfang an fehlerfrei läuft, wird sie vom Benutzer meistens schnell wieder deinstalliert und auch nicht weiterempfohlen. Zudem ist die App der Konkurrenz meist nur wenige Klicks entfernt.
Bei der Entwicklung mobiler Anwendungen ist das höchstmögliche Maß an Qualität zu gewährleisten, weswegen ein umfangreiches Testen zur Qualitätskontrolle unerlässlich ist. Denn nur so können Fehler rechtzeitig erkannt und behoben werden.
Dieser Blogbeitrag soll in groben Zügen den Vorgang des Testens mobiler Anwendungen erklären und deren Wichtigkeit erläutern. Zusätzlich gibt er Aufschluss darüber, welche Testarten es gibt, welche Herausforderungen auf einen zukommen, wie ein gutes Testkonzept aufgebaut wird, was es zu berücksichtigen gibt, u.v.m.
Vor welchen Herausforderungen steht man als Tester?
Durch die Vielzahl an Herstellern, Endgeräten und Betriebssystemen die derzeit am Markt sind, steigt die Anzahl an Testfällen mit jedem neuen Gerät fast exponentiell. Es ist natürlich nicht ausreichend, mobile Anwendungen ausschließlich auf Android und iOS zu testen. Auch Betriebssysteme mit kleineren Marktanteilen wie z.B. das Windows Phone müssen berücksichtigt werden.
Des Weiteren verwendet nicht jeder Benutzer immer die aktuellste Version seines Betriebssystems. So muss auch die Vielzahl an unterschiedlichen Versionen, die sich zum aktuellen Zeitpunkt im Umlauf befinden, einkalkuliert werden.
Auch das Vorhandensein unterschiedlicher Displaygrößen und Auflösungen sowie das zunehmende Aufkommen von Tablets erschweren zusätzlich das Testen einer App. Anfallende Störfaktoren wie Anrufe während dem Testen oder aufpoppende Push-Nachrichten können ebenfalls zum Verhängnis werden.
Werden die Tests auf jenen Geräten ausgeführt, die speziell für diese Zwecke vorgesehen sind, ist deren Speicherkapazität möglicherweise auch deutlich weniger ausgelastet, als bei jenen Geräten die alltäglich von einem realen Benutzer verwendet werden. Dies würde dazu führen, dass die Testergebnisse auch nur bedingt repräsentativ sind.
In jüngster Vergangenheit sind auch völlig neue Anforderungen an das App-Testing entstanden. Hierzu zählen unter anderem diverse Sicherheits- und Datenschutzrichtlinien. Im Mai 2018 tritt EU-weit eine neue Datenschutzgrundverordnung (DSGV) in Kraft.
Nähere Informationen zur DSGV2018 in Bezug auf mobile Apps finden Sie hier: http://www.searchsecurity.de/lernprogramm/Was-der-Datenschutz-bei-mobilen-Apps-verlangt
Das Konzept zum erfolgreichen Testen
Mobile Anwendungen werden, sowie sämtliche andere Anwendungen auch, systematisch getestet. Das heißt, es wird bereits im Vorhinein ein Konzept erstellt, indem festgelegt wird, welche Szenarien wie getestet werden.
Das Konzept sollte folgende Fragen beantworten:
- Welche Arten von Tests benötigt man?
- Welche User-Szenarien müssen dabei abgedeckt werden?
- Wie werden die Testfälle verwaltet und wo werden die Testergebnisse abgelegt?
- Auf welchen Geräten / Betriebssystemen / Testumgebungen wird getestet?
Ansätze, die man bereits aus herkömmlichen Softwaretests kennt, kommen auch in der „mobilen Welt“ zum Einsatz. Oberstes Ziel eines App-Tests ist der Nachweis von Funktionalität.
Wie auch beim Desktoptesten werden Testfälle für die verschiedensten Testarten erstellt und in jedem Testzyklus abgearbeitet. Der entscheidende Unterschied liegt lediglich daran, dass die Tests auf mehreren Geräten durchgeführt werden müssen. Auch die Punkte Datenschutz, Usability und Sicherheit dürfen in einem Testkonzept nicht fehlen.
Welche Arten von Tests gibt es?
Usability Tests
Mit Usability-Tests wird die Gebrauchstauglichkeit einer App mit potentiellen Usern festgestellt. Reale Testpersonen prüfen die Anwendung auf Funktionalität und Benutzerfreundlichkeit. Natürlich ist diese Vorgehensweise meist sehr zeit- und kostenintensiv.
Funktionstests
Ein Funktionstest (auch funktionaler Test genannt) überprüft ein Programm (oder einen Teil davon) in Bezug auf funktionale Anforderungsmerkmale, also ob sich die Software richtig verhält und den Anforderungen im Pflichtenheft entspricht.
Akzeptanztests
Der Akzeptanztest (auch Storytest genannt) überprüft, ob eine Anwendung oder eine Funktion ihren Zweck bzw. die Anforderungen an den Kunden erfüllt. Es wird getestet, ob das Produkt nach einem Release auslieferbar ist, oder nicht. Der PO (Product-Owner) gibt dafür sogenannte Akzeptanzkriterien vor. Es existieren lediglich zwei Testergebnisse: „bestanden“ und „nicht bestanden“.
Stress Tests
Bei einem Stresstest werden sehr viele Zugriffe gleichzeitig simuliert um die Anwendung auf Stabilität zu prüfen. Das Verhalten des Systems wird dabei genau beobachtet um mögliche Defizite rechtzeitig zu erkennen.
Interruption- und Background-Tests
Interruption-Tests überprüfen das Verhalten einer App im Falle einer Unterbrechung, die beispielsweise bei Telefonanrufen oder Textnachrichten eintritt. Ein Background-Test prüft, was passiert wenn die Anwendung in den Hintergrund versetzt wird. Speziell geht es hier darum, herauszufinden, wie sparsam die App in jenem Fall mit verfügbaren Ressourcen (z.B. Akku) umgeht.
Kompatibilitäts-Test
Alleine das Betriebssystem Android gibt es in verschiedensten Versionen. Zudem setzen auch immer mehr auf Android. Hierzu gehören zum Beispiel: Sony, HTC oder Samsung. Diese Herstelle verbauen unterschiedliche Hardware und auch die Endgeräte unterscheiden sich in Displaygröße und Auflösung. Bei Kompatibilitäts-Tests werden diese Unterschiede speziell berücksichtigt.
Performance Test
Bei diesem Testverfahren wird das Verhalten mobiler Anwendungen unter bestimmten Bedingungen, wie beispielsweise bei geringer Akkuladung, schlechter Netzwerkverbindung oder stark belastetem Arbeitsspeicher, geprüft.
Konformitätstests
Bei einem Konformitätstest wird festgestellt, ob die Richtlinien und Anforderungen des App-Stores eingehalten werden, bevor die App offiziell über den Store vertrieben wird.
Natürlich gibt es noch einige weitere Arten von Tests, wie beispielsweise Installations- und Updatetests, Feldtests (für die Überprüfung bestimmter Hardwarekomponenten) usw. Auf diese werde ich hier aber nicht näher eingehen werde.
Wie können Apps getestet werden?
Es ist nahezu unmöglich, eine Anwendung mit allen Betriebssystemen auf allen zur Verfügung stehenden Endgeräten zu testen. Die anfallenden Anschaffungskosten wären wirtschaftlich nicht vertretbar. Eine Bereitstellung eines stabilen Deployments, welches auf allen unterschiedlichen Systemen läuft, ist dennoch unumgänglich. Auch wenn man mit Emulatoren bereits eine Vielzahl aller Endgeräte simulieren kann ist es ratsam, zumindest auf den wichtigsten Geräten direkt zu testen. Hier ist die Wahl der richtigen Geräte entscheidend. Auf diese Frage gibt die Website, Perfecto Mobile, Aufschluss. Hier lässt sich herausfinden, welche Geräte, Betriebssysteme und Bildschirmauflösung pro geographischer Region am häufigsten verbreitet sind. Die nachstehenden Grafiken zeigen die Ergebnisse für Europa (Deutschland, Italien, Großbritannien, Frankreich, Spanien, Niederlande).
Mit diesem Wissen kann schließlich gezielt auf den wichtigsten Geräten des anvisierten Marktes getestet werden.
In weiterer Folge werden die Top-Geräte von Perfecto Mobile nach „Essential“, „Enhanced“ und „Extended“ kategorisiert. Diese Einteilung (siehe auch nachstehende Grafik) dient zum besseren Verständnis für die Testabdeckung.
Testen mit Emulatoren
Anhand von Emulatoren können verschiedene Betriebssysteme und Geräte simuliert werden. Dadurch erspart man sich den Kauf des jeweiligen Gerätes. Emulatoren stehen meist kostenlos mit der jeweiligen IDE zur Verfügung.
Cloud-Testing
Im Gegensatz zum Testen per Emulator kann beim Cloud-Testing auf mehreren (realen) Geräten parallel getestet werden. Diese werden beispielsweise über ein Web-Interface bedient. Auch Absturzberichte werden hier aufgezeichnet und an den Tester übergeben. Cloud-Test-Anbieter sind meistens jedoch kostenpflichtig.
Automatisierte Tests
Neben zahlreichen Methoden zum manuellen Testen bedarf es auch einer guten Strategie zur Testautomatisierung. Hier werden typische Szenarien, die das User-Verhalten möglichst umfassend abbilden, in einem Testtool eingegeben, die dann später automatisiert abgearbeitet werden – häufig auch über Nacht. Automatisierte Tests eignen sich vorwiegend für Abläufe die sich wiederholen und werden in der Regel bereits während dem Entwicklungsprozess erstellt und ausgeführt. So kann eine hohe Qualität von Anfang an gewährleistet werden. Es gibt auch Cloud-Testing-Anbieter, welche die Implementation automatisierter Tests unterstützen. Auch das Thema Wartung darf nicht vernachlässigt werden. Änderungen im Sourcecode erfordern im Normalfall auch Anpassungen im entsprechenden Automatisierungsskript. In der Praxis wird das jedoch häufig vernachlässigt. Darum muss bei jedem fehlgeschlagenem Test überprüft werden, ob der Testplan bereits überholt ist und angepasst werden muss, oder ob tatsächlich ein Bug vorliegt.
The comments are closed.