Softwarequalität im IoT

Warum Softwaretests für das IoT wichtig sind

| Autor / Redakteur: Arthur Hicken * / Florian Karlstetter

Fliegen im Simulator: Service Virtualization ermöglicht eine simulierte Testumgebung, um Software unter simulierten Konditionen zu prüfen.
Fliegen im Simulator: Service Virtualization ermöglicht eine simulierte Testumgebung, um Software unter simulierten Konditionen zu prüfen. (Bild: gemeinfrei/Pixabay / CC0)

In allen IoT-Systemen arbeiten die eingesetzten Komponenten als ganzheitliches System zusammen. Das macht das Simulieren ihrer komplexen Interaktionen, das Reproduzieren der einzelnen Komponenten und das Testen der Funktionalität sowie der nicht funktionsbezogenen Anforderungen überaus schwierig.

Weil die Konnektivität von IoT-Umgebungen in der Regel über ein öffentliches Netzwerk erfolgt, haben Hersteller von IoT-Geräten keine Kontrolle über mehrere Eigenschaften:

  • Sicherheit: Auch, wenn man die Sicherheit auf der Software-Ebene kontrollieren kann, ist das Netzwerk möglicherweise Attacken ausgesetzt.
  • Zuverlässigkeit: Zwar lässt sich die Selbstheilungsfähigkeit der Software kontrollieren, aber die Verfügbarkeit des Netzwerks liegt möglicherweise außerhalb der Einflusssphäre.
  • Ausmaß: Man kann die Ausdehnung der internen Infrastruktur überprüfen, nicht aber die des öffentlichen Netzwerks.

Also muss der Gerätehersteller sicherstellen, dass die soeben skizzierten Softwaremerkmale auf der Komponenten-Ebene einen gründlichen Test unterlaufen. Außerdem sollten Szenarien zur Behandlung von Fehlern ausgearbeitet und geprüft werden, die Ereignisse außerhalb des Systems auslösen. Hilfreich dafür sind sowohl die Service-Virtualisierung als auch API-Tests.

Ein System aus mehreren Systemen

Eine IoT-Umgebung kann ein System sein, das seinerseits Teil eines übergeordneten Systems ist, etwa ein vernetztes Auto als eine Komponente mit Internet-Anbindung. Innerhalb des Autos gibt es wiederum viele kleinere Komponenten, die entweder miteinander interagieren oder unabhängig mit dem Internet verbunden sind.

Die Unterhaltungselektronik im Fahrzeug, OnStar oder Ähnliches lässt sich direkt mit dem Internet vernetzen, während andere Komponenten dagegen an den CAN-Bus angeschlossen sind. Mit diesem kommunizieren etwa die Lenkungs- und Bremskomponenten, um gegebenenfalls auftretende Problemen nach außen zu melden. Hierdurch entsteht ein potenzielles Sicherheitsproblem, zudem können potenzielle Konflikte auftreten, wenn mehrere Systeme ihre Daten über den CAN-Bus übertragen. Darum müssen die Tests auf verschiedenen Ebenen erfolgen, wie zum Beispiel:

  • Diskrete Komponenten,
  • Komponenten im Kontext eines Subsystems,
  • Komponenten im Kontext eines übergeordneten Systems.

IoT-Systeme stellen einen potenziellen Ausfallpunkt in sicherheitskritischen Systemen z.B. in der Automobiltechnik, in der Luftfahrt usw. dar. Arbeiten Entwickler an einem IoT-Projekt in einem sicherheitskritischen Markt, sollten sie das Risikoniveau jeder einzelnen Komponente bewerten, um den Umfang der erforderlichen Tests zu bestimmen. Hier gibt es zwei Aspekte - nämlich das mit dem Ausfall einer Komponente verbundene Risiko und die Wiederherstellbarkeit.

Sicherheitskritische Überlegungen

Die meisten Autos lassen sich auch dann noch bedienen, wenn die Servolenkung oder der Bremskraftverstärker ausgefallen sind. Allerdings werden immer mehr mechanische Verbindungen zugunsten von Control-by-wire-Technologien weggelassen, um die allgemeine Effizienz des Systems zu verbessern. Ein Ausfall des Bremssystems ist katastrophal, jedoch wäre in Systemen ohne Control-by-wire-Technologie immer noch eine Rückfallebene vorhanden.

Wechselnde Risikobewertungen gibt es auch bei Flugsteuerungssystemen (Flight Control System – FCS) von Flugzeugen. Hier stellt der Ausfall eines FCS ein sicherheitskritisches Risiko gemäß SIL 1 dar, ist also ein katastrophaler, allerdings behebbarer Ausfall, denn es gibt ein Hydrauliksystem, mit dem der Pilot das Flugzeug in der Luft halten kann.

In einigen Systemen aber sind die vom FCS angesprochenen Steuerflächen so kritisch, dass ein Ausfall des FCS ein Risiko mit SIL 0 darstellt. So hat beispielsweise die Komplexität der Steuerflächen mittlerweile ein Ausmaß erreicht, das eine manuelle Steuerung ohne das FCS unmöglich macht. Ein solcher Ausfall wäre somit nicht behebbar.

Software testen in komplexen Umgebungen

Beide genannten Beispiele enthalten ein System aus Systemen innerhalb einer IoT-Umgebung. In beiden Fällen gibt es kritische Komponenten, die auf verschiedenen Ebenen getestet werden müssen. Aber wie kann man in solch komplexen Umgebungen kontinuierlich testen, mit all den Abhängigkeiten?

Ein effektiver Ansatz ist die Simulation, wenn etwa kein Zugang zu einem zum Testen notwendigen Mainframe existiert, oder Drittleistungen geprüft werden sollen. Die Service Virtualisierung ermöglicht Tests und Integration auf kontinuierlicher Basis. Um Integrationstests von Anfang an zu fahren, sollte man den Entwicklungsprozess um die Simulation ergänzen.

Der Prozess ist mit einem Windkanal vergleichbar, wo Flugzeuge unter simulierten Konditionen getestet werden. Das sollte auch für die Software-Entwicklung gelten – mithilfe der Service Virtualisierung. Diese simulierte Testumgebung verschafft entscheidende Vorteile:

  • Niedrigere Betriebskosten durch kürzere Wartezeiten, Konfigurationszeiten und Zugangsgebühren.
  • Geringere Investitionsausgaben, da weniger an Hardware, Lizenzen und Labor-Infrastruktur benötigt wird.
  • Reduzierte Risiken durch früheres, schnelleres und vollständigeres Testen, und
  • höhere Umsätze, da Innovation und Markteinführung beschleunigt werden.

Einfaches Setup zum Einsteigen

Den Anfang bilden die Simulation zur Bearbeitung der Umgebung, ein Test-Datenmanagementtool zur Handhabung von Eingaben und Ergebnissen und ein gutes API Testtool zur Testerstellung und –ausführung. Mit diesen Tools lassen sich Dinge automatisieren, die zunächst unmöglich erschienen.

Um schneller zu agieren, ermöglicht dieses Setup die Flexibilität zum Testen von Teilen der Anwendung, die üblicherweise nicht gut abgedeckt sind. Ohne die passenden Tools können sich Ausnahmenhandling, Fehleingaben, Fehlverhalten und Sicherheit als schwierig oder auch unmöglich zum Testen erweisen.

Sollten Sie noch zur Gruppe der manuellen Tester gehören – laut Voke Research ist das immer noch die Hälfte von Ihnen – dann schulden Sie es sich, das sie einen Blick auf die neuesten Tools in diesem Bereich werfen und sich informieren, wie Sie das Testen der Software beschleunigen und verbessern können.

Der Beitrag wurde von unserem Partnerportal Industry of Things übernommen.

* * Arthur Hicken ... ist seit über 25 Jahren für den Testspezialisten Parasoft tätig.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44814487 / Testing)