Automatisierte service-basierte Tests sind der Schlüssel zu hochwertigen, sicheren IoT-Geräten
Von Parasoft
30. Juni 2017
4 min lesen
IoT benötigt beim Testen eine andere Perspektive
Der Umfang des IoT ist groß - wahrscheinlich größer als die meisten Embedded-Hersteller zuvor. Darüber hinaus sind einzelne Geräte nur ein Teil eines größeren Ganzen, das aus vielen Arten und Arten von Geräten besteht. In meinem letzten PostIch diskutierte, wie vielversprechend das Internet der Dinge in den von ihm angebotenen Diensten ist und wie viele „Dinge“ zu etwas zusammengefasst werden, das für das Unternehmen von Wert ist. Es ist wichtig, diese Größenordnung sowohl bei (1) Geräteanforderungen („Dingen“) als auch bei (2) dem Wert zu berücksichtigen, den sie für die gesamte Automatisierung („Dienste“) im Lebenszyklus der Softwareentwicklung bietet, um die Kosten zu decken. Zeitplan und Markteinführungsbeschränkungen. Insbesondere das Testen muss auf die erwartete Betriebsumgebung skaliert werden und kritische nicht funktionale Anforderungen wie Leistung und Sicherheit unterstützen.
Das Internet der Dienste muss automatisiert werden
Die Automatisierung im Softwareentwicklungsprozess wird mit zunehmendem Umfang der IoT-Implementierung von entscheidender Bedeutung. Sicherheits- und nicht funktionale Anforderungen werden mit zunehmender Konnektivität und Skalierung immer wichtiger. Servicebasiertes automatisiertes Testen wird während der Integrations- und Systemtestphase kritisch und ermöglicht gleichzeitig das Testen auf Sicherheit, Stabilität und Leistung.
Werfen wir einen Blick auf die Tiefe und Breite von Parasoft in der Testautomatisierung (siehe Abbildung 1), die für jede Phase des SDLC gilt. Der Schlüssel zum Erfolg ist, wie jede Lösung die andere ergänzt und mit dem Wachstum des Produkts skaliert. Unit-Tests werden durch statische Analysen und Laufzeitanalysen ergänzt. Während der Integration werden Unit-Tests zu API- und Service-Test-Tools fortgesetzt, die dann zur Service-Virtualisierung übergehen.
Abbildung 1: Testautomatisierungslösungen und wo sie in den Softwareentwicklungslebenszyklus eingeführt werden.
Die meisten Entwickler sind mit einigen Aspekten der Testautomatisierung vertraut. Viele denken jedoch nicht an Dienste oder dienstbasierte Tests und Virtualisierung. Wenn sich das Paradigma von „Dingen“ zu „Diensten“ ändert, wird der Nutzen von dienstbasierten Tests deutlicher.
Risiko- und Kostenreduzierung durch Service Based Testing im IoT
Während ein Produkt den Entwicklungsprozess bis zur Integration durchläuft, wird das Testen komplizierter und teurer. Dies ist auch die Phase, in der viele kritische Fehler gefunden werden, einschließlich Sicherheits- und Leistungsproblemen, die auf Geräteebene nicht erkennbar sind. Ein großes Risiko ist die Verfügbarkeit von Testpersonal, Labors und Hardwareressourcen.
Die Lösung ist hier die Automatisierung. Die Automatisierung bietet eine Möglichkeit, die Testproduktivität, Wiederholbarkeit und den Umfang der Systemtests zu steigern. Ein automatisierter, dienstbasierter Testansatz ist entscheidend für den Erfolg eines neu entwickelten IoT-Geräts.
Zu den Vorteilen zählen folgende:
- Erhöhte Testproduktivität
Die Automatisierung kann bei der Erstellung von service-basierten Tests und beim Testen von Lasten helfen, die wiederholbar und erweiterbar sind. Laufzeitanalyse-Tools werden zusammen mit Live-Tests ausgeführt, um Fehler zu erkennen und zu verfolgen. Fehler können leichter erkannt und behoben werden als bei manuellen Tests. Sobald eine Korrektur vorgenommen wurde, bietet die Automatisierung einfache Regressionstests. Das Wiederholen von Tests als Teil eines kontinuierlichen Test-, agilen oder iterativen Entwicklungsprozesses wird unterstützt. - Beseitigung von Hardware-Ressourcenengpässen
Eines der größten Probleme bei der Testplanung ist die Verfügbarkeit abhängiger Komponenten. Dies können andere Geräte im Netzwerk oder übergeordnete Funktionen im IoT-Netzwerk sein. Durch die Simulation dieser Abhängigkeiten wird der Testengpass beseitigt und gleichzeitig ein gesamtes virtuelles Labor auf jedem Tester und Entwickler-Desktop verfügbar gemacht. - Skalierung auf aktuelle und zukünftige Anforderungen
Mit fortschreitender Systemintegration nimmt der Umfang der Tests zu und umfasst immer mehr abhängige Komponenten. Skalierbarkeit ist in IoT-Systemen von entscheidender Bedeutung, da erwartet wird, dass das zu testende Gerät in einer hochkomplexen Umgebung funktioniert. Während der Lebenszyklusumgebung des Geräts nimmt die Komplexität zu, und automatisierte Tests müssen mit dem Produkt skaliert werden. - Praktische und realistische Leistungs- und Sicherheitstests
Entwicklungsteams tun alles, um Leistung und Sicherheit während der Integration zu testen. Ohne Automatisierung ist es jedoch oft zeitaufwändig und teuer, realistische Szenarien im Labor zu erstellen. Ein serviceorientierter Ansatz bietet einen Rahmen zum Spezifizieren und Überprüfen der Leistung und zum Testen der Sicherheit.
Jenseits des Funktionstests: Sicherheit und Leistung
Ein reiner Funktionstest reicht nicht aus, um ein Gerät auf den Markt zu bringen. Nicht funktionale Anforderungen wie Sicherheit und Leistung sind kritisch, gehören jedoch zu den am schwierigsten zu testenden Merkmalen. Ein Gerät mit schlechter Leistung oder schlechter Sicherheit ist einfach nicht wettbewerbsfähig, aber die Einhaltung der Markteinführungsbedingungen und das ordnungsgemäße Testen von Leistung und Sicherheit sind eine ernsthafte Herausforderung für IoT-Geräte. Die Serviceorientierung bietet eine gängige Methode zum Festlegen von Anforderungen (z. B. Leistung pro Service) und zum Testen der Sicherheit (z. B. Angriffe, bei denen exponierte Services und APIs ausgenutzt werden).
Leistungs- und Lasttests
Leistungs- und Sicherheitsanforderungen werden wahrscheinlich in Form einer Erklärung zur Servicequalität ausgedrückt. Beispielsweise kann ein HLK-System erforderlich sein, um die Gebäudetemperatur innerhalb von zwei Stunden auf 75 Grad zu halten, basierend auf einem Unterschied der Außentemperatur von 5 Grad, wobei alle 10 Sekunden die aktuelle Temperatur gemeldet wird. Wenn Sie einen Thermostat für dieses Produkt entwerfen, können Sie die Funktionalität auf individueller Ebene und möglicherweise auch die Leistung testen. Wenn ein bereitgestelltes System jedoch aus Hunderten von Thermostaten besteht, ist die Leistung des Geräts nur ein kleiner Teil eines komplexen Netzwerks anderer Geräte.
Sicherheitstests
Sicherheitsanforderungen sind häufig auf Systemebene und vage. Im Beispiel eines HLK-Systems muss möglicherweise ein Thermostat unter hohen Netzwerklasten nicht ausfallen. Ein Denial-of-Service-Angriff beruht darauf, dass das Ziel mit starkem Datenverkehr überflutet wird, manchmal mit fehlerhaften Paketen. In diesen Fällen werden Penetrations- und Fuzz-Tests verwendet, um sicherzustellen, dass Geräte einer feindlichen Netzwerkumgebung standhalten. Die in einer virtuellen Umgebung verfügbare Skalierbarkeit übertrifft die Möglichkeiten realer Hardware.
Service-Virtualisierung
Der nächste logische Schritt für automatisierte service-basierte Tests ist die Virtualisierung. Eine vollständige virtuelle Umgebung ist möglich, indem alle abhängigen Komponenten sowie eine vollständige Reihe von Teststimuli simuliert werden. Der Vorteil der Service-Virtualisierung liegt nicht nur in realistischen und wiederholbaren Testumgebungen, sondern auch in der Möglichkeit, nach Belieben zu duplizieren und bereitzustellen. So entsteht ein „virtuelles Labor“ - ein Labor, das genauso effektiv ist wie das Original, aber zu einem Bruchteil der Kosten.
Fazit
Die Testautomatisierung ist im Allgemeinen von entscheidender Bedeutung, um IoT-Produktziele wie Time-to-Market und Budget zu erreichen. Ein service-basierter Ansatz erhöht die Testproduktivität und ermöglicht hoch wiederholbare und skalierbare Tests für Leistung und Sicherheit sowie die Möglichkeit, virtuelle Testumgebungen zu erstellen. Mit zunehmender Komplexität von IoT-Geräten und ihrer Bereitstellungsumgebung wird der Bedarf an skalierbaren Tests auf Service-Ebene immer zwingender.