Das Wissensportal für IT-Professionals. Entdecke die Tiefe und Breite unseres IT-Contents in exklusiven Themenchannels und Magazinmarken.

SIGS DATACOM GmbH

Lindlaustraße 2c, 53842 Troisdorf

Tel: +49 (0)2241/2341-100

kundenservice@sigs-datacom.de

Testen Sie alles, was schiefgehen kann

Testen mobiler Anwendungen ist mit einer Vielfalt von Testobjekten konfrontiert. Zudem müssen sich die Tester mit vielfältigen und überraschenden Umgebungen auseinandersetzen. Beispielsweise gibt es viele ganz unterschiedliche Smartphones. Und deren Anbieter fügen ihren Geräten auch noch ständig neue Funktionen hinzu. Dies und ständige Updates erhöhen die Vielfalt, da man sowohl das neue als auch noch das alte Gerät unterstützen muss.
Author Image
Rex Black

Author


  • 18.07.2019
  • Lesezeit: 9 Minuten
  • 76 Views

Einsteiger beim mobilen Testen machen gelegentlich den Fehler, Smartphones als kleine PCs anzusehen. Aber die Vielfältigkeit der mobilen Umgebungen und deren Auswirkung aufs Testen sind wesentlich komplexer als bei PCs oder Laptops.

Tester versuchen oft, eine Kopie der Produktionsumgebung als Testumgebung zu verwenden. Das ist selbst bei homogenen Umgebungen schwierig. Bei der Vielfalt mobiler Umgebungen ist das meist unmöglich, sei es aus Kostengründen oder weil man einfach nicht weiß, was die Anwender machen werden. Also werden wir in diesem Artikel einiges ansprechen, an das Sie bei Ihren Testumgebungen denken sollten.

Konnektivität und Speicher

Die meisten mobilen Apps brauchen eine Datenverbindung, um zu funktionieren. Insofern ist die Datenverbindung ein Schlüsselelement in Ihrer Testumgebung, und das betrifft die Telefonverbindung ebenso wie WiFi. Aber man darf diese nicht getrennt betrachten. Telefonnetze entwickeln sich technologisch weiter und Mobiltelefone unterstützen üblicherweise alte und neue Technologien. Die Verbindung meines Smartphones ändert sich, wenn ich mich bewege, bezüglich Signalqualität und Übertragungstyp, und man kann während einer Übertragung zu einer anderen Funkstation wechseln.

Bei WiFi ist es ähnlich. Man kann es mit unterschiedlichen Standards und Signalqualitäten zu tun bekommen und man kann den Zugangspunkt während eines Datentransfers wechseln. Dies ist oft an öffentlichen Orten, wie Einkaufzentren, Flugplätzen und Hotels, zu beobachten.

Um die Sache noch komplizierter zu machen, kann es zusätzliche Kommunikationsverbindungen geben, wie NFC, Bluetooth, USB, HDMI, Infrarot und andere mehr. Hinzu kommen firmenspezifische (proprietäre) Verbindungen wie beispielsweise zwischen LG-Telefonen und -Fernsehgeräten.

Nächste Frage: Wie zuverlässig ist die jeweilige Verbindung? Was passiert, wenn sie zusammenbricht und dann neu aufgebaut wird? Was passiert bei heftig schwankenden Bandbreiten, sei es wegen eigener Bewegung oder dem Verhalten anderer Nutzer? Wie interagieren solche Ereignisse mit Installationen, Updates und Datenübertragung?

Zum Beispiel hatte die mitgelieferte Podcast-App eines meiner Telefone einen irritierenden Bug. Um einen Podcast offline hören zu können, muss die App die Episoden herunterladen und speichern und nicht nur streamen; ein solcher Download kann dauern. Der Fehler war, dass die App bei Netzwerkstörungen nach einem Gutteil eines Downloads einen Fehler meldete, das bisher Geladene löschte und sofort von ganz vorne anfing. Das Ganze war richtig frustrierend.

So etwas ist aber genau das, was Sie testen müssen. Verwenden Sie die Äquivalenzklassenbildung, um verschiedene Ereignisse zu identifizieren, die zu einer Unterbrechung führen können, sowie eine Grenzwertanalyse, um die akzeptablen Mindestladegeschwindigkeiten zu ermitteln, und stellen Sie sicher, dass Sie diese Fälle abdecken.

Ein weiterer wichtiger Aspekt sind Arbeitsspeicher und Speichermedien, deren Komplexität der der Konnektivität ähnelt. Neben dem Arbeitsspeicher (RAM) haben Sie unterschiedliche Dateispeicher, eingebaute nichtflüchtige Speicher, SD-Karten und auch externe Speicher wie mit einem Android-Smartphone verbundene USB-Laufwerke. Für diese verschiedenen Arten müssen Sie ebenfalls die Äquivalenzklassenbildung und auch die Grenzwertanalyse verwenden.

Genau wie die Verbindungen sind auch Kurzund Langzeitspeicher gemeinsame Ressourcen. Sie müssen sich nicht nur um die Speichernutzung Ihrer App kümmern, sondern auch um deren Interaktion mit anderen Apps. So können Apps auf einem Mobiltelefon nicht nur Rechenzeit- und Durchsatzfresser sein, sondern auch Speicherfresser.

Ein speicherspezifisches Problem sind Speicherlöcher (memory leaks). In vielen Programmiersprachen und Laufzeitsystemen unterscheidet man Stack und Heap bei dem Programmen zur Verfügung stehenden Arbeitsspeicher. Sie dürfen sich den Stack als einen Spielkartenstapel vorstellen, bei dem man Karten nur oben ablegen oder wegnehmen kann. Beim Heap stelle man sich wasserdichte Schachteln verschiedener Größe vor, die vorrätig gehalten werden. Mit einem Seil kann man sich eine solche Box holen, wenn man sie anschauen, aus dem Vorrat entfernen oder zurückgeben will. Für die Gesamtgröße der Boxen gibt es eine Obergrenze. Ein Speicherverlust oder -loch entsteht nun, wenn jemand das Seil loslässt, bevor er die Box in den Vorrat zurücktut. Die Box ist für alle anderen und für einen selbst verloren.

Was kann man bezüglich Speicherlöchern tun? Ein wichtiges Werkzeug sind Zuverlässigkeitstests. Aber statische Codeanalyse und -reviews sind ebenso wichtig, denn Zuverlässigkeitstests sind eher Schüsse ins Blaue, und Versagen durch Speicherlöcher kann nur selten reproduziert werden.

Sachen passieren, also testen Sie darauf

Wie ich schon sagte, existieren Apps für Mobiltelefone in einer dynamisch sich ändernden Umgebung, was bedeutet, dass auch Unerwartetes passiert. Dies schließt störende Ereignisse und Unterbrechungen ein, die Ihre App beeinflussen können. Wenn Sie also Ihre Testumgebung entwerfen oder implementieren, achten Sie darauf, solche Arten von Ereignissen so realistisch wie möglich zu simulieren.

Sie müssen Situationen mit kommenden und gehenden Verbindungen oder solche mit schwankenden Eigenschaften testen. Sie müssen Engpässe simulieren, die auch in guten Netzwerken vorkommen und zu grottenschlechten Bandbreiten führen können.

Kabel können unterbrochen werden. Was passiert bei Serverproblemen, die dazu führen, dass Ihre App unsinnige, unvollständige oder gar keine Daten erhält? Ihre App läuft oder macht sogar gerade ein Update und die Verbindung stirbt. Was dann? Und eine solche Unterbrechung kann alles treffen: eine SMS, Botschaften von Twitter, Facebook usw.

Was passiert bei schwacher oder leerer Batterie? Wie reagiert Ihre App auf Stromspar-Modi? Überhitzungen können das Geräteverhalten ändern. Wie reagiert Ihre App darauf? Dies ist eine grundlegende Frage, wenn Ihre App im Freien verwendet wird. Was passiert, wenn ein verbundenes Gerät versagt? Beeinträchtigt das Ihre App?

Dies ist eine unvollständige Liste, die Sie zum Nachdenken anregen soll. Denken Sie an alles, was schiefgehen kann, und klären Sie, was dann mit Ihrer App passiert. Wenn Sie nicht daran denken, wird Ihr Kunde dieser Situation ausgesetzt, und das mag unerfreulich sein. Und er wird Rezensionen schreiben, die konstatieren, dass Ihre App mit der realen Welt nicht klarkommt.

Gerätefähigkeiten und -eigenschaften

Zusätzlich zur Umgebung müssen Sie auch das betreffende Gerät selbst betrachten. Falls Ihre App eine Kamera nutzt, um QR-Codes zu lesen, müssen Sie sich mit den unterschiedlichen Kameras, deren Auflösung und Einstellungen befassen.

Sie sollten die Größe des Monitors und seine Helligkeit betrachten. Mein Android-Telefon kann die Bildhelligkeit nicht richtig verstellen. Häufig macht es anstelle einer gewollten geringen Reduzierung einfach viel zu dunkel. Nutzt Ihre Anwendung GPS, Beschleunigungssensoren, Kreisel oder Magnetfeldmessung? Wenn Sie Herzfrequenzmessung nutzen, klären Sie, wie diese funktionieren – und wann nicht.

Und zumindest nutzen Sie Äquivalenzklassenbildung. Das beginnt damit, alle verschiedenen Optionen zu identifizieren, die für diese verschiedenen Faktoren gelten können, und diese mindestens einmal abzudecken. Wenn Sie glauben, dass diese Funktionen oder bestimmte Interaktionen mit ihnen ein hohes Risiko darstellen, können Sie paarweise kombinatorische Techniken verwenden, um Kombinationspaare zu betrachten.

Beim paarweisen Testen werden nun Funktionen getestet, die nicht miteinander interagieren sollen, um unbeabsichtigte Interaktionen zu finden. Haben Sie Funktionen, welche miteinander interagieren sollen, müssen Sie die korrekte Interaktion testen, und dann ist dies das Feld von Entscheidungstabellen und Wertebereichsanalysen.

Die Entscheidungstabellen werden vom ISTQB Certified Tester - Foundation Level abgedeckt. Die Wertebereichsanalyse wird im Advanced Level - Test Analyst behandelt. Die Wertebereichsanalyse ist eine sehr leistungsfähige Technik für bestimmte Arten von Situationen, in denen ein oder vielleicht zwei Faktoren die Art und Weise verändern, wie Faktoren interagieren (siehe http://www.pairwise.org).

Datenverarbeitung und Protokolle

Teil des Aufbaus Ihrer Testumgebungen ist das Design und die Implementierung der Testdaten und Testdatenprotokolle. Das mobile Gerät selbst ist eine Datenquelle; beispielsweise Nutzereingaben durch Tippen oder Gesten. Es kann aber auch selbsttätig Daten wie GPS-Informationen usw. erzeugen. Daten können von einem Server heruntergeladen werden. Da viele dieser Situationen den Datenfluss zum und vom Gerät betreffen, kann dies zu zusätzlichen Sicherheitsproblemen führen.

Sie müssen die verschiedenen Datenarten berücksichtigen, die gesendet, empfangen und lokal oder remote gespeichert werden können. Die Bildung von Äquivalenzklassen dieser Daten und der Art und Weise, wie die Daten gesendet, empfangen und gespeichert werden, ist hierzu ein guter Ansatz.

Sie müssen auch die Zuverlässigkeit testen, ebenso wie die Zugriffssicherheit und die Interoperabilität. Bei den funktionalen und nicht-funktionalen Tests auf unerwünschte Seiteneffekte auf Daten müssen Sie sicherstellen, dass Sie sowohl die Client- als auch die Serverseite prüfen.

Betrachten Sie auch die verschiedenen verwendeten Protokolle. Testen Sie alle Arten von Mobilfunknetzen? Sie sollten die Äquivalenzklassenbildung verwenden, um sicherzustellen, dass Sie alle Protokolle abgedeckt haben. Wenn Sie Simulatoren verwenden, stellen Sie sicher, dass diese ebenfalls die Protokolle angemessen abdecken.

Was kostet ein Kubikmeter an Geräten?

Als ich in Moskau in einer speziellen Beratungssitzung zum Thema Mobile Testing mit einer kleinen Gruppe von Technikern, CIOs, IT-lern, Entwicklern und Testern sprach, sagte einer: „Um gut zu testen, benötigen wir für unser Testlabor einen Kubikmeter an Geräten.“ In dieser scherzhaften Bemerkung liegt ein Kern Wahrheit.

Ein Kubikmeter ist eine große Kiste. Sie wollen wahrscheinlich nicht so viele Geräte kaufen, vor allem weil Sie diese dann auch warten müssten. Jedoch was ist, wenn es genau das ist, was Sie für den Test benötigen?

Statt nun all diese Geräte zu besitzen, können Sie auch einige davon mieten, leihen oder virtualisieren? Es gibt auch offene Gerätelabors. Sie können Crowd-Sourcing nutzen, Testlabors und Virtualisierung.

Von der Art der zu testenden App kann abhängen, welche konkreten Geräteabdeckungen angemessen sind. Einer meiner Kunden erzählte mir, dass sie auf die eine oder andere Art auf 100 Prozent der echten Geräte testen, einschließlich Cloud basierten Geräten. Sie testen Spiele und könnten in Simulatoren kein gutes Feedback über die Arbeitsweise des Spiels bekommen. Ein anderer Kunde hingegen sagte, dass sie stets Simulatoren einsetzen. Seine App ist eine Standard-Geschäftsanwendung, die lediglich Eingaben von der Tastatur verarbeitet und Daten ausgibt.

Die Art der zu testenden App bestimmt also, welche Geräteabdeckung angemessen ist.

. . .

Author Image

Rex Black

Author
Zu Inhalten
ist Präsident von RBCS (Rex Black Consulting Services) und Experte im Bereich Software, Hardware und Testing. Seit 1994 bietet RBCS Beratung und Training für weltweit Hunderte von Kunden. Rex Black war Präsident des ISTQB und ASTQB und ist im ISTBQ immer noch aktiv. Er leitet die Arbeitsgruppe Agile, ist Hauptautor des Advanced Test Manager Syllabus und arbeitet in mehreren Lehrplanteams mit.

Artikel teilen