Automatisiertes Testen als Schlüssel zu sicheren Devices

Automatisiertes Testen reduziert Komplexität

Der Schlüssel zu sicheren IoT-Devices

Je umfangreicher die IoT-Implementierung, desto kritischer wird die Automation im Softwareentwicklungsprozess (SDLC). Vorgaben an die Sicherheit und nicht-funktionsbezogene Anforderungen steigen mit der Konnektivität und dem Umfang. 

Das dienstbasierte, automatisierte Testen gewinnt in der Integrations- und Systemtest-Phase entscheidende Bedeutung und ermöglicht zugleich das Testen im Hinblick auf Security, Stabilität und Performance. Ein Blick auf die Tiefe und Breite der von Parasoft gebotenen Testautomatisierungs-Lösungen (siehe Bild) für die einzelnen Phasen des SDLC zeigt, wie eine Lösung die andere ergänzt und mit zunehmendem Umfang des Produkts wächst. Modultests werden durch statische und Laufzeit-Analysen ergänzt. Während der Integration setzen sich die Modultests zu den API- und Service-Testing-Tools fort, woraus anschließend die Service-Virtualisierung wird. Die meisten Entwickler sind mit bestimmten Aspekten der Testautomatisierung durchaus vertraut, allerdings denken viele nicht an Dienste oder dienstbasiertes Testen und Virtualisieren. Erst wenn sich das Paradigma von ‚Dingen‘ zu ‚Diensten‘ ändert, werden die Vorzüge des dienstbasierten Testens deutlich.

Weniger Risiken und Kosten

Wenn ein Produkt den Entwicklungsprozess durchläuft und es an die Integration geht, wird das Testen komplizierter und teurer. In diesem Stadium werden außerdem viele kritische Bugs gefunden – darunter auch Security- und Performance-Probleme, die sich auf der Modulebene nicht detektieren lassen. Kritisch ist hier die Verfügbarkeit von Personal, Labors und Hardwareressourcen für das Testen. Die Lösung hierfür ist die Automatisierung, denn sie bietet eine Möglichkeit zur Steigerung der Produktivität und Reproduzierbarkeit der Tests und des Umfangs der Systemtests. Ein automatisiertes, dienstbasiertes Testkonzept ist entscheidend für den Erfolg eines neu entwickelten IoT-Geräts.

Es erzielt u.a. folgende Vorteile:

• Höhere Testproduktivität – Die Automatisierung kann Hilfestellung beim Erzeugen von dienstbasierten Tests und von reproduzierbaren, erweiterbaren Prüflasten leisten. Laufzeit-Analysetools werden parallel zu den Live-Tests genutzt, um Fehler zu erkennen und zu verfolgen. Defekte lassen sich damit leichter aufdecken und beheben als mit manuellen Tests. Nach erfolgter Reparatur ermöglicht die Automatisierung zudem einfache Regressionstests. Auch die Wiederholung von Tests als Bestandteil eines nach dem Continuous-Testing-Prinzip ablaufenden, agilen oder iterativen Entwicklungsprozesses wird unterstützt.

• Beseitigung von Engpässen bei den Hardwareressourcen – Zu den wichtigsten Themen bei der Testplanung gehört die Verfügbarkeit abhängiger Komponenten, wie etwa andere Geräte im Netzwerk oder übergeordnete Funktionen im IoT-Netzwerk. Die Simulation dieser Abhängigkeiten beseitigt Testengpässe und stellt jedem Tester und Entwickler ein virtuelles Labor direkt am Arbeitsplatz zur Verfügung.

• Skalierbarkeit auf aktuelle und künftige Anforderungen – Mit fortschreitender Systemintegration nehmen die Tests an Umfang zu und schließen immer mehr abhängige Komponenten ein. Der Skalierbarkeit kommt in IoT-Systemen eine Schlüsselbedeutung zu, schließlich wird vom Prüfling die Funktionsfähigkeit in einer hochkomplexen Umgebung erwartet. Im Lebenszyklus des Geräts wächst die Komplexität und dementsprechend muss das automatisierte Testen mit dem Produkt skaliert werden.

• Praktikable und realistische Performance- und Security-Tests – Die Entwicklungs-Teams tun ihr Möglichstes, um die Leistung und Sicherheit während der Integration zu testen. Ohne Automatisierung aber gestaltet sich das Einrichten realistischer Szenarien im Labor oftmals zeit- und kostenaufwändig. Ein dienstorientiertes Testkonzept aber stellt ein Gerüst für das Spezifizieren und Verifizieren der Performance und das Testen der Sicherheit bereit.

?berblick ?ber die Testautomations-L?sungen und die Punkte, an denen sie Eingang in den Softwareentwicklungs-Lebenszyklus finden. (Bild: Parasoft Deutschland GmbH)

Überblick über die Testautomations-Lösungen und die Punkte, an denen sie Eingang in den Softwareentwicklungs-Lebenszyklus finden. (Bild: Parasoft Deutschland GmbH)

Sicherheit und Leistung

Um ein Gerät auf den Markt zu bringen, reicht ein schlichter Funktionstest nicht aus. Nicht-funktionsbezogene Anforderungen wie Security und Performance sind entscheidend, gehören allerdings zu den Eigenschaften, die sich am schwierigsten mit Tests erfassen lassen. Ein Gerät mit schwacher Leistung oder mangelnder Sicherheit ist einfach nicht wettbewerbsfähig. Doch es ist eine ernste Herausforderung, für IoT-Geräte einerseits die geforderte Markteinführungszeit einzuhalten und andererseits die Performance- und Security-Aspekte ordnungsgemäß zu testen. Ein dienstorientierter Ansatz bietet eine gängige Möglichkeit, Anforderungen zu spezifizieren (z.B. die Performance pro Dienst) und auf Security zu testen (z.B. auf Angriffe, die exponierte Dienste und APIs ausnutzen).

Performance- und Lasttests

Die Performance- und Security-Anforderungen dürften wahrscheinlich in Form einer Quality-of-Service-Erklärung formuliert werden. Z.B. kann für eine Heizungs-, Lüftungs- und Klimaanlage die Vorgabe gelten: Die Solltemperatur muss im Gebäude auf 75 Prozent genau geregelt werden, wenn sich die Außentemperatur im Verlauf von zwei Stunden um 5°C ändert, und die aktuelle Temperatur muss alle 10s gemeldet werden. Beim Design eines Thermostats für dieses Produkt kann man die Funktionalität (und möglicherweise auch die Performance) für sich allein testen. Enthält das fertige System aber Hunderte von Thermostaten, ist die Performance des Geräts nur ein kleiner Teil eines komplexen Netzwerks anderer Geräte.

Security-Tests

Oft werden Sicherheitsanforderungen für das System insgesamt und außerdem vage formuliert. Im eben genannten Beispiel einer Klimaanlage kann die Vorgabe bestehen, dass ein Thermostat auch bei starker Netzwerkauslastung nicht ausfällt. Denial-of-Service-Attacken beruhen schließlich darauf, das Ziel mit starkem Traffic zu überfluten – häufig mit falsch zusammengesetzten Paketen. In diesen Fällen wird mit Penetration- und Fuzz-Tests sichergestellt, dass die Geräte einer feindseligen Netzwerkumgebung standhalten. Eine virtuelle Umgebung bietet hier ein Maß an Skalierbarkeit, das mit realer Hardware nicht möglich ist.

Service-Virtualisierung

Der nächste logische Schritt für automatisierte, dienstbasierte Tests ist die Virtualisierung. Eine vollständig virtuelle Umgebung ist realisierbar durch das Simulieren aller abhängigen Komponenten einschließlich einer lückenlosen Palette von Test-Stimuli. Neben dem Vorteil realistischer und reproduzierbarer Testumgebungen ermöglicht die Virtualisierung von Diensten das beliebige Duplizieren und Anwenden, sodass ein ‚virtuelles Labor‘ entsteht, das ebenso effektiv ist wie ein reales, aber nur einen Bruchteil kostet.

Fazit

Automatisiertes Testen ist allgemein entscheidend, um Vorgaben für IoT-Produkte wie die Markteinführungszeit und das gegebene Budget einzuhalten. Ein dienstbasiertes Konzept erhöht die Testproduktivität und ermöglicht hochgradig reproduzierbare, skalierbare Tests auf Leistung und Sicherheit, verbunden mit der Fähigkeit zur Errichtung virtueller Prüfumgebungen. Je mehr die Komplexität der IoT-Geräte und ihrer Deployment-Umgebungen zunimmt, umso drängender wird die Forderung nach skalierbaren, dienstbasierten Testkonzepten.

Autor: Marc Brown,
Chief Marketing Officer,
Parasoft Deutschland GmbH
www.parasoft.de

Ausgabe:
Parasoft Deutschland GmbH
www.parasoft.de

Das könnte Sie auch Interessieren