Lässt sich Mobile Testing auf Tests im Internet der Dinge übertragen?

Seite 2: Mobile & IoT Testing

Inhaltsverzeichnis

Basierend auf den Beobachtungen (insb. für Connected Car als Beispiel sowohl für IoT als auch Mobile) möchten die Autoren die folgende Hypothese analysieren:

Der Vernetzungsaspekt unterschiedlicher Akteure, wie in Abbildung 3 dargestellt, ist sowohl im
Mobile- als auch im IoT Testing sehr ähnlich. Somit sind Testmethoden aus dem Mobile-Testing-Bereich auf IoT Testing übertragbar.

IoT Testing versus Mobile Testing (Abb.3)

In den Fachmedien sind zahlreiche Artikel über IoT erschienen, und gefühlt jeden Monat entsteht ein neues Framework beziehungsweise Protokoll. Gleichzeitig gibt es wenige bis gar keine Lösungen für typische Testprobleme wie E2E-Komplexität (End-to-End), Aufbau einer Testinfrastruktur und Testautomatisierung im Kontext von IoT. Das gilt schon für "normale" funktionale Tests, ohne dass besonderes Augenmerk auf Qualitätsmerkmale wie Effizienz (Last- und Performance-Tests), Security oder Usability gelegt wird.

Für die Analyse und den Beleg der Hypothesen ist ein gemeinsames Verständnis von Mobile Testing und IoT Testing notwendig. In beiden Bereichen lassen sich Herausforderungen identifizieren, die größtenteils vergleichbar sind. Der Markt fürs Mobile Testing verfügt bereit über einige Erfahrungen und Best Practices, die sich auf das Gebiet des IoT Testing übertragen lassen. Auf einer hohen Abstraktionsebene vergleichen die Autoren die identifizierten Herausforderungen beider Domänen und diskutieren die Anwendbarkeit erster Testmethoden aus dem Mobile Testing.

Ziel ist es, die bekannten Methoden für das Mobile Testing zu analysieren und deren Anwendung beim IoT Testing zu erwägen. Folgende Besonderheiten für das Mobile Testing lassen sich bislang identifizieren: Zahlreiche Testmethonden eignen sich besonders für Mobile Testing. Als Testmethode wird dabei eine Methode verstanden, die zur Lösung eines ausgewählten Testing-Problems dienen kann. Beispielsweise helfen diverse Methoden, gute Testfälle zu entwerfen. Hierzu zählen etwa die Äquivalenzklassen-/Grenzwertanalyse, der Entscheidungstabellentest, Use-Case Testing und Session-Based Testing (siehe ISTQB International Software Testing Qualifikation Board).

  • Mobile Experience Tests: Während beim klassischen Testen das Thema Usability-Test/UX gerade erst mehr an Bedeutung gewinnt, ist es fĂĽr Mobile Apps eine Pflicht. Der Unterschied zum klassischen Testen ist, dass die Mobile Experience durch die Nutzung von Apps auf den Mobile Devices im Kontext (beispielsweise Stadt, Berge oder Flug) zu testen ist. Konkrete Testmethoden hierfĂĽr sind A/B-Tests, Feldtests und Experten-Reviews.
  • Last- und Performance-Tests fĂĽr App-UI und Backend Clients: Im Mobile Testing sind allerlei mobile Devices, die unter verschiedenen Umweltbedingungen (schlechte Netzabdeckung, Latenz, Wetterbedingungen etc.) auf Last und Performance getestet werden. Der Test umfasst dabei immer eine Vielzahl von Clients, die unter verschiedenen Bedingungen in möglichst realer Umgebung ĂĽberprĂĽft werden. Ein Beispiel fĂĽr konkrete Testmethoden ist das API-Testing.
  • Device Group Analysis: Die Testanalyse fĂĽr Mobile Testing umfasst insbesondere die Auswahl der richtigen Kombination aus Plattform (z. B. iOS, Android in div. Versionen) und Device (z. B. iPhone 4/5/6/6S/6S Plus, Samsung Galaxy etc.). Ein Beispiel fĂĽr eine Testmethode ist die A/B/C-Analyse.
  • Simulation/Emulation: FĂĽr viele Tests im Mobile Testing kommen Emulationen typischer Geräte und Betriebssysteme zum Einsatz, um schnell und kostengĂĽnstig (ohne Hardware) Apps zu testen. Beispiel fĂĽr eine Testmethode ist Mobile Cloud Testing; unterschiedliche Anbieter stellen sowohl emulierte als auch reale Devices fĂĽr den Test bereit.
  • Mobile Testautomatisierung: Im Gegensatz zur klassischen Testautomatisierung (z. B. Web UI) liegt die Herausforderung beim Mobile Testing in der UnterstĂĽtzung einer Vielzahl von Plattformen und Devices sowie in deren unterschiedlichen UIs, inklusive Gesten und Co. Da viele Fehler erst beim Test auf dem Gerät zu identifizieren sind, gilt On-Device-Testing als eine wichtige Methode fĂĽr die Testautomatisierung.
  • Defect Analyse durch Crash Analytics: Um Testern und Entwicklern die Analyse aufgetretener Fehler zu erleichtern, wird Crash Analytics direkt auf dem Device beziehungsweise durch instrumentierte Apps verwendet.

Neben den erwähnten Beispielen gibt es weitere, die sich als Besonderheiten für Mobile Testing identifizieren lassen. Die Auswahl hier fokussiert auf die Auswahl der tatsächlich relevanten Methoden. Im nächsten Schritt wird das Mapping dieser Testmethoden von Mobile auf IoT nachvollzogen

Die erste Empfehlung an alle, die sich mit dem Testen von IoT-Systemen beschäftigen, lautet, die im vorherigen Abschnitt erwähnten Testmethoden aus dem Mobile Testing heranzuziehen und sie im IoT-Kontext zu prüfen.

  • Mobile Experience Tests: Wie bei vielen mobilen Apps ergibt sich der Mehrwert in der Nutzung von Dingen erst, wenn diese im Anwendungskontext getestet werden. Somit ist der Aufbau einer Umgebung inklusive Netzwerk in realen Bedingungen zwingend notwendig.
  • Last- und Performance-Tests fĂĽr App-UI und Backend: Viele der IoT-Netzwerke werden durch eine Web/Mobile UI angesteuert und genutzt. Wie beim klassischen Mobile Testing sind nicht nur die Performance-Tests der UI kritisch, sondern vielmehr der Dinge selbst von groĂźer Bedeutung.
Mehr Infos

Empfehlung

Last- und Performance-Tests in IoT-Netzwerken mehrstufig (die Dinge, danach Gateway/Server und dann E2E von der App bis zum Endgerät) planen und durchführen. Die Autoren konnten im Carsharing-Bereich Erfahrung mit Last- und Performance-Tests sammeln. Gerade zu den Hauptzeiten mit dem höchsten Aufkommen an Reservierungen, Buchungen und allen anderen Use Cases wäre ein Ausfall, auch nur von einer Komponente im System, fatal. Das beim Last- und Performance-Test zugrunde gelegte Mengengerüst wurde auf Basis aktueller Zahlen, dem erwarteten Wachstum und unter Berücksichtigung der Last für das folgende Jahr erstellt und der Test ab diesem Zeitpunkt mit jedem Release durchgeführt. Der Last- und Performance-Test im IoT-Umfeld stellt insofern eine Herausforderung dar, da nicht wie bei anderen Softwaresystemen "nur" Last erzeugt, sondern die E2E-Chain vom Backend mit allen Nachbarsystemen, über das Fahrzeug bis zur App und wieder zurück unter Last geprüft werden muss.

  • Device Group Analysis: Während die Defragmentierung im Mobile Testing schon komplex sein kann, ist die Welt der Dinge und Netzwerke noch deutlich verflochtener. Auch hier wird eine Analyse und Erstellung von A/B/C-Gruppen der Dinge dringend empfohlen, mindestens jedoch fĂĽr die Tests, die vor der Produktivsetzung und möglichst automatisiert stattfinden sollten.
  • Simulation/Emulation: Das Testen auf realen Endgeräten oder im Falle von IoT-Netzwerken von unterschiedlichen Dingen kann schnell aufwendig werden. Wie beim Mobile Testing lassen sich einige Dinge simulieren, und Simulationswerkzeuge "testen" komplette Netzwerke ohne reale Kommunikation.
  • Mobile Testautomatisierung: Automatisierte Tests, die sich "end to end" ĂĽber komplette IoT-Netzwerke durchfĂĽhren lassen, sind derzeit rar. Wie beim Mobile Testing ist hier die Empfehlung, einen sinnvollen Mix zwischen manuellen Tests, Simulation und On-Device Testing anzustreben. Untere Teststufen (Unit- und Integrations-Tests) mĂĽssen bei jedem Ding im Vorfeld gut abgesichert sein.
  • Defect-Analyse durch Crash Analytics: Die Analyse von Defects, deren Ursache ĂĽber mehrere Dinge verteilt sein kann, ist aufwendig. Wie beim Mobile Testing sollte jedes Gerät im IoT-Netzwerk in der Lage sein, im Debug-Modus zu arbeiten und dann möglichst viele Ereignisse zu protokollieren oder mindestens an zentrale Elemente wie Gateways oder Cloud-Server zu ĂĽbermitteln.