Testen mobiler Anwendungen ein Kinderspiel oder doch nicht?

Mobile Anwendungen (Apps) gibt es seit dem Bestehen von Mobiltelefonen. Mit der Entwicklung von Smartphones und der Möglichkeit von Internetverbindungen hat sich der Markt mobiler Apps rasant entwickelt. Natürlich ist es auf dem Sektor mobiler Anwendungen auch unerlässlich, diese zu testen. Dass die Testaufwände nicht geringer als jene auf dem Desktop-Sektor sind, soll hier erläutert werden.

Grundsätzlich hängen nötige Testarbeiten von mobilen Anwendungen von deren Leistungsumfang ab. Was ist aber unterschiedlich beim Test von mobilen Anwendungen? Der erste markante Unterschied beim Einsatz von Apps ist, dass diese auf einer riesigen Anzahl verschiedenster Geräte lauffähig sein sollen. Am Sektor von Handys (und Tablets) ist die Standardisierung von Hardware und Treibern noch nicht so weit fortgeschritten wie im PC-Sektor. Auf verschiedensten Geräten werden unterschiedliche Versionen von Betriebssystemen und deren Kernels verwendet. Die einzige Chance hier eine große Bandbreite an Geräten abzudecken ist, Geräte-Emulatoren zu verwenden (z.B. Andy, Bluestacks, Genymotion). Allerdings gibt es auch Grenzen, die die Verwendung von Emulatoren aufzeigen. Beispielsweise kann hier ein Anstecken und Abstecken von externen Geräten nicht ohne weiters getestet werden, was aber durchaus Auswirkungen auf die Stabilität von Apps haben kann. Ein weiterer wichtiger Aspekt beim Test von Apps ist die Netzwerk-Latenz. Handys wechseln permanent ihren Standort, wodurch ein ständiger Wechsel von verfügbarer Bandbreite und Verbindungsqualität besteht. Dabei gibt es natürlich auch Unterschiede zwischen verschiedenen Mobilfunkbetreibern. Einfluss hat beispielsweise die Ausbaustufe des Netzes. Hier ist möglichst hohe Robustheit von Apps in Bezug auf Bandbreite und anderen Kriterien erforderlich.

 

Es gibt mehrere Arten von mobilen Apps:

  • Native Apps

  • Web Apps

  • Hybrid Apps

  • Cross-Plattform-Apps

 

Der Test nativer Anwendungen ist betriebssystemabhängig, daher ist er, ähnlich zum Test von Desktop-Anwendungen, eingeschränkt auf bestimmte Versionen der Laufzeitumgebung des Programms. Bei Web-Anwendungen gilt es, wie im PC-Sektor, die Tests auf verschiedensten Plattformen durchzuführen. Hier gibt es eine ganze Reihe möglicher Browser und Betriebssysteme, die in vernünftigem Maß abzudecken sind. Hybride Anwendungen sind aufwändiger in der Testarbeit, weil diese einerseits Hard- und Softwarekomponenten des Gerätes nutzen, andererseits meist Web-basiert sind und daher ähnliche Testaufwendungen wie Web-Apps erfordern. Cross-Plattform-Apps vereinen die Vorteile native GUI-Elemente der Geräte und plattformübergreifenden Code für die restlichen Anwendungsschichten. Der Testaufwand hier ist auch nicht gering, weil die Komplexität von Geräten und Betriebssystemen besteht.

 

Ein nicht unbeträchtlicher Teil der Testaufwände ist in der unterschiedlichen Hardware begründet. Das beginnt damit, dass es eine Vielzahl verschiedener Bildschirm-Auflösungen gibt. Die Challenge, für möglichst viele verschiedene Bildschirme eine zufriedenstellende Darstellung zu erzeugen, erfordert auch dementsprechende Tests. Die Verwendung und der Austausch von Daten über die verschiedenen Schnittstellen wie Bluetooth, GPS, WLAN, etc. resultiert auch in einem hohen Maß von Testaufwänden, weil die zuverlässigsten Testergebnisse mit "echter" Hardware zu erzielen ist. Emulatoren sind natürlich auch nur Programme, die das Verhalten von Geräten simulieren. Sie können daher auch Fehler aufweisen, wodurch ein Test fälschlicherweise positiv oder negativ verlaufen könnte.

 

Testarten

Erwähnenswert für die erhöhte Komplexität von Tests bei Apps sind auch die Testarten. Es reicht nicht aus, nur funktionale Tests durchzuführen. Performance-Tests oder Stresstests sind ein wesentlicher Punkt bei Handys, weil die Leistungsfähigkeit von Handy-Prozessoren stark variiert. Sogenannte "Interrupt Tests" sind ebenso unerlässlich. Damit gemeint ist beispielsweise der Einfluss von eingehenden Anrufen, SMS, Nachrichten, aber auch das Anstecken oder Trennen von Ladegeräten oder externen Geräten. Wer hat schon eine Freude damit, wenn eine App wegen einer Nachricht abstürzt? Mobile Geräte sind Plug&Play kompatibel, d.h. externe Gerätetreiber werden zur Laufzeit geladen. Das benötigt Betriebssystemressourcen, wodurch andere Anwendungen beeinflusst werden können. Schließlich ist noch der Faktor des "Security-Testing" zu erwähnen. Mobile Geräte im Internet sind sicherheitskritisch, weil die Verwendung eines Netzwerkes immer die Möglichkeit bietet, dass Autorisierungs- und Authentifizierungsvorgänge gehackt werden können. Hier ist im Falle sicherheitskritischer Anwendungen besonderer Testaufwand nötig.

 

Fazit

Wie man hier in den kurzen Auflistungen sehen kann, ist das Testen von mobilen Anwendungen keineswegs eine leichte Aufgabe. Eine überaus vielfältige Gerätelandschaft, verschiedenste Betriebssysteme und Plug&Play-Aspekte, aber auch Sicherheitsaspekte spielen eine große Rolle. Nicht vergessen werden darf darüber hinaus aber auch nicht, dass mobile Apps zumeist Low-Cost oder Freeware sind. D.h. dass die Hemmschwelle, eine Software für Handys auf Grund der geringen Kosten zu kaufen, niedrig ist. Das bedeutet aber für die Testaufwände nicht unbedingt, dass diese gering gehalten werden sollen. Denn wie schnell ist eine gratis-App wieder gelöscht und hat negative Bewertungen?

DI Reinhard Wallner
Erstellt: 2016-11-28
von: DI  Reinhard Wallner
Stichworte: 

Softwaretest, Interrupt-Tests, Performance-Tests