Lässt sich Mobile Testing auf Tests im Internet der Dinge übertragen?
Beim Internet der Dinge wachsen physische und digitale Welt zunehmend zusammen. Vielfach werden Gegenstände des alltäglichen Lebens mit dem Internet vernetzt, sei es dauerhaft oder zeitweise. Diese Entwicklung wirkt sich speziell auf den Softwaresektor aus, und dieser ist gefragt, angemessen zu reagieren.
Alle, die sich mit dem Thema Qualitätssicherung beschäftigen, stehen vor den folgenden Fragen:
- Was bedeutet IoT (Internet of Things) für das Testen?
- Wie kann IoT-Testing aussehen?
- Welche Use Cases sind zu berücksichtigen?
- Welche Anforderungen werden Markt und Branche stellen?
Es lässt sich zwar manches aus der bekannten Testwelt übertragen, doch die Autoren sind der Meinung, dass IoT-Testing kein "alter Wein in neuen Schläuchen" ist. Der Artikel diskutiert deswegen die Gemeinsamkeiten zwischen den Domänen IoT und Mobile und stellt geeignete Testmethoden vor. Damit spricht er Tester und Entwickler gleichermaßen an, die gemeinsam an IoT-Anwendungen arbeiten (wollen).
Stand der "Dinge"
Zentrale Definitionen und Zusammenhänge zum Thema IoT erklärt die folgende Abbildung:
Eine Erwartung besagt, dass sich das Internet der Dinge ähnlich schnell verbreiten wird wie das Internet. Laut Deloitte waren 60 Prozent der verkauften IoT-Devices im Jahr 2015 für die Unternehmensnutzung bestimmt. Somit sind Unternehmen hier die Vorreiter. Während sich derzeit der Großteil der Bevölkerung noch fragt, warum sie all diese Geräte mit dem Internet verbinden sollen, werden sie sich zukünftig fragen: Warum waren diese Gegenstände nicht schon immer mit dem Internet verbunden?
Die Voraussagen für den Verbrauchermarkt zeigen ein hohes Wachstumspotenzial. Eine Studie von IDC (Quelle: Forecast: A Virtuous Circle of Proven Value and Demand [1], IDC, 2014) geht davon aus, dass die Zahl der verkauften Wearables bis 2019 auf 214 Millionen jährlich anwächst (2015: 80 Mio.). Eine ähnliche Entwicklung wird auch für das Smarthome erwartet. Das Marktvolumen der Hausautomatisierung soll bis 2020 auf 2,5 Milliarden Euro anwachsen. Derzeit werden circa 700 Millionen Euro in Deutschland ausgegeben. Die Anzahl der smarten Haushalte in Deutschland soll 2020 rund 2,4 Millionen betragen.
Bei den vernetzten Dingen selbst gehen die Zahlen ebenfalls deutlich nach oben. Bis 2020, so die Erwartung, wird die Hälfte der Geräte in privaten Haushalten vernetzt sein. Insgesamt könnten weltweit 50 Milliarden vernetzte Geräte in allen Bereichen in Betrieb sein. Ein typischer Haushalt wird im Jahr 2022 bis zu 50 IoT-Geräte benutzen.
Connected Car: Internet im Auto
Der Schwerpunkt der von den Autoren im letzten Jahr herausgegebenen Marktstudie "How will the Internet of Things challenge (Software) Testing" bildete das Thema "Connected Car". Es hat für das Autoland Deutschland eine hohe Bedeutung und hält ein Mosaik an Aspekten bereit – etwa Elektrofahrzeuge, autonomes Fahren, "Geister"-Taxis von Fahrdienstanbietern und Carsharing-Modelle.
In Westeuropa wurden 2015 13,2 Millionen Neuwagen zugelassen (Deutschland 3,2 Mio.). Wenn man bedenkt, dass ab 2018 jedes Neufahrzeug mit dem sogenannten eCall (emergency call) ausgestattet sein muss, lässt sich leicht erahnen, welche Möglichkeiten und Herausforderungen sich für die Konnektivität allein im Automotive-Bereich ergeben. Bis 2020 soll ein Fünftel der Fahrzeuge (ca. 250 Mio.) vernetzt sein [2].
Durch die Techniken der Konnektivität kommunizieren die Fahrzeuge mit dem Internet, dem Fahrer und der Umgebung. Die Internetverbindung wird durch eine SIM-Karte gewährleistet, die auf verschiedene Weise im Fahrzeug verbaut sein kann (embedded, tethered oder integrated). So eröffnen sich mehrere Möglichkeiten in den Bereichen Fernsteuerung, Info-/Entertainment sowie Fahrzeug- und Mobilitätsmanagement. Darüber hinaus kann das Fahrzeug Informationen mit anderen IoT-Elementen austauschen, etwa mit der Infrastruktur (Verkehrsmeldungen), mit anderen Fahrzeugen oder mit Dingen im Haus und im Büro. Auch autonomes Fahren ist stark von IoT-Elementen abhängig, sei es durch genaues Kartenmaterial und GPS, sei es durch ausgereifte Mensch-Maschine-Schnittstellen, um nur einige zu nennen. Diese Neuentwicklungen wollen im Vorfeld bestmöglich getestet werden. Abbildung 2 fasst die zu erwartenden Entwicklungen im Bereich Qualitätssicherung für Connected Cars zusammen.
Mobile & IoT Testing
Vernetzung bei Mobile und IoT ähnlich
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.
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.
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
Mapping der Testmethoden
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.
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.
Fazit
Weitere Empfehlungen zum Vorgehen
Neben den erwähnten Mobile-Testmethoden gibt es weitere Praktiken aus dem Testbereich, die für IoT ebenfalls gelten (s. Abb. 4):
- Komplexitätsreduktion durch strukturiertes Testdesign
- Effektivität der Tests durch manuelle, explorative Tests in produktionsähnlichen Umgebungen prüfen
- frühzeitiges Crowd-Testing komplexer Netzwerke
- End-to-End-Tests
- Use Case Tests & Usability Testing ("Customer Journey")
Fazit
Auch wenn permanent neue Techniken für IoT vorgestellt werden, fehlt es an Ansätzen und Erfahrungen für das Testen solcher Systeme. In diesem Artikel wurde geprüft, welche bekannten Methoden aus dem Mobile Testing übertragbar sind. Die Übertragung ist sicherlich nicht vollständig und bedarf weiterer Diskussion.
Die Autoren glauben, dass der Trend zunehmend in Richtung anwendernaher Tests gehen wird. Nur eine sinnvolle Kombination aus explorativen Tests in der realen Umgebung (z. B. durch Beta-Tester im Crowd-Testing-Modell) und flexiber Automatisierungsstrategie (bspw. hybride Ansätze zwischen Simulation und Testen auf realen Dingen) kann die Komplexität der "neuen Welt" bewältigen.
Michael Mlynarski
ist Informatiker und passionierter Tester mit über 10 Jahren Erfahrung im Software Engineering insbesondere im Testmanagement und Testautomatisierung in agilen Projekten.
Bastian Baumgartner
ist Tester, Testanalyst und Testmanager mit langjähriger Erfahrung im IoT- und Mobile-Testing-Umfeld.
(ane [3])
URL dieses Artikels:
https://www.heise.de/-3674697
Links in diesem Artikel:
[1] https://www.business.att.com/content/article/IoT-worldwide_regional_2014-2020-forecast.pdf
[2] https://www.heise.de/news/Prognose-250-Millionen-vernetzte-Autos-zum-Jahr-2020-2528445.html
[3] mailto:ane@heise.de
Copyright © 2017 Heise Medien