Internet of Things verändert alles – auch das Testen
Das Internet of Things (IoT) hat sich zu einem Thema mit einer sehr hohen Präsenz entwickelt. In der letzten Zeit ist viel darüber geschrieben und gesprochen worden was aktuell schon "Smart" ist und was in Zukunft noch "Smart" wird. Auch auf Tagungen und Fachkonferenzen hat das "Internet of Things" einen hohen Stellenwert eingenommen. Dabei ist zum einen zu beobachten, das sowohl über Einsatzfelder berichtet wird, die den Alltag der Menschen betreffen, aber eben auch über Dinge aus dem industriellen Sektor.
Dem Internet of Things wird eine starke Position zugesprochen, wenn es darum geht, in Zukunft Arbeitsabläufe, Produkte oder gesellschaftliche Strukturen zu verändern. Smart Home, Smart Cities, Smart Metering oder die allseits bekannte und gern zitierte "Industrie 4.0" sind die Schlagworte, die dabei immer wieder zu hören sind. Sie stellen für viele die Werttreiber dar, mit der eine starke Veränderung der gegenwärtigen Prozesse einhergehen soll. Betrachtet man die Entwicklung aus einem digitalen historischen Kontext heraus, so ist es schon beeindruckend, welche Durchsetzungskraft dem Thema IoT zugesprochen wird. Im Grunde soll sich nicht weniger als "Alles" mit und durch das Internet of Things verändern.
Die drei Säulen des Internet of Things
Viele Faktoren sind zu beachten, wenn man das Thema Internet of Things näher betrachtet. Häufig wird IoT als Zusammenspiel von Software und Hardware beschrieben. Gerade was die Hardware angeht wird diese oft als Herausforderung und als "das Neue" bezeichnet. Die aktuellen Marktthemen um SMACS (Social, Mobile, Analytics, Cloud und Security) werden durch das Internet of Things um die spannende Komponente "Hardware" ergänzt. Weil es eben nicht mehr nur um Software und Apps geht, sondern eben auch um eine Vielzahl von Sensoren, die die verschiedensten Dinge über unterschiedliche Protokolle und Connections mit dem Internet verbinden sollen.
Bei einer genaueren Betrachtung ist das Thema Internet of Things wesentlich vielfältiger und komplexer als es eine schlichte Aufteilung in Software und Hardware auf den ersten Blick aufzeigt. Dass Sensoren Daten aus beliebigen Umgebungen und von beliebigen Geräten erfassen oder auslesen und diese in eine Cloud an eine IoT-Plattform übermitteln, ist im wesentlichen nur der erste Schritt und die technische Basis für das Internet of Things. Auf diese Weise werden die verschiedensten Geräte mit dem Internet verbunden und senden Daten in die Cloud, aber es ist lediglich eine erste Säule, die das Gesamtkonstrukt Internet of Things stützt. Nur mit diesem technischen Fundament und dem Erfassen von Daten wird noch keine relevante Veränderung von Prozessen und Services generiert.
Daten sollten nicht erfasst und ausgewertet werden, weil es technisch möglich und zeitgemäß ist.
Eine zweite Säule beschreibt, was mit diesen Daten erfolgen muss und was sich mit ihnen unternehmen lässt. Wir müssen uns mit dem Thema Internet of Things immer die Frage stellen, was wir mit all diesen erfassten Daten tun und wozu sie verwendet werden können. Auch eine künstliche Intelligenz wird ohne konkreten Ansatz aus einer großen Datenmenge keinen nachhaltigen Mehrwert generieren können. Aus diesem Grund ist neben dem Erfassen und Speichern der Daten die Verarbeitung, Quantifizierung und Modellierung der erfassten Daten in einer IoT-Plattform ein zweiter wesentlicher Faktor. Die generierten Daten müssen aufbereitet, optimiert und den Geschäfts- und Industrieprozessen der Unternehmen bereitgestellt werden.
Neben diesen beiden Säulen ist eine dritte Säule die User Experience.Wenn IoT in Zukunft Prozesse, Arbeitsweisen und Services verändern soll, dann müssen wir uns auch fragen, welche Auswirkungen es auf die User Experience haben wird. Ich halte es deshalb für äußerst relevant, dass Daten nicht nur erfasst und ausgewertet werden, weil es technisch möglich und zeitgemäß ist, sondern immer aus dem Hintergrund heraus, die User Experience zu verbessern und dem Anwender den bestmöglichen Service und Prozess zu ermöglichen. Die Optimierung bestehender Use Cases und die optimale User Experience sollten vorrangige Ziele sein.
Auswirkung auf bestehende Use Cases
Wenn das Internet of Things die Prozesse und Arbeitsabläufe derart verändert, dann müssen wir auch im Detail betrachten, welche Auswirkungen IoT auf einzelne Use Cases haben wird. In unserer täglichen Arbeit bei Devoteam haben wir in den vergangenen Monaten vielfältige Projekte und Use Cases bearbeitet und wir konnten dabei interessante Entwicklungen beobachten. Unsere Erkenntnisse lassen sich gut anhand eines alltäglichen Nutzerszenarios als Anwendungsbeispiel verdeutlichen.
Das Beispiel beschreibt einen Anwendungsfall, den wir als konvergent bezeichnen. Konvergent bedeutet in diesem Fall, dass verschiedene Endgeräte und Plattformen Bestandteil des Use Case sind. Vorstellbar ist eine Situation aus dem Smart Home-Umfeld, bei der vom Anwender ein Musik-Streaming-Dienst per Spracheingabe an einem Smart TV gestartet wird und die Wiedergabe in seinem Wohnzimmer stattfindet. Es handelt sich also um eine Alltagssituation, wie sie heutzutage denkbar und gängig ist. Für diesen ersten Teil der Situation ist eine Internetverbindung, ein Smart TV und der Anwender relevant. So wie es bis dahin geschrieben ist, handelt es sich aber lediglich um eine Beziehung zwischen einem Anwender und einem Gerät und einer Verbindung. Das Smart TV ist über ein lokales Wi-Fi mit dem Internet verbunden und streamt Musik, die der Anwender ausgewählt hat. Der Anwendungsfall wird erst dann konvergent, wenn der Anwender beispielsweise seine Wohnung verlässt und die Wiedergabe der Musik auf einem mobilen Endgerät (Smartphone) nahtlos und ohne Unterbrechnung fortgesetzt wird. Das Streaming der Musik findet nicht mehr über das lokale Wi-Fi sondern über eine Mobilfunkverbindung (LTE oder 3G) statt.
In einem weiteren Schritt könnte der Anwendungsfall dahingehend fortgesetzt werden, dass der Nutzer in eine neuen Umgebung kommt (zum Beispiel an seinen Arbeitsplatz) und dass sich sein Smartphone dort mit einem zweiten lokalen Wi-Fi verbindet. Die Wiedergabe der Musik wird allerdings weiterhin nahtlos fortgesetzt. Ebenso wäre die Fortsetzung auf einem weiteren Gerät (Firmen-Notebook) via Desktop-Applikation denkbar.
Es handelt sich also um eine Situation, bei der vom Anwender eine Applikation auf verschiedenen Geräten, auf verschiedenen Plattformen und mit verschiedenen Internetverbindungen genutzt wird. Wenn wir ehrlich sind und unseren Alltag betrachten, dann ist eine solche Situation keine Seltenheit. Jeder wird in seinem täglichen Ablauf verschiedene Situationen finden, bei denen er einen Vorgang oder eine Tätigkeit auf einem Gerät startet und auf einem anderen Gerät weiterführt oder abschließt. Darüber hinaus sind diese Abläufe eben häufig verbindungs- und ortsunabhängig.
Diese Vorgänge finden sich nicht nur im privaten, sondern durchaus auch im Arbeitsumfeld. Natürlich lässt sich dies auch ganz einfach davon ableiten, dass wir heutzutage keine 1:1-Situation zwischen Mensch und Computer mehr antreffen, sondern dass jeder von uns mehrere Geräte im täglichen Einsatz hat. Wir sprechen also häufig über ein Nutzungsszenario über mehrere Plattform und Applikationen, die zunehmend geräteübergreifend entwickelt werden müssen. Durch diese Form der konvergenten Mediennutzung haben sich Use Cases stark verändert und werden sich noch weiter verändern.
Next Level: IoT
Dieser aktuelle Status ist aber lediglich ein Zwischenstand, denn diese Anwendungsfälle werden sich durch das Internet of Things noch weiter verändern. In Bezug auf den im Verlauf beschriebenen Use Case bedeutet dies, dass ein Handlungsstrang, der heute lediglich Smartphone, Smart TV oder Notebook beinhaltet, in Zukunft eben noch weitere Endgeräte beinhalten wird. Glaubt man den meisten Marktforschungsunternehmen, so wird in Zukunft eine Vielzahl an Geräten mit dem Internet verbunden sein. Wir müssen also in Zukunft davon ausgehen, dass ein konvergenter Anwendungsfall bald eben auch Autos, Maschinen oder sogar Kühlschränke beinhalten wird. Verdeutlichen kann man dies natürlich auch an dem oben genannten Beispiel aus dem Segment Musikstreaming.
Bei dem beschriebenen Anwendungsfall müssen wir nur an neue Produkte von Amazon, Google und – wie auf der letzten WWDC verkündet – auch von Apple denken, um zu erkennen, in welche Richtung sich diese Use Cases noch weiter verändern werden. Spielen heute Smart Home, Smartphone, Tablet und PC eine Rolle, so werden in Zukunft Siri, Alexa und Google mit Sicherheit ein Wörtchen mitsprechen.
Konvergentes Testen
Die Nutzung über mehrere Plattformen und Endgeräte wird für den Anwender zur Normalität und gerade die jüngere Generation wächst vollkommen selbstverständlich damit auf, mehrere Devices zu nutzen. Spannend wird es, wenn wir konvergente Use Cases aus einer anderen Perspektive betrachten und zwar aus der Sicht des Software- und Application-Testers. Getestet werden häufig die einzelnen Applikationen als einzelne Plattform und auf den verschiedenen Endgeräten. Jeder, der sich mit Software-Testing und gerade mit dem Testen von Mobile Apps auseinandersetzt, weiß, dass die Vielzahl der Endgeräte und Betriebssystemversionen das Testen oftmals zu einer Herausforderung werden lassen.
Wenn wir von konvergenten Use Cases ausgehen, die sich über mehrere Plattformen und über mehrere Systeme erstrecken, müssen wir in der Regel eben auch davon ausgehen, dass wir es mit verschiedenen Sprachen zu tun haben und die einzelnen Applikationen eben auch getrennt testen müssen. So wäre es zum Beispiel denkbar, dass eine Mobile App, eine Website und gegebenenfalls eine Desktop-Applikation getrennt voneinander getestet werden, obwohl es sich um einen Dienst oder einen zusammenhängenden Service handelt. Ganz unabhängig von dem größeren Aufwand, einzelne Plattform und Applikationen zu testen, muss an dieser Stelle natürlich auch die Frage gestellt werden, inwieweit die Abhängigkeit zwischen den einzelnen Applikationen für den Anwendungsfall nicht auch eine hohe Relevanz darstellt.
Wenn man am Ende von einer Nutzung über mehrere Geräte und mehrere Plattformen ausgehen kann, ist es im Grunde nur sinnvoll und logisch, eben auch zusammenhängend über alle Plattformen und Geräte zu testen und eben nicht jede Plattform und jedes Gerät einzeln und losgelöst vom Anwendungsfall zu betrachten. Oder anders gesagt:
"Just because you’ve counted all the trees doesn’t mean you’ve seen the forest."
Um das Testing zu erleichtern und um die Vielzahl von Systemen und Plattformenbeherrschen zu können, wird häufig auf Testautomatisierung gesetzt. In vielerlei Hinsicht ist der Einsatz einer Testautomatisierung sinnvoll. Zum Beispiel kann mit einer Testautomatisierung sichergestellt werden, dass jederzeit reproduzierbare Tests durchgeführt werden, die eine Fehlerquelle durch den Tester ausschließen. Machen wir uns nichts vor: der Mensch ist oftmals die Ursache, wenn Tests immer und immer wieder durchgeführt werden müssen. Gerade in Zeiten hoher Release-Zyklen oder Continuous Integration, wird das Testing oftmals zu einer Herausforderung. Wenn zum x-ten Mal in kürzester Zeit der gleiche Testfall durchgespielt werden muss, ist eben häufiges "Button Smashing" eine beliebte Fehlerquelle. Hier bietet Testautomatisierung eine sinnvolle Erleichterung und ermöglicht eben auch die Parallelisierung von Tests und Reportings oder die Durchführung von zeit- und ortsunabhängigen Tests unter extremen Randbedingungen. Jede Softwareentwicklung wird erleichtert, wenn Tests automatisiert über Nacht oder am Wochenende durchgeführt werden können.
Devoteam beschäftigt sich seit vielen Jahren mit dem Testing von Software und Applikationen. Im Rahmen unserer täglichen Arbeit nimmt das Thema Testing einen großen Raum ein und wir haben langjährige Erfahrungswerte im Testing. In verschiedenen Projekten konnten wir in der Vergangenheit auch Erfahrung mit konvergenten Testfällen sammeln und diese auch erfolgreich automatisieren.
Können wir IoT automatisiert testen?
Im Rahmen eines internen Projekts haben wir uns die Frage gestellt, inwieweit es möglich ist, einen konvergenten Use Case mit einem IoT-System automatisiert zu testen. Lässt sich automatisiert eine Brücke zwischen digitaler und physischer Welt schlagen?
Um dieser Frage auf den Grund zu gehen, haben wir in einem ersten Schritt drei Bereiche herausgearbeitet, die betrachtet werden müssen. Erstens handelt es sich dabei um ein IoT-System. Um die Eigenschaft und die Identität eines IoT-Systems zu verstehen, mussten wir uns intensiv mit dem Thema Prototyping und der Entwicklung eines IoT-Systems von der Basis her auseinandersetzen. Darüber hinaus mussten wir die Anpassung bestehender Applikationen als Aufgabe ins Auge fassen und in einem letzten Schritt die Überarbeitung und die Erweiterungen der Testautomatisierung und der damit verbundenen Testfälle vorantreiben.
Wie testen wir das Internet of Things automatisiert?
Unser IoT-Testsystem entstand zuerst auf dem Papier und auf Basis einer fixen Idee. Wir entschlossen uns, ein Regelsystem aufzubauen, das mehrere Glasbehälter, elektrische Pumpen und Wasser beinhalten sollte. Ein Glasbehälter mit einem Fassungsvermögen von ca. 5 Litern wurde auf einem Gewichtssensor positioniert. Dieser Gewichtssensor fungierte so als elektronische Waage für den Glasbehälter. Ein Microcontroller steuerte die Pumpen und so konnte Wasser in den Behälter hinein- oder herausgepumpt werden. Es wurden drei unterschiedliche Pegelstände definiert, die das System selbständig ausgleichen konnte. Im ersten Schritt also ein System, das elektronisch gesteuert werden konnte.
Über einen PC und einen Access-Point wurde unser System im Anschluss mit dem Internet verbunden. Zur Steuerung wurde eine Smartphone-App entwickelt, mit der wir nun in der Lage waren, die Pumpen über das Internet zu steuern. Über einfache Controller konnte man nun Wasser in den Behälter hinein- und wieder hinauspumpen und so den Wasserstand in unserem Regelsystem verändern. Durch die Anbindung an das Internet und die Steuerung mittels einer App hatten wir nun unser IoT-System eingerichtet. Die entscheidende Frage war nun, wie eine Anbindung an eine Testautomatisierung erfolgen kann.
Wichtig war für uns dabei, den Standpunkt aus Anwendersicht zu testen und das Regelsystem nicht zu verändern. Anknüpfungspunkte wären dazu ein Test der App oder eine Gegenprobe der Waage gewesen. Das Regelsystem sollte aber als Stand-alone-System fungieren und die Tests sollten unabhängig und losgelöst durchgeführt werden. Um unser Regelsystem zu testen, entschlossen wir uns für den Aufbau eines parallelen Testsystems. Um dem Thema IoT gerecht zu werden, entschieden wir uns für einen zweiten Sensor zur Gegenprobe unseres Regelsystems. Mit einem PC und einem weiteren Microcontroller wurde über einen Sensor der Druck im Glasbehälter gemessen. Unabhängig von unserem Regelsystem konnte so verifiziert und gegengeprüft werden, ob der angegebene Level im Glasbehälter tatsächlich erreicht ist und ob das Gewicht des Glasbehälters der vorgegebenen Menge entspricht. Mit diesem Setup waren wir nun in der Lage, einzelne Testfälle für das Regelsystem in unserer Testautomatisierung zu hinterlegen und unser IoT-System automatisiert zu testen.
Unsere Learnings
Wir konnten dieses Projekt in unserem internen Testlab mit mehreren Consultants in einer Gesamtdauer von circa drei Monaten durchführen. Die Erfahrungswerte, die wir dabei für uns, aber darüber hinaus natürlich auch für unsere Kunden gewinnen konnten, sind insgesamt sehr positiv zu bewerten. Die intensive Arbeit und auch die Auseinandersetzung mit neuen Bereichen wie Hardware, Sensoren und Microcontroller hat uns enorme Kenntnisse gebracht. Für uns ist deutlich geworden, dass das Internet of Things in der Tat sehr viel verändern wird. Aber eben nicht nur Prozesse, Produkte und Anwendungsfälle sondern eben auch das Testing. Dabei ist uns insbesondere klar geworden, dass IoT-Testing und IoT-Testautomatisierung insbesondere beim Thema Prototyping einen hohen Stellenwert einnehmen kann. Gerade hier besitzt das Thema Testautomatisierung ein enormes Potenzial, wenn man zum Beispiel an das Thema "Nightly Regression Test" denkt.
Beim Thema IoT-Testing beinhaltet Testautomatisierung einen Vorteil, der sowohl in einem zeitlichen, in einem räumlichen und auch in einem monetären Kontext zu sehen ist: Wer in Zukunft bei der Entwicklung von IoT-Systemen auf Continuous Integration setzt, der wird um eine Testautomatisierung nicht herum kommen. Für uns als Software-Tester hat dieses Projekt aber auch die Erkenntnis gebracht, dass es sich beim Thema IoT-Testing nicht ausschließlich um das Testen von Hardware handelt. Auch im Rahmen des IoT-Testings steht die Applikation im Vordergrund und es ist kein dezidierter Hardware-Test. Wir können aufgrund unserer Tests nun prognostizieren, dass das Internet of Things eine enorme Auswirkung auf konvergente Use Cases haben wird.
Die Vielzahl an Geräten, die in Zukunft mit dem Internet verbunden sein werden, werden auch die Komplexität der Testfälle weiter differenzieren. Im Zuge der Marktdurchdringung des Internet of Things wird eine Anfang-bis-Ende-Betrachtung im Rahmen des Testings über alle Kanäle und Plattformen der einzig effektive Weg sein. Denn das Internet of Things verändert eben auch das Testen.